Kenlm 使用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lm709409753/article/details/90312298

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

  • 环境准备

#公司环境为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 > text.arpa-o 后面的数字5代表使用N-gram的N取值为5text.arpa 表示kenlm训练得到的文件格式为.arpa格式,名字为text
基于人民日报语料训练:lmplz -o 2 <trainCorpus.txt_utf8> /opt/nlp/corpus/data.arpa注意:必须是分好吃的的语料。
  • 模型压缩

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

    

  • 安装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。

猜你喜欢

转载自blog.csdn.net/lm709409753/article/details/90312298
今日推荐