pyltp的安装及使用(win10+ubuntu16.04)
目录
安装
win10系统安装:
ubuntu16.04系统安装:
模型
使用
几点说明
词性表
命名实体识别的格式
依存句法分析的结构
语义角色标注的角色
安装
win10系统安装:
方式一:pip install pyltp(据很多人说不太好使,很多坑)
方式二:首先进行wheel程序的安装操作。具体来说,由于当前使用的Python版本为3.6,因此需要从官方渠道获取到相应的whl文件,即pyltp-0.2.1-cp36-cp36m-win_amd64.whl,然后将该文件放置在合适的路径下运行pip命令即可完成整个过程的操作步骤
ubuntu16.04系统安装:
在安装之前,你需要先安装C++的编译工具g++,因为ltp的代码是用C++写的。
sudo apt-get install g++
请开始配置并安装pyltp系统。官方提供了两种安装路径,请参考来自GitHub上的pyltp源码仓库的相关说明。

在尝试安装pip时(已经进行了相当长时间),我发现没有响应也没有看到明显的更新信息(导致我感到非常着急),对能否成功还不确定)。
对于git安装呢,服务器上没装git,又懒得装,所以没试。
这里我来说一下我的安装方式:
从GitHub获取pyLTP源码,并访问https://github.com/HIT-SCIR/pyltp获取完整的代码仓库。随后将获取的源码文件上传至服务器,并进行解压操作。通常会生成一个名为"pyltp-master"的目录。
然后cd到该文件夹下的“ltp”文件夹,发现为空。
下一步是从GitHub平台获取LTP源码包[ltp-3.4.0.tar.gz](https://github.com/HIT-SCIR/ltp/releases)(请根据需求选择具体的source code),然后提交至服务器端,并解压至本地LTP项目根目录下的"ltp"文件夹中)

然后运行回到“pyltp-master”中,python setup.py install就可以了。
模型
采用内部预训练模型进行开发时,请确保完成以下步骤:首先执行必要的数据准备操作 - 下载地址为http://ltp.ai/download.html;然后按照指导文档配置路径参数 - 注意:ltp3.4.0版本SRL模型pisrl.model在Windows系统下不可用,请下载以下模型文件:pisrl_win.model
使用
//ltp模型的路径
LTP_DIR = "E:\PyCharm Community Edition 2019.3.1\workspace\ltp_data_v3.4.0"
//分词
from pyltp import Segmentor
seg = Segmentor() #生成对象
seg.load(os.path.join(LTP_DIR, "cws.model")) #加载分词预训练模型
seg_words = seg.segment(text)
print(" ".join(seg_words))
seg.release() #释放资源
//词性标注
from pyltp import Postagger
pos=Postagger()
pos.load(os.path.join(LTP_DIR, "pos.model")) #加载词性预训练模型
words_pos=pos.postag(seg_words)
for k,v in zip(seg_words, words_pos):
print(k+'\t'+v)
pos.release()
//命名实体识别
from pyltp import NamedEntityRecognizer
ner = NamedEntityRecognizer()
ner.load(os.path.join(LTP_DIR, "ner.model")) #加载实体识别模型
netags=ner.recognize(seg_words,words_pos)
print(" ".join(netags))
ner.release()
//依存语义分析
from pyltp import Parser
parser=Parser()
parser.load(os.path.join(LTP_DIR, "parser.model")) #加载依存语义分析模型
arcs=parser.parse(seg_words,words_pos)
print([(arc.head,arc.relation) for arc in arcs])
parser.release()
//语义角色标注
from pyltp import SementicRoleLabeller
labeller = SementicRoleLabeller()
labeller.load(os.path.join(LTP_DIR, "pisrl_win.model"))
roles = labeller.label(seg_words,words_pos,arcs) #语义角色标注的结果
for role in roles:
print(role.index, "".join(["%s:(%d,%d)" % (arg.name, arg.range.start, arg.range.end) for arg in role.arguments]))
几点说明
词性表

命名实体识别的格式
该命名实体识别模型(LTP)采用了BIESO标注体系。其中,
B对应实体开始词,
I对应实体中间词,
E对应实体结束词,
S对应单独成体的命名实体,
而O则标记非命名实体区域。
LTP 提供的命名实体类型为:人名(Nh),地名(Ns),机构名(Ni)。
依存句法分析的结构

语义角色标注的角色


官方文档建议使用pyltp 0.2.0中的api.html文件(https://pyltp.readthedocs.io/zh_CN/latest/api.html#id19)。
