哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程


Posted in Python onMay 07, 2020

ltp是哈工大出品的自然语言处理工具箱, pyltp是python下对ltp(c++)的封装.

在linux下我们很容易的安装pyltp, 因为各种编译工具比较方便. 但是在windows下需要安装vs并且还得做一些配置, 因为我服务的人都是在windows下办公, 需要让他们能够在windows下使用ltp, 所以才有了这篇笔记. 我的方案有两个:

  • 在win10 的bash下安装ltp, 然后启动ltp的server, 通过http协议来实现在windows下python调用ltp的方法.
  • 安装编译好的wheel(目前只有python3.6/3.5 amd64)(我推荐这种方案)
  • 我在文章最下面还引用了一种方法, 就是使用官方已经编译好的可执行exe文件, 直接在命令行(如cmd)下调用.

第一种方案: bash下安装

基本环境

  • windows 10
  • bash for windows
  • python 3.6

安装bash on ubuntu on windows

这个大家自行百度, 安装很简单.

安装编译环境

sudo apt install cmake
sudo apt install g++

安装过程大概十几分钟.

下载ltp源码

  • 下载源码, 这是github地址.
  • 解压到你能记住的位置

编译

cd到源码目录, 比如我的目录:

cd /mnt/d/bash-sites/ltp-3.4.0

运行编译命令:

./configure
make

编译过程大概花费十几分钟. 现在我的目录里多了一个bin文件夹:

drwxrwxrwx 0 root root 512 Jan 31 15:42 ./
drwxrwxrwx 0 root root 512 Jan 31 15:30 ../
-rwxrwxrwx 1 root root 800 Jan 31 15:30 appveyor.yml*
-rwxrwxrwx 1 root root 0 Jan 31 15:30 AUTHORS*
drwxrwxrwx 0 root root 512 Jan 31 15:53 bin/
drwxrwxrwx 0 root root 512 Jan 31 15:42 build/
-rwxrwxrwx 1 root root 29301 Jan 31 15:30 ChangeLog.md*
drwxrwxrwx 0 root root 512 Jan 31 15:30 cmake/
-rwxrwxrwx 1 root root 1439 Jan 31 15:30 CMakeLists.txt*
drwxrwxrwx 0 root root 512 Jan 31 15:30 conf/
-rwxrwxrwx 1 root root 131 Jan 31 15:30 configure*
-rwxrwxrwx 1 root root 902 Jan 31 15:30 COPYING*
drwxrwxrwx 0 root root 512 Jan 31 15:30 doc/
-rwxrwxrwx 1 root root 79976 Jan 31 15:30 Doxyfile*
drwxrwxrwx 0 root root 512 Jan 31 15:30 examples/
-rwxrwxrwx 1 root root 1028 Jan 31 15:30 .gitignore*
drwxrwxrwx 0 root root 512 Jan 31 15:42 include/
-rwxrwxrwx 1 root root 85 Jan 31 15:30 INSTALL*
drwxrwxrwx 0 root root 512 Jan 31 15:53 lib/
-rwxrwxrwx 1 root root 965 Jan 31 15:30 Makefile*
-rwxrwxrwx 1 root root 6639 Jan 31 15:30 NEWS.md*
-rwxrwxrwx 1 root root 4750 Jan 31 15:30 README.md*
drwxrwxrwx 0 root root 512 Jan 31 15:30 src/
-rwxrwxrwx 1 root root 3048 Jan 31 15:30 subproject.d.json*
drwxrwxrwx 0 root root 512 Jan 31 15:31 thirdparty/
drwxrwxrwx 0 root root 512 Jan 31 15:31 tools/
-rwxrwxrwx 1 root root 1372 Jan 31 15:30 .travis.yml*

配置server

一开始我启动server遇到了这个错误.

