欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一些awk命令解释日志

程序员文章站 2022-04-11 17:28:26
...

1 awk -v命令解析

text=data/local/train/text
lexicon=data/local/dict/lexicon.txt
dir=data/local/lm
mkdir -p $dir
cleantext=$dir/text.no_oov
cat $text | awk -v lex=$lexicon 'BEGIN{while((getline<lex) >0){ seen[$1]=1; } }
  {for(n=1; n<=NF;n++) {  if (seen[$n]) { printf("%s ", $n); } else {printf("<UNK> ");} } printf("\n");}' \
  > $cleantext

【cat $text】 这里是将text中每行读进管道【逐行读取】
【awk -v lex=$lexicon】 -v是准备开始定义一个临时变量叫lex,其值为变量lexicon的内容
【getline<lex】 是读lex=data/local/dict/lexicon.txt中的每行
【seen[$1]】 因为是一行一行读,每行以空格隔开的多列如啊 aa a1,这里是取第一列如
【{}】 这里表示对管道中一行的并行处理
【for(n=1; n<=NF;n++)】 NF表示一行中的总列数(空格隔开),循环读进每列
【if (seen[$n])】 如果这列(词)的值为真(1)就是在seen中存在的,则直接打印否则为<UNK>

【data/local/train/text】内容

我 是 不 喜欢 你 的
你 不是 那么 讨厌
我 知道 你 很 差劲 但是 你 也 应该 努力 才对

【data/local/dict/lexicon.txt】内容

SIL sil
<UNK> sil
啊 aa a1
啊 aa a2
啊 aa a4
啊 aa a5
啊啊啊 aa a2 aa a2 aa a2
啊啊啊 aa a5 aa a5 aa a5
阿 aa a1
阿 ee e1
...
相关标签: 语音