赞
踩
使用 pip 安装
pip install pyltp
# pip install pyltp -i https://pypi.tuna.tsinghua.edu.cn/simple 可以先下载好whl文件
#LTP语言平台:http://ltp.ai/index.html
#咱们使用的工具包,pyltp:https://pyltp.readthedocs.io/zh_CN/latest/api.html
#LTP附录:https://ltp.readthedocs.io/zh_CN/latest/appendix.html#id3
#安装方法:https://github.com/HIT-SCIR/pyltp
如果安装过程中,编译出错,可以直接下载 pyltp-0.2.1-cp37-cp37m-win_amd64.whl
文件(cp37表示python3.7),进入文件所在目录,使用以下命令安装。
pip install pyltp-0.2.1-cp37-cp37m-win_amd64.whl
PS D:\Workspaces_AI\pyltp3.7\pip install pyltp-0.2.1-cp37-cp37m-win_amd64.whl
Processing d:\workspaces_ai\pyltp3.7\pyltp-0.2.1-cp37-cp37m-win_amd64.whl
Installing collected packages: pyltp
Successfully installed pyltp-0.2.1
PS D:\Workspaces_AI\pyltp3.7>
LTP 使用的是863词性标注集,其各个词性含义如下表。
NE识别模块的标注结果采用O-S-B-I-E标注形式,其含义为
LTP中的NE 模块识别三种NE,分别如下:
# -*- coding: utf-8 -*- import os LTP_DATA_DIR = './ltp_data_v3.4.0' # ltp模型目录的路径 cws_model_path = os.path.join(LTP_DATA_DIR, 'cws.model') # 分词模型路径,模型名称为`cws.model` pos_model_path = os.path.join(LTP_DATA_DIR, 'pos.model') # 词性标注模型路径,模型名称为`pos.model` ner_model_path = os.path.join(LTP_DATA_DIR, 'ner.model') # 命名实体识别模型路径,模型名称为`ner.model` par_model_path = os.path.join(LTP_DATA_DIR, 'parser.model') # 依存句法分析模型路径,模型名称为`parser.model` srl_model_path = os.path.join(LTP_DATA_DIR, 'srl') # 语义角色标注模型目录路径,模型目录为`srl`。注意该模型路径是一个目录,而不是一个文件。 from pyltp import SentenceSplitter from pyltp import Segmentor from pyltp import Postagger from pyltp import NamedEntityRecognizer from pyltp import Parser from pyltp import SementicRoleLabeller # 创建停用词表 def stopwordslist(filepath): stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()] return stopwords # 分句,也就是将一片文本分割为独立的句子 def sentence_splitter(sentence): sents = SentenceSplitter.split(sentence) # 分句 print('\n'.join(sents)) # 分词 def segmentor(sentence): segmentor = Segmentor() # 初始化实例 segmentor.load(cws_model_path) # 加载模型 # segmentor.load_with_lexicon('cws_model_path', 'D:\pyprojects\LTP\ltp_data\dict.txt') #加载模型 使用用户自定义字典的高级分词 words = segmentor.segment(sentence) # 分词 # 默认可以这样输出 # print('/'.join(words)) # 可以转换成List 输出 words_list = list(words) segmentor.release() # 释放模型 return words_list # 词性标注 def posttagger(words): postagger = Postagger() # 初始化实例 postagger.load(pos_model_path) # 加载模型 postags = postagger.postag(words) # 词性标注 # for word, tag in zip(words, postags): # print(word + '/' + tag) postagger.release() # 释放模型 return postags # 命名实体识别 def ner(words, postags): recognizer = NamedEntityRecognizer() # 初始化实例 recognizer.load(ner_model_path) # 加载模型 netags = recognizer.recognize(words, postags) # 命名实体识别 # for word, ntag in zip(words, netags): # print(word + '/' + ntag) recognizer.release() # 释放模型 return netags if __name__ == "__main__": text = '2020QS世界大学排名第64,2020年TIMES综合大学排名62,阿姆斯特丹大学毕业生就业能力排名中全球前150,曾培养出6名诺贝尔奖得主者。是Universitas 21、欧洲首都大学联盟(UNICA)、欧洲大学协会(EUA)以及欧洲研究型大学联盟成员。' words = segmentor(text) print("分词结果:words = ", words) postags = posttagger(words) print("词性标注结果:postags = ", postags) netags = ner(words, postags) print("命名实体识别结果:netags = ", netags) entities = '' for word, ntag in zip(words, netags): print("word = {0}----ntag = {1}".format(word, ntag)) if (ntag == 'O'): # 过滤非命名实体 entities += " " else: entities += word print("entities = {0}".format(entities))
打印结果:
分词结果:words = ['2020QS', '世界', '大学', '排名', '第64', ',', '2020年', 'TIMES', '综合', '大学', '排名', '62', ',', '阿姆斯特丹', '大学', '毕业生', '就业', '能力', '排名', '中', '全球', '前', '150', ',', '曾', '培养', '出', '6', '名', '诺贝尔奖', '得主者', '。', '是', 'Universitas', '21', '、', '欧洲', '首都', '大学', '联盟', '(', 'UNICA', ')', '、', '欧洲', '大学', '协会', '(', 'EUA', ')', '以及', '欧洲', '研究型', '大学', '联盟', '成员', '。'] 词性标注结果:postags = <pyltp.VectorOfString object at 0x000001977F5BE390> 命名实体识别结果:netags = <pyltp.VectorOfString object at 0x000001977F5969F0> word = 2020QS----ntag = O word = 世界----ntag = O word = 大学----ntag = O word = 排名----ntag = O word = 第64----ntag = O word = ,----ntag = O word = 2020年----ntag = O word = TIMES----ntag = O word = 综合----ntag = O word = 大学----ntag = O word = 排名----ntag = O word = 62----ntag = O word = ,----ntag = O word = 阿姆斯特丹----ntag = B-Ni word = 大学----ntag = E-Ni word = 毕业生----ntag = O word = 就业----ntag = O word = 能力----ntag = O word = 排名----ntag = O word = 中----ntag = O word = 全球----ntag = O word = 前----ntag = O word = 150----ntag = O word = ,----ntag = O word = 曾----ntag = O word = 培养----ntag = O word = 出----ntag = O word = 6----ntag = O word = 名----ntag = O word = 诺贝尔奖----ntag = O word = 得主者----ntag = O word = 。----ntag = O word = 是----ntag = O word = Universitas----ntag = O word = 21----ntag = O word = 、----ntag = O word = 欧洲----ntag = B-Ni word = 首都----ntag = I-Ni word = 大学----ntag = I-Ni word = 联盟----ntag = E-Ni word = (----ntag = O word = UNICA----ntag = O word = )----ntag = O word = 、----ntag = O word = 欧洲----ntag = B-Ni word = 大学----ntag = I-Ni word = 协会----ntag = E-Ni word = (----ntag = O word = EUA----ntag = O word = )----ntag = O word = 以及----ntag = O word = 欧洲----ntag = B-Ni word = 研究型----ntag = I-Ni word = 大学----ntag = I-Ni word = 联盟----ntag = E-Ni word = 成员----ntag = O word = 。----ntag = O entities = 阿姆斯特丹大学 欧洲首都大学联盟 欧洲大学协会 欧洲研究型大学联盟 Process finished with exit code 0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。