[INFO] 2018-01-31 15:54:39 Loading segmentor model from "ltp_data/cws.model" ...
[ERROR] 2018-01-31 15:54:39 /mnt/d/bash-sites/ltp-3.4.0/src/ltp/LTPResource.cpp: line 50: LoadSegmentorResource(): Failed to load segmentor model
[ERROR] 2018-01-31 15:54:39 /mnt/d/bash-sites/ltp-3.4.0/src/ltp/Ltp.cpp: line 78: load(): in LTP::wordseg, failed to load segmentor resource
[ERROR] 2018-01-31 15:54:39 /mnt/d/bash-sites/ltp-3.4.0/src/server/ltp_server.cpp: line 172: main(): Failed to setup LTP engine.

因为缺少了模型文件, 在这里下载最新的模型文件.

解压到/mnt/d/bash-sites/ltp-3.4.0/ltp_data/下, 这是ltp默认的数据模型存放位置.

然后就能顺利启动服务器啦.

syd@DESKTOP-J02R2VJ:/mnt/d/bash-sites/ltp-3.4.0$ ./bin/ltp_server --port 9090
[INFO] 2018-01-31 15:56:36 Loading segmentor model from "ltp_data/cws.model" ...
[INFO] 2018-01-31 15:56:36 segmentor model is loaded.
[INFO] 2018-01-31 15:56:36 Loading postagger model from "ltp_data/pos.model" ...
[INFO] 2018-01-31 15:56:36 postagger model is loaded
[INFO] 2018-01-31 15:56:36 Loading NER resource from "ltp_data/ner.model"
[INFO] 2018-01-31 15:56:36 NER resource is loaded.
[INFO] 2018-01-31 15:56:36 Loading parser resource from "ltp_data/parser.model"
[INFO] 2018-01-31 15:56:37 parser is loaded.
[INFO] 2018-01-31 15:56:37 Loading srl resource from "ltp_data/pisrl.model"
[dynet] random seed: 493907432
[dynet] allocating memory: 2000MB
[dynet] memory allocation done.
[INFO] 2018-01-31 15:56:39 srl resource is loaded.
[INFO] 2018-01-31 15:56:39 Resources loading finished.
[INFO] 2018-01-31 15:56:39 Start listening on port [9090]...

测试

随便写个请求, 看看效果:

import requests
import json
uri_base = "http://127.0.0.1:9090/ltp"
data = {'s': '我认为他叫汤姆去拿外衣和鞋子。', 'x': 'n', 't': 'srl'}
response = requests.get(uri_base, data=data)
rdata = response.json()
print(json.dumps(rdata, indent=4, ensure_ascii=False))

[
 [
 [
 {
 "arg": [],
 "cont": "我",
 "id": 0,
 "ne": "O",
 "parent": 1,
 "pos": "r",
 "relate": "SBV"
 },
 {
 "arg": [
  {
  "beg": 0,
  "end": 0,
  "id": 0,
  "type": "A0"
  },
  {
  "beg": 2,
  "end": 9,
  "id": 1,
  "type": "A1"
  }
 ],
 "cont": "认为",
 "id": 1,
 "ne": "O",
 "parent": -1,
 "pos": "v",
 "relate": "HED"
 },
 {
 "arg": [],
 "cont": "他",
 "id": 2,
 "ne": "O",
 "parent": 3,
 "pos": "r",
 "relate": "SBV"
 },
 {
 "arg": [
  {
  "beg": 2,
  "end": 2,
  "id": 0,
  "type": "A0"
  },
  {
  "beg": 4,
  "end": 4,
  "id": 1,
  "type": "A1"
  },
  {
  "beg": 5,
  "end": 9,
  "id": 2,
  "type": "A2"
  }
 ],
 "cont": "叫",
 "id": 3,
 "ne": "O",
 "parent": 1,
 "pos": "v",
 "relate": "VOB"
 },
 {
 "arg": [],
 "cont": "汤姆",
 "id": 4,
 "ne": "S-Nh",
 "parent": 3,
 "pos": "nh",
 "relate": "DBL"
 },
 {
 "arg": [],
 "cont": "去",
 "id": 5,
 "ne": "O",
 "parent": 6,
 "pos": "v",
 "relate": "ADV"
 },
 {
 "arg": [
  {
  "beg": 7,
  "end": 9,
  "id": 0,
  "type": "A1"
  }
 ],
 "cont": "拿",
 "id": 6,
 "ne": "O",
 "parent": 3,
 "pos": "v",
 "relate": "VOB"
 },
 {
 "arg": [],
 "cont": "外衣",
 "id": 7,
 "ne": "O",
 "parent": 6,
 "pos": "n",
 "relate": "VOB"
 },
 {
 "arg": [],
 "cont": "和",
 "id": 8,
 "ne": "O",
 "parent": 9,
 "pos": "c",
 "relate": "LAD"
 },
 {
 "arg": [],
 "cont": "鞋子",
 "id": 9,
 "ne": "O",
 "parent": 7,
 "pos": "n",
 "relate": "COO"
 },
 {
 "arg": [],
 "cont": "。",
 "id": 10,
 "ne": "O",
 "parent": 1,
 "pos": "wp",
 "relate": "WP"
 }
 ]
 ]
]

