【pyltp】windows安装pyltp
申明:
python2.7.14
VCForPython27
pip install pyltp==0.1.9.1
model 3.3.1
顺利安装
1.安装python2.7
https://www.python.org/download/releases/2.7/ 下载安装即可
配置环境
2.安装Micorsoft Visual C++ Compiler for Python 2.7
https://www.microsoft.com/en-us/download/details.aspx?id=44266 下载安装即可
3.安装pip
https://blog.****.net/oqqHun123/article/details/86767477
4.安装CMAKE
5.安装VS2008
配置cl环境变量(如我的是 C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\cl.exe)
可能存在dll修复问题,若遇到请用directX修复工具,若还解决不了请参照下面内容:
在cmd中键入cl执行编译时会出现mspdb80.dll无法找到的情况,是因为VC/Bin/下没有“msobj80.dll,mspdb80.dll,mspdbcore.dll,mspdbsrv.exe”这四个文件,解决的方法:
1>直接从Common7/IDE/下复制这四个文件到VC/Bin/下即可解决
2> 添加系统变量(Path),这样:我的电脑->属性->高级->环境变量->系统变量,在path中添加C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;,注意结尾最后用“;”隔开!
这样在用cl编译就不会出现mspdb80.dll文件找不到的错误了。
6.安装pyltp
打开网址下载pyltp环境
https://pypi.org/project/pyltp/0.1.9.1
下载好解压后,在 pyltp-0.1.9.1 目录文件下打开cmd,python setup.py install 进行安装,大概10-20分钟后出现finished即完成
输入pip list 检查环境是否安装成功
7.下载模型
下载ltp的相关模型,可在此百度云选择下载:
http://pan.baidu.com/share/link?shareid=1988562907&uk=2738088569
最终成功的组合是 :
pyltp版本 0.1.9.1
模型版本:3.3.1
8.上代码运行实例
# -*- coding: utf-8 -*- from pyltp import SentenceSplitter from pyltp import Segmentor from pyltp import Postagger from pyltp import NamedEntityRecognizer from pyltp import Parser def sentence_splitter(sentence): """ 分句,也就是将一片文本分割为独立的句子 :param sentence:几句话 :return: 单个单个句子 """ single_sentence = SentenceSplitter.split(sentence) # 分句 print '\n'.join(single_sentence) def word_splitter(sentence): """ 分词 :param sentence: :return: """ segmentor = Segmentor() # 初始化实例 segmentor.load('D:/Program Files/ltp-models/3.3.1/ltp-data-v3.3.1/ltp_data/cws.model') # 加载模型 words = segmentor.segment(sentence) # 分词 # 默认可以这样输出 # print '\t'.join(words) # 可以转换成List 输出 words_list = list(words) for word in words_list: print word segmentor.release() # 释放模型 return words_list def word_tag(words): """ 词性标注 :param words: 已切分好的词 :return: """ postagger = Postagger() # 初始化实例 postagger.load('D:/Program Files/ltp-models/3.3.1/ltp-data-v3.3.1/ltp_data/pos.model') # 加载模型 postags = postagger.postag(words) # 词性标注 for word, tag in zip(words, postags): print word+'/'+tag postagger.release() # 释放模型 return postags def name_recognition(words, postags): """ 命名实体识别 :param words:分词 :param postags:标注 :return: """ recognizer = NamedEntityRecognizer() # 初始化实例 recognizer.load('D:/Program Files/ltp-models/3.3.1/ltp-data-v3.3.1/ltp_data/ner.model') # 加载模型 netags = recognizer.recognize(words, postags) # 命名实体识别 for word, ntag in zip(words, netags): print word + '/' + ntag recognizer.release() # 释放模型 return netags def parse(words, postags): """ 依存句法分析 :param words: :param postags: :return: """ parser = Parser() # 初始化实例 parser.load('D:/Program Files/ltp-models/3.3.1/ltp-data-v3.3.1/ltp_data/parser.model') # 加载模型 arcs = parser.parse(words, postags) # 句法分析 print "\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs) parser.release() # 释放模型 # 测试分句子 sentence_splitter('你好,你觉得这个例子从哪里来的?当然还是直接复制官方文档,然后改了下这里得到的。') # 测试分词 word_splitter('你好,你觉得这个例子从哪里来的?当然还是直接复制官方文档,然后改了下这里得到的。') # 测试词性标注 word_tag(word_splitter('你好,你觉得这个例子从哪里来的?当然还是直接复制官方文档,然后改了下这里得到的。')) # 测试命名实体识别 words = word_splitter('我家在昆明,我现在在北京上学。中秋节你是否会想到李白?') tags = word_tag(words) name_recognition(words, tags) # 测试句法分析 parse(words, tags)
修改model路径后运行即可,若出现 Segmentor: Model not loaded! 的问题请参照:
https://blog.****.net/oqqHun123/article/details/86769943
pyltp相关文档:
https://ltp.readthedocs.io/zh_CN/latest/appendix.html#id4
https://pyltp.readthedocs.io/zh_CN/latest/api.html#
pyltp是专注nlp领域的第三方工具,可以做分词,词性分析等nlp基础任务,而tensorflow是搭建神经网络的开源框架。