diff --git a/README.md b/README.md index 1f8e071..6cc3d86 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,14 @@   文本表示一直是个重要问题,如何以清晰,简介的方式对一个文本信息进行有效表示是个长远的任务 我尝试过使用关键词,实体之间的关联关系,并使用textgrapher的方式进行展示,但以词作为文本信息单元表示这种效果不是特别好,所以,本项目想尝试从事件三元组的方式出发,对文本进行表示. -# 使用方式1-基于ltp依存句法分析和语义角色标注的事件三元组抽取 +# 方法1-基于ltp依存句法分析和语义角色标注的事件三元组抽取 from triples_extraction import * extractor = TripleExtractor() svos = extractor.triples_main(content) print('svos', svos) -# 测试样例 +# 方法1-测试结果 content = '李克强总理今天来我家了,我感到非常荣幸' svos = [ ['李克强总理', '来', '我家'], @@ -28,14 +28,14 @@ ['驻守边境以军士兵', '发射', '催泪瓦斯'] ] -# 使用方式2-基于百度DDParser依存句法分析的事件三元组抽取 +# 方法2-基于百度DDParser依存句法分析的事件三元组抽取 from baidu_svo_extract import * extractor = SVOParser() svos = extractor.triples_main(content2) print('svos', svos) -# 测试样例 +# 方法2-测试结果 content = '李克强总理今天来我家了,我感到非常荣幸' svos = [ ['总理李克强', '来', '我家'], @@ -51,9 +51,39 @@ ['部分示威者', '燃烧', '轮胎'] ] -# 对比结论 +# 方法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/