Kenlm 使用

   总结工作中用到及学习的知识,也算自己的一个笔记。

  • 环境准备

#公司环境为Centos7.3yum install gcc gcc-c++yum install boostyum install boost-develyum install zlibyum install zlib-develwget -O - https://kheafield.com/code/kenlm.tar.gz | tar xzmkdir kenlm/buildcd kenlm/build && cmake .. && make -j8cd kenlm/build && make install
  • 语言模型训练

我们通过命令行的方式使用kenlm,在我们的训练集语料上训练语言模型,命令为 lmplz -o 5  text.arpa-o 后面的数字5代表使用N-gram的N取值为5text.arpa 表示kenlm训练得到的文件格式为.arpa格式,名字为text
基于人民日报语料训练:lmplz -o 2  /opt/nlp/corpus/data.arpa注意:必须是分好吃的的语料。
  • 模型压缩

        对训练得到的文件进行压缩:将arpa文件转换为binary文件,这样可以对arpa文件进行压缩和序列化,提高后续在python中加载的速度。针对我们训练的到的data.arpa文件其转换命令为:

    

Kenlm 使用_第1张图片

  • 安装Python Kenlm接口

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple kenlm
  • 使用Kenlm测试

>>> import kenlm>>> model=kenlm.LanguageModel('/opt/nlp/corpus/data.bin')>>> model.score('我们 去 北京 天安门')-18.509431838989258>>> model.score('天安门 去 去 去 去 去 去 北京')-34.48509216308594
  • 智能纠错

主要写我的思路:拿不定冠词 an a 来说事                    ---要使用Kenlm根据英文语料生成arpa文件。@1首先根据句子,判断每个句子包含a an的个数,并生成笛卡尔积序列。@2读入句子,对现在读入的句子进行打分,记录。@3使用生成的笛卡尔积序列,替换原句子中的an a 并根据model.score打分,,如果后面的得分大于@2产生的结果,表示有错误存在,更正。个人微信公众号,分享ml,dl,nlp。

Kenlm 使用_第2张图片

你可能感兴趣的:(NLP)