代码

import os
from pprint import pprint
from pyltp import Segmentor, Postagger, Parser, NamedEntityRecognizer, SementicRoleLabeller
class LtpParser:
def __init__(self):
LTP_DIR = "../model/ltp_data_v3.4.0/"
self.segmentor = Segmentor()
# load_with_lexicon用于加载自定义的词典
self.segmentor.load_with_lexicon(os.path.join(LTP_DIR, "cws.model"),os.path.join(LTP_DIR, "user_dict.txt")) self.postagger = Postagger()
self.postagger.load_with_lexicon(os.path.join(LTP_DIR, "pos.model"),os.path.join(LTP_DIR, "user_dict.txt")) self.parser = Parser()
self.parser.load(os.path.join(LTP_DIR, "parser.model")) self.recognizer = NamedEntityRecognizer()
self.recognizer.load(os.path.join(LTP_DIR, "ner.model")) self.labeller = SementicRoleLabeller()
self.labeller.load(os.path.join(LTP_DIR, 'pisrl.model')) def analyse(self, text):
# 分词
segmentor_res = self.segmentor.segment(text)
print(list(segmentor_res)) # 词性标注,传入的是分词的结果
postagger_res = self.postagger.postag(segmentor_res)
print(list(postagger_res)) # 命名实体识别,传入的是分词、词性标注的结果 # 依存句法分析,传入的是分词、词性标注的结果
arcs = self.parser.parse(segmentor_res, postagger_res)
# print("\t".join("%d:%s" % (arc.head, arc.relation) for arc in arcs))
arcs_res = []
for word, arc in zip(list(segmentor_res), arcs):
tmp = {}
if arc.head == 0:
tmp['dep'] = word
tmp['gov'] = 'ROOT'
tmp['pos'] = arc.relation
else:
tmp['dep'] = word
tmp['gov'] = segmentor_res[arc.head-1]
tmp['pos'] = arc.relation
arcs_res.append(tmp)
pprint(arcs_res) # 语义角色标注,传入的是分词、词性标注、句法分析结果
labeller_res = self.labeller.label(segmentor_res, postagger_res, arcs)
for role in labeller_res:
print (role.index, "\t".join(["%s:(%d,%d)-(%s)" % (arg.name, arg.range.start, arg.range.end, "".join(list(segmentor_res)[arg.range.start:arg.range.end+1])) for arg in role.arguments])) if __name__ == '__main__':
ltpParser = LtpParser()
text = "中国是一个自由、和平的国家"
ltpParser.analyse(text)

结果

