使用KenLM训练统计语言模型并使用模型(based on Linux14.04)

  参考文档

          http://thegrandjanitor.com/2015/12/28/using-arpa-lm-with-python/

          https://www.52ml.net/4816.html

          http://www.cnblogs.com/apexchu/p/5015961.html

          http://blog.csdn.net/zh515858237/article/details/54692486

          http://blog.csdn.net/fxjtoday/article/details/6059874

         之前看过神经网络语言模型,但是自己写的代码并不理想。组里要使用语言模型,于是调研比较之后选择使用KenLM。原因是:KenLM是C++写的语言模型,KenLm比SRILM要好一些,支持单机大数据的训练。Berkeleylm是用java写的,号称跟KenLM差不多,但我不熟悉Java。

    由于安装错误引发了一系列其他的问题,当然同时也学到了东西。

    问题发现并学习(1)---python和C/C++混合编程:  

    我们需要在机子上安装cython编译器。pip install cythton即可安装。或者使用https://github.com/cython/cython/wiki/Installing进行源码安装。Cython代码和python代码不一样,必须要进行编译。编译过程分为两个阶段:<1>Cython编译.pyx(其头文件为.pxd)为.c或者.cpp文件。<2>C编译器将.c/.cpp文件编译成.so文件(Linux版本)或.pyd文件(Windows版本)。具体的步骤一可以来参考http://blog.csdn.net/daniel_ustc/article/details/77622895或者http://www.jianshu.com/p/0dffe9aeba29 或者http://www.jyguagua.com/?p=2868来进行。步骤二我们可以参考http://blog.csdn.net/acb0y/article/details/6553051或者http://blog.csdn.net/qq_33850438/article/details/52014399。步骤二完成后,我们就可以在python代码中进行调用了生成的.so或.pyd文件了。

    问题发现并学习(2)--安装KenLM并使用:

    刚开始我是使用的官网指南http://kheafield.com/code/kenlm/进行安装的(毕竟官方嘛)。并参考了http://blog.csdn.net/zh515858237/article/details/54692486http://www.osyunwei.com/archives/5530.html以及进行 < 安装bzlib:打开网址http://www.bzip.org下载最新版本的bzlib解压缩到本地→ 在bzlib的解压缩路径下执行makesudo make install > 进行前期的依赖环境配置。但是安装之后,跑样例的example.py显示:ImportError: No module named 'kenlm'。当时我傻傻的以为是同目录的kenlm.cpp需要转换成kenlm.so才能调用。但是直到看了http://thegrandjanitor.com/2015/12/28/using-arpa-lm-with-python/,我才恍然大悟:原来kenlm没有安装成功啊!!!顺着这篇blog和以前可能安装好的环境进行再次安装。之后,在linux命令行import  kenlm,这次正常。然后,参考https://www.52ml.net/4816.htmlhttps://www.52ml.net/4813.htmlhttp://www.cnblogs.com/zidiancao/p/6067147.htmlhttp://www.pythontip.com/blog/post/7217/https://www.52ml.net/4813.html进行模型训练和模型使用。对于语言模型的模型评估,后续将继续在本文更新。


猜你喜欢

转载自blog.csdn.net/LiuPeiP_VIPL/article/details/78267317