0

请尝试从 pdf 中的解析句子中提取关系。我使用 stanford coreNLP 和 python pycorenlp 来解析句子现在我想从这个解析树中提取主语动词和宾语

这是我的数据示例:'Mark Robert 是 3trucks 的创始人。3trucks成立于2010年'

这是我想要的输出:('Mark Robert',创始人,'3truck')('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)))))))
4

1 回答 1

3

您可以在注释器列表中包含“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)

希望这可以帮助。

于 2019-02-12T09:31:23.543 回答