['中国', '是', '一个', '自由', '、', '和平', '的', '国家']
['ns', 'v', 'm', 'a', 'wp', 'a', 'u', 'n']
['S-Ns', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
[{'dep': '中国', 'gov': '是', 'pos': 'SBV'},
{'dep': '是', 'gov': 'ROOT', 'pos': 'HED'},
{'dep': '一个', 'gov': '国家', 'pos': 'ATT'},
{'dep': '自由', 'gov': '国家', 'pos': 'ATT'},
{'dep': '、', 'gov': '和平', 'pos': 'WP'},
{'dep': '和平', 'gov': '自由', 'pos': 'COO'},
{'dep': '的', 'gov': '自由', 'pos': 'RAD'},
{'dep': '国家', 'gov': '是', 'pos': 'VOB'}]
1 A0:(0,0)-(中国) A1:(2,7)-(一个自由、和平的国家)

哈工大LTP基本使用-分词、词性标注、依存句法分析、命名实体识别、角色标注的更多相关文章

  1. 学习笔记CB007:分词、命名实体识别、词性标注、句法分析树

    中文分词把文本切分成词语,还可以反过来,把该拼一起的词再拼到一起,找到命名实体. 概率图模型条件随机场适用观测值条件下决定随机变量有有限个取值情况.给定观察序列X,某个特定标记序列Y概率,指数函数 e ...

  2. 使用哈工大LTP进行文本命名实体识别并保存到txt

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/broccoli2/article/det ...

  3. HMM(隐马尔科夫模型)与分词、词性标注、命名实体识别

    转载自 http://www.cnblogs.com/skyme/p/4651331.html HMM(隐马尔可夫模型)是用来描述隐含未知参数的统计模型,举一个经典的例子:一个东京的朋友每天根据天气{ ...

  4. HMM与分词、词性标注、命名实体识别

    http://www.hankcs.com/nlp/hmm-and-segmentation-tagging-named-entity-recognition.html HMM(隐马尔可夫模型)是用来 ...

  5. PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词

    前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词的数据集预处理成作者提到的格式,即可很快的就迁移了这个代码到中文分词中,相关的代码后续将会分享. 具体的数据格式,这种方式并不适合处理 ...

  6. ZH奶酪:哈工大LTP云平台标记含义及性能

    从官网搬过来的 囧rz 哈工大讯飞语言云 由哈工大 和科大讯飞 联合研发的中文自然语言处理云服务平台.结合了哈工大“语言技术平台——LTP” 高效.精准的自然语言处理核心技术和讯飞公司在全国性大规模云 ...

  7. HanLP分词命名实体提取详解

    HanLP分词命名实体提取详解   分享一篇大神的关于hanlp分词命名实体提取的经验文章,文章中分享的内容略有一段时间(使用的hanlp版本比较老),最新一版的hanlp已经出来了,也可以去看看新版 ...

  8. nlp 总结 分词,词义消歧,词性标注,命名体识别,依存句法分析,语义角色标注

    分词 中文分词 (Word Segmentation, WS) 指的是将汉字序列切分成词序列. 因为在汉语中,词是承载语义的最基本的单元.分词是信息检索.文本分类.情感分析等多项中文自然语言处理任务的 ...

  9. 3. 哈工大LTP解析

    1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 哈工大语言技术平台Language Technology ...

随机推荐

  1. PacketStream 和 honeygain 推荐一款可以通过分享带宽赚钱的APP

    方法很简单,只需打开网址 PacketStream 或 honeygain 注册,下载客户端登录即可分享带宽.价格0.1美元/G. 绑定paypal账号即可提现.退出客户端即可停止分享带宽.

  2. go mod管理 init 和 包导入的关系

    你创建了一个文件的名字为:lisi001 如果你初始化项目名字为lisi, go mod init lisi 那么你导包的时候就得也用lisi import ( "lisi/path&quo ...

  3. Hi3559AV100板载开发系列-pthread_create()下V4L2接口MJPEG像素格式的VIDIOC_DQBUF error问题解决-采用阻塞方式下select监听

     最近一直加班加点进行基于Hi3559AV100平台的BOXER-8410AI板载开发,在开发的过程中,遇到了相当多的问题,其一是板载的开发资料没有且功能不完整,厂家不提供太多售后技术支持,厂家对部分 ...

  4. vs2019远程调试

    VS2019远程调试 这几天遇到个很是纠结的问题,同样的源代码,放在测试服务器,完美运行.但是上线正式环境就是死活显示不出来.于是想到了微软的远程调试功能,这里用VS2019举例. 下载远程访问工具 ...

  5. [GXYCTF2019]Ping Ping Ping 1

    进入界面 根据提示进行ping信号 看到网页的内容就想到经典的Linux命令执行,使用命令执行的管道符 "  |  "尝试列出文件 FLAG应该在Flag.php里面 构造play ...

  6. CSS基础 和 font字体、背景属性连写 与 清除浮动方法

    1.伪类 1. :link 2. :visited 3. :hover(重要) 4. :active 5. :focus(input标签获取光标焦点) 2.伪元素 1.:first-letter 2. ...

  7. WEB服务-Nginx之十-keepalived

    WEB服务-Nginx之10-keepalived 目录 WEB服务-Nginx之10-keepalived Keepalived和高可用 基本概述 Keepalived安装配置 Keepalived ...

  8. JAVA -JSON-XML-MAP转换

      //定义一个MAP对象,将对象传给后端接口接收 Map a = ["api": '11', ZGUID: "1231",BESKZ: "1231& ...

  9. WPF 基础 - 绘画 1) 线段、矩形、圆弧及填充色

    1. 绘画 1.1 图形类型 Line X1.Y1.X2.Y2,Stroke,StrokeThickness Rectangle 矩形 Ellipse 椭圆 Polygon 多边形(自动闭合) Pol ...

  10. HDU_3071 Gcd & Lcm game 【素数分解 + 线段树 + 状压】

    一.题目  Gcd & Lcm game 二.分析 非常好的一题. 首先考虑比较暴力的做法,肯定要按区间进行处理,对于$lcm$和$gcd$可以用标准的公式进行求,但是求$lcm$的时候是肯定 ...