请尝试从pdf的句子解析文本中提取关系。 我现在将stanford coreNLP与python pycorenlp一起使用来解析句子,现在我想从该解析树中提取主语动词和宾语
以下是我的数据示例: 马克·罗伯特(Mark Robert)是3trucks的创始人。 3trucks成立于2010年。
这是我想要的输出: ('Mark Robert',创始人,'3trucks') (“ 3truck”,成立于“ 2010”)
这是文本和代码的示例
import nltk
import re
from pycorenlp import *
nlp = StanfordCoreNLP("http://localhost:9000/")
text = 'Mark Robert is the founder of 3trucks. 3trucks was founded in 2010'
output = nlp.annotate(text, properties={
'annotators': 'tokenize,ssplit,pos,depparse,parse',
"timeout": "50000",
'outputFormat': 'json'
})
print(output['sentences'][0]['parse'])
print('------------------------------')
print(output['sentences'][1]['parse'])`
我的代码输出:
(ROOT
(S
(NP (NNP Mark) (NNP Robert))
(VP (VBZ is)
(NP
(NP (DT the) (NN founder))
(PP (IN of)
(NP (NNS 3trucks)))))
(. .)))
------------------------------
(ROOT
(S
(NP (NNS 3trucks))
(VP (VBD was)
(VP (VBN founded)
(PP (IN in)
(NP (CD 2010)))))))
答案 0 :(得分:2)
您可以在注释器列表中包含“ openie”。 Openie还将形成三列组,这是列表所必需的。还请记住将输出限制为3。
output = nlp.annotate(s, properties={"annotators":"tokenize,ssplit,pos,depparse,natlog,openie",
"outputFormat": "json",
"openie.triple.strict":"true",
"openie.max_entailments_per_clause":"1"})
发布后,您可以根据需要添加输出。
result = [output["sentences"][0]["openie"] for item in output]
for i in result:
for rel in i:
relationSent=rel['subject'],rel['relation'],rel['object']
print(relationset)
希望这会有所帮助。