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

本文介绍了如何在Python环境中安装和使用KenLM语言模型库,包括解决安装过程中遇到的常见问题,如Cython编译器的配置及依赖库的安装等。

  参考文档

          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.youkuaiyun.com/zh515858237/article/details/54692486

          http://blog.youkuaiyun.com/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.youkuaiyun.com/daniel_ustc/article/details/77622895或者http://www.jianshu.com/p/0dffe9aeba29 或者http://www.jyguagua.com/?p=2868来进行。步骤二我们可以参考http://blog.youkuaiyun.com/acb0y/article/details/6553051或者http://blog.youkuaiyun.com/qq_33850438/article/details/52014399。步骤二完成后,我们就可以在python代码中进行调用了生成的.so或.pyd文件了。

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

    刚开始我是使用的官网指南http://kheafield.com/code/kenlm/进行安装的(毕竟官方嘛)。并参考了http://blog.youkuaiyun.com/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进行模型训练和模型使用。对于语言模型的模型评估,后续将继续在本文更新。


在 **Ubuntu 14.04** 上安装和使用 Docker 是完全可行的,尽管 Ubuntu 14.04(Trusty Tahr)已经于 2019 年停止官方支持,但你仍然可以在其上安装较旧版本的 Docker Engine 来进行开发或维护遗留系统。 --- ## ✅ 一、准备工作:系统要求 - Ubuntu 14.04 x86_64 - 内核版本 ≥ 3.10(Docker 需要) - 具有 `sudo` 权限的用户账户 - 网络连接(用于下载软件包) 检查内核版本: ```bash uname -r ``` 输出示例: ``` 3.13.0-170-generic ``` ✅ 如果是 `3.13.x` 或更高,则满足要求。 --- ## ✅ 二、安装 Docker(社区版 CE,旧版本) > ⚠️ 注意:Docker 官方从 2017 年后不再为 Ubuntu 14.04 提供 `.deb` 包支持。你需要使用 **早期版本的 Docker(如 1.9 ~ 1.13)**,或者手动编译。 推荐方式:**使用官方归档仓库安装最后一个支持 Trusty 的 Docker 版本** ### 步骤 1:更新系统安装依赖 ```bash sudo apt-get update sudo apt-get install wget apt-transport-https ca-certificates ``` ### 步骤 2:添加 Docker GPG 公钥(使用归档密钥) ```bash wget -qO - https://archive.docker.com/ubuntu/docker-gpg.key | sudo apt-key add - ``` ### 步骤 3:添加 Docker 软件源(归档仓库) ```bash echo "deb https://archive.docker.com/linux/ubuntu trusty stable" | \ sudo tee /etc/apt/sources.list.d/docker.list ``` > 💡 这里使用的是 `archive.docker.com` 的旧地址,包含历史版本。 ### 步骤 4:更新包索引安装 Docker ```bash sudo apt-get update sudo apt-get install docker-engine=1.13.1-0~trusty ``` > ✅ 推荐安装 `1.13.1`,这是最后一个支持 Trusty 的稳定版本。 ### 步骤 5:启动 Docker 服务 ```bash sudo service docker start ``` 设置开机自启(可选): ```bash echo "manual" | sudo tee /etc/init/docker.override # 或者使用 sysvinit 添加到 rc.local ``` --- ## ✅ 三、验证安装是否成功 运行 Hello World 容器: ```bash sudo docker run hello-world ``` 预期输出: ``` Hello from Docker! This message shows that your installation appears to be working correctly. ... ``` 如果提示权限错误,请将当前用户加入 `docker` 组: ```bash sudo usermod -aG docker $USER ``` 然后退出终端重新登录。 --- ## ✅ 四、基本使用命令示例 | 命令 | 说明 | |------|------| | `docker ps` | 查看正在运行的容器 | | `docker ps -a` | 查看所有容器(包括已停止) | | `docker images` | 查看本地镜像 | | `docker run -d nginx` | 后台运行一个 Nginx 容器 | | `docker logs <container_id>` | 查看容器日志 | | `docker stop <container_id>` | 停止容器 | | `docker rm <container_id>` | 删除容器 | | `docker rmi <image_id>` | 删除镜像 | --- ## ✅ 五、常见问题与解决方法 ### ❌ 问题 1:`Cannot connect to the Docker daemon` 原因:Docker 服务未启动 解决: ```bash sudo service docker start sudo systemctl status docker # 若支持 systemd(一般 14.04 不支持) ``` ### ❌ 问题 2:`E: Unable to locate package docker-engine` 原因:源配置错误或网络问题 解决: - 检查 `/etc/apt/sources.list.d/docker.list` - 确保使用的是 `archive.docker.com` - 尝试更换 DNS(如 `8.8.8.8`) ### ❌ 问题 3:镜像拉取失败(证书问题) Ubuntu 14.04 的 CA 证书可能过期 解决: ```bash sudo apt-get install --reinstall ca-certificates ``` --- ## ✅ 六、替代方案:直接运行静态版 Docker(dockerd + docker CLI) 如果你无法通过 APT 安装,可以手动下载二进制文件: ### 下载旧版 Docker 二进制(适用于 x86_64) ```bash cd /tmp wget https://download.docker.com/linux/static/stable/x86_64/docker-1.13.1.tgz tar zxvf docker-1.13.1.tgz ``` 复制到系统路径: ```bash sudo cp docker/* /usr/bin/ ``` 启动守护进程: ```bash sudo dockerd & ``` 测试: ```bash docker version ``` --- ## ✅ 七、安全提醒与建议 | 建议 | 说明 | |------|------| | 🔒 不要在生产环境长期使用 Ubuntu 14.04 | 已无安全更新,存在漏洞风险 | | 🐳 使用轻量级容器 | 如 Alpine Linux 镜像,避免资源浪费 | | 🔑 控制 `docker` 组权限 | 加入该组等于获得 root 权限 | | 🔄 升级系统为首选方案 | 建议迁移到 Ubuntu 20.04/22.04 + 最新 Docker | --- ## ✅ 总结:完整流程回顾 ```bash # 1. 更新系统 sudo apt-get update && sudo apt-get upgrade -y # 2. 安装依赖 sudo apt-get install wget apt-transport-https ca-certificates # 3. 添加密钥和源 wget -qO - https://archive.docker.com/ubuntu/docker-gpg.key | sudo apt-key add - echo "deb https://archive.docker.com/linux/ubuntu trusty stable" | sudo tee /etc/apt/sources.list.d/docker.list # 4. 安装 Docker sudo apt-get update sudo apt-get install docker-engine=1.13.1-0~trusty # 5. 启动服务 sudo service docker start # 6. 测试 sudo docker run hello-world ``` ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值