win10子系统python开发环境准备及kenlm和nltk的使用教程


Posted in Python onOctober 14, 2019

前言

因为NLP作业需要用到kenlm,而kenlm在linux下更为方便。本人win10之前开启了子系统,所以就打算在子系统下进行相关作业的完成。

首先开启win10子系统,网上教程挺多,照着做就成。我当前安装版本是Ubuntu16.04。终端输入cat /etc/lsb-release或uname可以查看版本。子系统开启后,win10的盘符挂载在mnt下,可以执行ls -al /mnt查看。

Python的下载

Linux中自带python2,不过Pyhton软件基金会宣布到2020年元旦不在为py2任何分支提供支持。所以我们下载安装py3。在后面的编译操作中需要用到make和cmake工具,需要提前下载安装。make和cmake的使用,需要gcc的支持。在这里就不介绍gcc的安装了,可自行百度解决。

make是一个命令工具,它解释 Makefile 中的指令。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。make依据Makefile文件来批处理编译,因为编写Makefile文件太繁琐复杂,就出现了cmake工具,它能读入所有源文件之后,自动生成makefile。

在进行下面步骤前,先执行sudo apt update更新,防止出现一些错误

1.make的下载和安装

wget http://ftp.gnu.org/gnu/make/make-4.2.tar.gz
tar -zxvf make-4.2.tar.gz
cd make-4.2
./configure #生成 Makefile,为下一步的编译做准备
make     #进行源代码编译
sudo make install #安装,这一步会将编译好的make文件转移到/usr/local/make目录下,该目录需要root权限
ln -s -f /usr/local/bin/make /usr/bin/make
make --version #查看版本

2.cmake的下载和安装

wget https://cmake.org/files/v3.3/cmake-3.5.1.tar.gz
tar xzvf cmake-3.5.1.tar.gz
yum install gcc-c++ # 安装gcc等程序包(安装过就忽略)
cd cmake-3.5.1
./bootstrap
make
make install
cmake --version #查看版本

cmake 会默认安装在 /usr/local/bin 下面

也可以直接安装build-essential软件包,该软件包中包含了编译c/c++所需要的软件包。sudo apt-get install build-essential

3.Python下载

wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

4.解压

tar zxvf Python-3.7.3.tgz
cd Python-3.7.3

5.编译

./configure --with-ssl
make
sudo make install

注意:?with-ssl必须加上,否则使用pip安装第三方包时,会引发ssl错误。导致无法使用。如果执行pip install出错,重新编译安装即可。

一些错误问题:

ZipError:

sudo apt install zlib*

ImportError:'_ctypes'

sudo apt-get install python-dev python-setuptools python-pip python-smbus build-essential libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev

6.创建软链接

# 添加python3的软链接
sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3
# 添加 pip3 的软链接
sudo ln -s /usr/local/bin/pip3.7 /usr/bin/pip3

kenlm的安装

1.boost

在boost官网下载boost,本人下载了boost_1_70_0。

cd boost_1_70_0
./bootstrap.sh
./b2 install

2.xz

wget http://tukaani.org/xz/xz-5.2.2.tar.gz
tar xzvf xz-5.2.2.tar.gz
cd xz-5.2.2
./configure
make
make install

3.zlib

wget http://zlib.net/zlib-1.2.11.tar.gz
tar xzf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make
make install

4.bzip

wget https://fossies.org/linux/misc/bzip2-1.0.6.tar.gz
tar xzvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6/
make
make install

5.libbz2-dev

apt-get install libbz2-dev

6.kenlm

在github上有详细的说明,https://github.com/kpu/kenlm。下载解压后

cd kenlm
mkdir -p build
cd build
cmake ..
make -j 4 # 启用4个cpu去编译。提高编译速度
cd ..
python setup.py install

测试,在python环境中导入kenlm无报错,说明kenlm安装成功。或者运行\kenlm\python\example.py文件

nltk安装

nltk直接用pip下载就行,nltk_data文件较大,可以离线下载后添加进路径。win10下使用nltk_data,直接放进D盘中就行,nltk会自动查找到。但是在Linux下需要将nltk_data路径添加到data,或者移动到下面输出的路径中。为了方便,我个人是建立了个软链接sudo ln -s /mnt/d/nltk_data /usr/local/nltk_data

import nltk
nltk.data.find(".")

# Searched in:
#   - '/root/nltk_data'
#   - '/usr/local/nltk_data'
#   - '/usr/local/share/nltk_data'
#   - '/usr/local/lib/nltk_data'
#   - '/usr/share/nltk_data'
#   - '/usr/local/share/nltk_data'
#   - '/usr/lib/nltk_data'
#   - '/usr/local/lib/nltk_data'

在当前会话下添加路径到data

from nltk import data
data.path.append(r"你下载的nltk_data所在路径")

添加完路径,使用nltk.data.path查看当前已添加路径

简单测试

from nltk.tokenize import word_tokenize
sentence = "since the 1890s , and beginning in france , the term ''libertarianism '' has often been used as an synonym for anarchism and was used almost exclusively in this sense until the 1950s in the united states ; its use as an synonym is still common outside the united states ."
print(word_tokenize(sentence))

总结

以上所述是小编给大家介绍的win10子系统python开发环境准备及kenlm和nltk的使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python实现红包裂变算法
Feb 16 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
Python检测生僻字的实现方法
Oct 23 Python
Python实现定时任务
Feb 08 Python
Django基础之Model操作步骤(介绍)
May 27 Python
python3安装crypto出错及解决方法
Jul 30 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
Jan 14 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
一行Python命令实现批量加水印
Apr 07 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
Oct 14 #Python
执行Django数据迁移时报 1091错误及解决方法
Oct 14 #Python
解析Python3中的Import
Oct 13 #Python
Python英文文章词频统计(14份剑桥真题词频统计)
Oct 13 #Python
Python 转换RGB颜色值的示例代码
Oct 13 #Python
Django中自定义查询对象的具体使用
Oct 13 #Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 #Python
You might like
php函数之子字符串替换 str_replace
2011/03/23 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
javascript 限制输入和粘贴(IE,firefox测试通过)
2008/11/14 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
2016/09/02 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
2017/12/24 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
详解python statistics模块及函数用法
2019/10/27 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
Keras loss函数剖析
2020/07/06 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
深入探究HTML5的History API
2015/07/09 HTML / CSS
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
装潢设计专业推荐信模板
2013/11/26 职场文书
党员学习十八大感想
2014/01/17 职场文书
安全生产检查通报
2014/01/29 职场文书
销售冠军获奖感言
2014/02/03 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
校长师德表现自我评价
2015/03/05 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers