哈工大自然语言处理工具箱之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学习手册中的python多态示例代码
Jan 21 Python
python中lambda与def用法对比实例分析
Apr 30 Python
Python实现简单登录验证
Apr 13 Python
Python socket实现简单聊天室
Apr 01 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
python实现点对点聊天程序
Jul 28 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
Python爬虫 bilibili视频弹幕提取过程详解
Jul 31 Python
python实现代码统计程序
Sep 19 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 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
为IP查询添加GOOGLE地图功能的代码
2010/08/08 PHP
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
根据出生日期自动取得星座的js代码
2010/07/20 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
js格式化时间和js格式化时间戳示例
2014/02/10 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
jQuery中get方法用法分析
2016/12/07 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
python写入xml文件的方法
2015/05/08 Python
简单解决Python文件中文编码问题
2015/11/22 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
详解Python3注释知识点
2019/02/19 Python
Django的性能优化实现解析
2019/07/30 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
渔夫的故事教学反思
2014/02/14 职场文书
应急管理培训方案
2014/06/12 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
2016年安全月活动总结
2016/04/06 职场文书
nginx 反向代理之 proxy_pass的实现
2021/03/31 Servers
python Tkinter模块使用方法详解
2022/04/07 Python
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL