使用哈工大LTP4:
1、安装:pip install ltp==4.1.5.post2
2、模型下载地址:
model_map = {
'base': 'http://39.96.43.154/ltp/v3/base.tgz',
'base1': 'http://39.96.43.154/ltp/v3/base1.tgz',
'base2': 'http://39.96.43.154/ltp/v3/base2.tgz',
'small': 'http://39.96.43.154/ltp/v3/small.tgz',
'tiny': 'http://39.96.43.154/ltp/v3/tiny.tgz',
'GSD': 'http://39.96.43.154/ltp/ud/gsd.tgz',
'GSD+CRF': 'http://39.96.43.154/ltp/ud/gsd_crf.tgz',
'GSDSimp': 'http://39.96.43.154/ltp/ud/gsd.tgz',
'GSDSimp+CRF': 'http://39.96.43.154/ltp/ud/gsd_crf.tgz',
}
如果不指定自己下载的模型,则默认会下载small版本的。
3、接口文档地址:https://ltp.readthedocs.io/zh_CN/latest/appendix.html
在triple_extraction.py里面,修改sentence运行即可。
def test():
extractor = TripleExtractor()
sentence = '李克强总理今天来我家了,我感到非常荣幸'
svos = extractor.triples_main(sentence)
print('svos', svos)
sentence = """以色列国防军20日对加沙地带实施轰炸,造成3名巴勒斯坦武装人员死亡。此外,巴勒斯坦人与以色列士兵当天在加沙地带与以交界地区发生冲突,一名巴勒斯坦人被打死。当天的冲突还造成210名巴勒斯坦人受伤。
当天,数千名巴勒斯坦人在加沙地带边境地区继续“回归大游行”抗议活动。部分示威者燃烧轮胎,并向以军投掷石块、燃烧瓶等,驻守边境的以军士兵向示威人群发射催泪瓦斯并开枪射击。"""
svos = extractor.triples_main(sentence)
print('svos', svos)
结果:
svos [
['李克强总理', '来', '我家'],
['我', '感到', '非常荣幸']
]
svos [
['以色列国防军', '实施', '轰炸'],
['以色列国防军', '造成', '3名巴勒斯坦武装人员死亡'],
['冲突', '发生', '在加沙地带与以交界地区'],
['当天冲突', '造成', '210名巴勒斯坦人受伤'],
['数千名巴勒斯坦人', '继续', '回归抗议活动'],
['部分示威者', '燃烧', '轮胎'],
['部分示威者', '投掷', '石块燃烧瓶'],
[',', '驻守', '边境'],
['驻守边境以军士兵', '发射', '催泪瓦斯']
]
原本LTP3的结果:
content = '李克强总理今天来我家了,我感到非常荣幸'
svos = [
['李克强总理', '来', '我家'],
['我', '感到', '荣幸']
]
content = ''' 以色列国防军20日对加沙地带实施轰炸,造成3名巴勒斯坦武装人员死亡。此外,巴勒斯坦人与以色列士兵当天在加沙地带与以交界地区发生冲突,一名巴勒斯坦人被打死。当天的冲突还造成210名巴勒斯坦人受伤。
当天,数千名巴勒斯坦人在加沙地带边境地区继续“回归大游行”抗议活动。部分示威者燃烧轮胎,并向以军投掷石块、燃烧瓶等,驻守边境的以军士兵向示威人群发射催泪瓦斯并开枪射击。'''
svos = [
['以色列国防军', '实施', '轰炸'],
['冲突', '发生', '巴勒斯坦人与以色列士兵'],
['当天冲突', '造成', '受伤'],
['数千名巴勒斯坦人', '继续', '回归大游行抗议活动'],
['部分示威者', '投掷', '石块'],
['驻守边境以军士兵', '发射', '催泪瓦斯']
]
参考了https://github.com/liuhuanyong/EventTriplesExtraction ,主要是将LTP3升级到了LTP4,并增加了一些相关的注释。