【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/  下载安装即可 

配置环境

【pyltp】windows安装pyltp

 

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

https://cmake.org/download/

【pyltp】windows安装pyltp

 

5.安装VS2008

http://download.microsoft.com/download/8/B/5/8B5804AD-4990-40D0-A6AA-CE894CBBB3DC/VS2008ExpressENUX1397868.iso

配置cl环境变量(如我的是 C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\cl.exe)

可能存在dll修复问题,若遇到请用directX修复工具,若还解决不了请参照下面内容:

【pyltp】windows安装pyltp

在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】windows安装pyltp

 

下载好解压后,在 pyltp-0.1.9.1 目录文件下打开cmd,python setup.py install 进行安装,大概10-20分钟后出现finished即完成

【pyltp】windows安装pyltp

 

输入pip list 检查环境是否安装成功

【pyltp】windows安装pyltp

 

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是搭建神经网络的开源框架。