EventTriplesExtraction
An experiment and demo-level tool for text information extraction (event-triples extraction), which can be a route to the event chain and topic graph, 基于依存句法与语义角色标注的事件三元组抽取,可用于文本理解如文档主题链,事件线等应用。
Install / Use
/learn @liuhuanyong/EventTriplesExtractionREADME
EventTriplesExtraction
EventTriplesExtraction based on dependency parser and semantic role labeling, 基于依存句法与语义角色标注的事件三元组抽取
文本表示一直是个重要问题,如何以清晰,简介的方式对一个文本信息进行有效表示是个长远的任务
我尝试过使用关键词,实体之间的关联关系,并使用textgrapher的方式进行展示,但以词作为文本信息单元表示这种效果不是特别好,所以,本项目想尝试从事件三元组的方式出发,对文本进行表示.
方法1-基于ltp依存句法分析和语义角色标注的事件三元组抽取
from triples_extraction import *
extractor = TripleExtractor()
svos = extractor.triples_main(content)
print('svos', svos)
方法1-测试结果
content = '李克强总理今天来我家了,我感到非常荣幸'
svos = [
['李克强总理', '来', '我家'],
['我', '感到', '荣幸']
]
content = ''' 以色列国防军20日对加沙地带实施轰炸,造成3名巴勒斯坦武装人员死亡。此外,巴勒斯坦人与以色列士兵当天在加沙地带与以交界地区发生冲突,一名巴勒斯坦人被打死。当天的冲突还造成210名巴勒斯坦人受伤。
当天,数千名巴勒斯坦人在加沙地带边境地区继续“回归大游行”抗议活动。部分示威者燃烧轮胎,并向以军投掷石块、燃烧瓶等,驻守边境的以军士兵向示威人群发射催泪瓦斯并开枪射击。'''
svos = [
['以色列国防军', '实施', '轰炸'],
['冲突', '发生', '巴勒斯坦人与以色列士兵'],
['当天冲突', '造成', '受伤'],
['数千名巴勒斯坦人', '继续', '回归大游行抗议活动'],
['部分示威者', '投掷', '石块'],
['驻守边境以军士兵', '发射', '催泪瓦斯']
]
方法2-基于百度DDParser依存句法分析的事件三元组抽取
from baidu_svo_extract import *
extractor = SVOParser()
svos = extractor.triples_main(content2)
print('svos', svos)
方法2-测试结果
content = '李克强总理今天来我家了,我感到非常荣幸'
svos = [
['总理李克强', '来', '我家'],
['我', '感到', '荣幸']]
]
content = ''' 以色列国防军20日对加沙地带实施轰炸,造成3名巴勒斯坦武装人员死亡。此外,巴勒斯坦人与以色列士兵当天在加沙地带与以交界地区发生冲突,一名巴勒斯坦人被打死。当天的冲突还造成210名巴勒斯坦人受伤。
当天,数千名巴勒斯坦人在加沙地带边境地区继续“回归大游行”抗议活动。部分示威者燃烧轮胎,并向以军投掷石块、燃烧瓶等,驻守边境的以军士兵向示威人群发射催泪瓦斯并开枪射击。'''
svos = [
['20日', '实施', '轰炸']
['当天冲突', '造成', '210名']
['巴勒斯坦人', '回归', '大游行']
['部分示威者', '燃烧', '轮胎']
]
方法3-基于词性模板规则的事件三元组抽取
from pattern_event_triples import *
extractor = ExtractEvent()
events, spos = handler.phrase_ip(content1)
spos = [i for i in spos if i[0] and i[2]]
print('svos', svos)
方法3-测试结果
content = '李克强总理今天来我家了,我感到非常荣幸'
svos = [
('李克强总理', '来', '我家')
('李克强', '感到', '荣幸')
]
content = ''' 以色列国防军20日对加沙地带实施轰炸,造成3名巴勒斯坦武装人员死亡。此外,巴勒斯坦人与以色列士兵当天在加沙地带与以交界地区发生冲突,一名巴勒斯坦人被打死。当天的冲突还造成210名巴勒斯坦人受伤。
当天,数千名巴勒斯坦人在加沙地带边境地区继续“回归大游行”抗议活动。部分示威者燃烧轮胎,并向以军投掷石块、燃烧瓶等,驻守边境的以军士兵向示威人群发射催泪瓦斯并开枪射击。'''
svos = [
('数千名巴勒斯坦人在加沙地带边境地区', '继续回归游行', '抗议活动')
('部分示威者', '燃烧', '轮胎')
('边境', '以军', '士兵向示威人群发射催泪瓦斯开枪射击')
('士兵向示威人群', '发射', '催泪瓦斯开枪射击')
]
总结
本项目公开了基于ltp句法分析和语义角色标注、基于百度DDParser以及基于词法模式的事件三元组抽取方法,并给了实验示例。可以得到以下结论:
1、LTP在DDParser之外,还提供了语义角色标注的功能,这个可以用于事件三元组抽取的有效补充。
2、LTP速度比DDParser要快。
3、基于词法模式的事件三元组抽取速度最快,但效果取决于分词、词性标注性能。
4、基于词法模式,可以得到语义更长的三元组元素信息。
If any question about the project or me ,see https://liuhuanyong.github.io/
如有自然语言处理、知识图谱、事理图谱、社会计算、语言资源建设等问题或合作,可联系我:
1、我的github项目介绍:https://liuhuanyong.github.io
2、我的csdn博客:https://blog.csdn.net/lhy2014
3、about me:刘焕勇,中国科学院软件研究所,lhy_in_blcu@126.com
Related Skills
node-connect
338.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.4kCommit, push, and open a PR
