一些语音awk命令解释日志

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
...
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值