第二种方案: 安装wheel

下载wheels

下面两个文件针对不同的python版本下载一个即可, 这是我在自己的电脑(win10)上编译的,不知道你的系统是否能用,64bit的windows应该都可以,有问题在下面留言。

  • pyltp-0.2.1-cp35-cp35m-win_amd64.whl
  • pyltp-0.2.1-cp36-cp36m-win_amd64.whl

注意: 这两个文件的区别是python版本号

安装文件

下载好了以后, 在命令行下, cd到wheel文件所在的目录, 然后使用命令pip install wheel文件名安装.

测试

安装好了以后, 打开python shell, 试用一下.

from pyltp import SentenceSplitter
sents = SentenceSplitter.split('元芳你怎么看?我就趴窗口上看呗!') # 分句
print('\n'.join(sents))

下载models数据

  • 下载models链接:https://pan.baidu.com/s/1o9vytmU 密码:5ntf
  • 放到任意方便调用的地方即可, 因为程序里需要你自己主动调用的

第三种方案: 直接调用编译好的ltp的可执行文件
可以参考这篇文章, 但是我在3.4版本中测试不成功, 加载srl资源失败. 但是在3.3.1版本上测试是成功的.

总结

到此这篇关于哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程的文章就介绍到这了,更多相关ltp在windows10下的安装使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现下载整个ftp目录的方法
Jan 17 Python
Python3.6简单反射操作示例
Jun 14 Python
对Python模块导入时全局变量__all__的作用详解
Jan 11 Python
python+pyqt5实现24点小游戏
Jan 24 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
django实现用户注册实例讲解
Oct 30 Python
利用pytorch实现对CIFAR-10数据集的分类
Jan 14 Python
Python换行与不换行的输出实例
Feb 19 Python
Jupyter Notebook输出矢量图实例
Apr 14 Python
Python中socket网络通信是干嘛的
May 27 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
python中数组和列表的简单实例
Mar 25 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 #Python
Pygame的程序开始示例代码
May 07 #Python
Python字符串格式化f-string多种功能实现
May 07 #Python
基于python实现把json数据转换成Excel表格
May 07 #Python
Python基于当前时间批量创建文件
May 07 #Python
python多进程下的生产者和消费者模型
May 07 #Python
基于python实现检索标记敏感词并输出
May 07 #Python
You might like
php使用递归计算文件夹大小
2014/12/24 PHP
php数组去除空值函数分享
2015/02/02 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
PHP7新增函数
2021/03/09 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
JS小功能(列表页面隔行变色)简单实现
2013/11/28 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
javascript闭包的理解
2015/04/01 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
python将回车作为输入内容的实例
2018/06/23 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
python中树与树的表示知识点总结
2019/09/14 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
python 制作网站筛选工具(附源码)
2021/01/21 Python
CSS3中的元素过渡属性transition示例详解
2016/11/30 HTML / CSS
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
奥地利网上书店:Weltbild
2017/07/14 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
播音主持专业个人自我评价
2014/01/09 职场文书
报社实习生自荐信
2014/01/24 职场文书
保险公司早会主持词
2014/03/22 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
房产公证书格式
2015/01/26 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
医院消毒隔离制度
2015/08/05 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
Pytest中skip skipif跳过用例详解
2021/06/30 Python
Docker安装MySql8并远程访问的实现
2022/07/07 Servers