实体关系提取Stanford CoreNLP

时间:2018-09-28 19:24:53

标签: python parsing stanford-nlp pycorenlp

请尝试从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)))))))

1 个答案:

答案 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)

希望这会有所帮助。