基于哈工大LTP句子主干提取
2019独角兽企业重金招聘Python工程师标准>>>
语言技术平台(LTP) 提供包括中文分词、词性标注、命名实体识别、依存句法分析、语义角色标注等丰富、 高效、精准的自然语言处理技术。经过 哈工大社会计算与信息检索研究中心 11 年的持续研发和推广,LTP 已经成为国内外最具影响力的中文处理基础平台,曾获 CoNLL 2009七国语言句法语义分析评测 总成绩第一名,中文信息学会钱伟长一等奖等重要成绩和荣誉。目前,LTP 已经被 500 多家国内外研究机构和企业使用,多家大企业和科研机构付费使用。
文档地址:语言技术平台(LTP)
以上文档介绍的已经比较清楚再此就不赘述了,下面以“总理那高大的形象总是浮现在我眼前”,“我把苹果吃了”,“苹果被我吃了”几种经典句型为例对提取句子主干进行分析。
①通过对“总理那高大的形象总是浮现在我眼前”进行分词、词性标注、依存句法分析得到如下结果:
分词结果:总理 那 高大 的 形象 总是 浮现 在 我 眼前
词性分析结果:总理/n 那/r 高大/a 的/u 形象/n 总是/d 浮现/v 在/p 我/r 眼前/nt
依存句法分析结果:5:ATT 5:ATT 5:ATT 3:RAD 7:SBV 7:ADV 0:HED 7:CMP 10:ATT 8:POB
将以上结果绘制成语法树得出:
②通过对“我把苹果吃了”进行分词、词性标注、依存句法分析得到如下结果:
分词结果:你 把 苹果 吃 了
词性分析结果:你/r 把/p 苹果/n 吃/v 了/u
依存句法分析结果:4:SBV 4:ADV 2:POB 0:HED 4:RAD
将以上结果绘制成语法树得出:
③通过对“苹果被我吃了”进行分词、词性标注、依存句法分析得到如下结果:
分词结果:苹果 被 我 吃 了
词性分析结果:苹果/n 被/p 我/r 吃/v 了/u
依存句法分析结果:4:FOB 4:ADV 2:POB 0:HED 4:RAD
将以上结果绘制成语法树得出:
以上结果都是基于LTP分析得出,分词和词性分析也可以通过结巴分词实现,不过经本人测试效果不如LTP自带分词,可能因为语料和适配问题,大家可以尝试下。
现在已经得到语法树了,在汉语中句子主干一般为主谓宾结构,也可能部分缺失。通过LTP文档可以发现:
一般情况下LTP会选取谓语作为ROOT,SBV为主谓关系,VOB为动宾关系,FOB为前置宾语。可以把ROOT视作谓语,SBV作为主语,VOB或FOB作为宾语。当主语缺失或宾语缺失时,也可能表现为ADV-POB(状中-定宾)结构。
由于本人已把LTP作为服务,返回结果格式为:
{"code": 200,"result": [{"dep": "总理","gov": "形象","pos": "ATT"},{"dep": "那","gov": "形象","pos": "ATT"},{"dep": "高大","gov": "形象","pos": "ATT"},{"dep": "的","gov": "高大","pos": "RAD"},{"dep": "形象","gov": "浮现","pos": "SBV"},{"dep": "总是","gov": "浮现","pos": "ADV"},{"dep": "浮现","gov": "ROOT","pos": "HED"},{"dep": "在","gov": "浮现","pos": "CMP"},{"dep": "我","gov": "眼前","pos": "ATT"},{"dep": "眼前","gov": "在","pos": "POB"}],"ts": 1530862633
}
首先通过ROOT提取谓语结点,然后后再通过谓语获取主语和宾语:
class Sentence(object):def __init__(self, url):self.url = urldef getLTPAnalysis(self, sentence):data = bytes(json.dumps({'sentence': sentence}), encoding='utf8')headers = {'Content-Type': 'application/json'}req = urllib.request.Request(self.url, data, headers)resp = urllib.request.urlopen(req)respStr = resp.read()respJson = json.loads(respStr)return respJsondef getHED(self, words):root = Nonefor word in words:if word['gov'] == 'ROOT':root = word['dep']return rootdef getWord(self, words, HED, wType):sbv = Nonefor word in words:if word['pos'] == wType and word['gov'] == HED:sbv = word['dep']return sbvdef getFirstNotNone(self, array):for word in array:if word is not None:return wordreturn Nonedef getMain(self, sentence):re = ''result = self.getLTPAnalysis(sentence)if result['code'] == 200:array = result['result']if len(array) > 0:hed = self.getHED(array)if hed is not None:sbv = self.getWord(array, hed, 'SBV') # 主语vob = self.getWord(array, hed, 'VOB') # 宾语fob = self.getWord(array, hed, 'FOB') # 后置宾语adv = self.getWord(array, hed, 'ADV') # 定中pob = self.getWord(array, adv, 'POB') # 介宾如果没有主语可做主语zhuWord = self.getFirstNotNone([sbv, pob]) # 最终主语weiWord = hed # 最终谓语binWord = self.getFirstNotNone([vob, fob, pob]) # 最终宾语re = '{}{}{}'.format(zhuWord, weiWord, binWord)return re.replace('None', '')
最终处理结果为:
由于本人刚接触自然语言处理,如果错误欢迎指正!
转载于:https://my.oschina.net/mutoushirana/blog/1841502
基于哈工大LTP句子主干提取相关推荐
- 哈工大LTP的依存分析
# 可视化 网址:http://ltp.ai/demo.html LTP提供的模型有tiny.small和base.根据安装的LTP版本,模型的版本也需要匹配,否则可能会出现不兼容的情况 注:web ...
- 使用哈工大LTP做自然语言处理任务基础demo
LTP4 文档:https://ltp.readthedocs.io/zh_CN/latest/ Github地址:https://github.com/HIT-SCIR/ltp 哈工大LTP官网模型 ...
- 使用ltp进行三元组提取的实战代码
大家好,我是herosunly.985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用.曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名.拥有多项发明专利.对机器学 ...
- 开放信息抽取(OIE)系统(四)-- 第三代开放信息抽取系统(基于子句, clause-based, 句子重组、删减)
开放信息抽取(OIE)系统(四)-- 第三代开放信息抽取系统(基于子句, clause-based, 句子重组.删减) 一.第三代开放信息抽取系统背景 基于子句的开放信息抽取系统与之前的信息抽取方 ...
- NLP之基于Transformer的句子翻译
Transformer 文章目录 Transformer 1.理论 1.1 Model Structure 1.2 Multi-Head Attention & Scaled Dot-Prod ...
- 中文分词工具比较 6大中文分词器测试(哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba、FoolNLTK、HanLP)
中文分词工具比较 6大中文分词器测试(jieba.FoolNLTK.HanLP.THULAC.nlpir.ltp) 哈工大LTP.中科院计算所NLPIR.清华大学THULAC和jieba 个人接触的分 ...
- 基于PCL实现欧式聚类提取
Lidar系列文章 传感器融合是将多个传感器采集的数据进行融合处理,以更好感知周围环境:这里首先介绍激光雷达的相关内容,包括激光雷达基本介绍(本节内容),激光点云数据处理方法(点云数据显示,点云分割, ...
- java骨架_基于Mat变换的骨架提取Java
针对一副二值图像,区域内的点只有背景点(白点,0值)和前景点(黑点,1值).对于给定区域的像素点逐次应用两个基本步骤,以提取骨架: step1,如果一个像素点满足下列4个条件,那么将它标记为要删除的点 ...
- 哈工大ltp词性标注列表和ICTCLAS词性列表
哈工大ltp词性列表 Tag Description Example a adjective 美丽 b other noun-modifier 大型, 西式 c conjunction 和, 虽然 d ...
最新文章
- mysql中修改字段的类型
- 对比:Linux和Windows系统线程间的区别
- ffmpeg 和 SDL 教程2:输出到屏幕
- 头条号个人中心登录_微信个人订阅号开通了创作领域的认证!这是要跟头条看齐了吗?...
- java 四字节uid,Java入门教程-序列化版本号serialVersionUID的作用
- 使用 ssh 命令来访问(登录/连接)远程服务器主机
- vue点击按钮上传图片_关于javascript:Vue-点击按钮提交表单
- Java装饰器模式详解
- 【LeetCode】【HOT】287. 寻找重复数(抽象环形链表)
- oracle中以dba_、user_、v$_、all_、session_、index_开头
- linux定时任务cron配置
- Managing the Activity Lifecycle
- 设计模式【转自JackFrost的博客】
- 驱动器阵列和容错方法(不同RAID的区别)
- macOS Big Sur 11.7.2 (20G1020) 正式版 ISO、PKG、DMG、IPSW 下载
- PHP面向对象编程的基本概念定义操作属性方法
- The following packages have unmet dependencies问题
- 【程序人生】机灵鹤六月份的月度总结
- XLS调色面板HSSFPalette
- Traefik 一个反向代理的新工具