哈工大自然语言处理工具箱之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 map和reduce函数用法示例
Feb 26 Python
Win10下Python环境搭建与配置教程
Nov 18 Python
Python双向循环链表实现方法分析
Jul 30 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
python实现最短路径的实例方法
Jul 19 Python
Python中random模块常用方法的使用教程
Oct 04 Python
Python模拟登录和登录跳转的参考示例
Oct 30 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 Python
Python实现天气查询软件
Jun 07 Python
python异步的ASGI与Fast Api实现
Jul 16 Python
Python中递归以及递归遍历目录详解
Oct 24 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与已存在的Java应用程序集成
2006/10/09 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
jQuery使用$.ajax进行异步刷新的方法(附demo下载)
2015/12/04 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
Vue数据驱动模拟实现1
2017/01/11 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
Node.js实现简单的爬取的示例代码
2019/06/25 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
JavaScript中遍历的十种方法总结
2020/12/15 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
DJANGO-ALLAUTH社交用户系统的安装配置
2014/11/18 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
会计电算化专业应届大学生求职信
2013/10/22 职场文书
见习期自我鉴定
2013/11/07 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
相亲大会策划方案
2014/06/05 职场文书
销售提升方案
2014/06/07 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
社会主义核心价值观主题教育活动总结
2015/05/07 职场文书
怎样写家长意见
2015/06/04 职场文书
浅谈Python协程asyncio
2021/06/20 Python