准备
srilm是一个语言模型训练工具,在训练模型之前需要对文本数据进行处理,得到分好词的文本数据。分好词的文本数据大概是下图这样。关于srilm的安装和配置可以在其他博客学习。
同时,我们还需要准备一个词典lexicon.txt,大家可以自行建立自己的词典或者获取其他已经建立好的词典作为lexicon。词典在这里的作用是我们在训练模型之前需要对文本数据中出现的词进行一个统计。统计每一个词在文本中出现的频率。
然后我们还需要测试数据集,我们需要准备一些测试数据集用于测试我们训练的模型性能。
词频统计
在得到了分好词的文本后,需要对文本中的每个词进行一个词频统计,具体的步骤如下:
- 处理输入文本:将输入文本(分好词)中没有出现在lexicon中的词替换成,然后生成文件text.no_oov。生成的文本大概如下图。
实现这一步所需要的shell代码:$text
代表我们的文本数据的路径,$lexicon
是词典的路径。
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 ||<