Добыча сущностных отношений Stanford CoreNLP
Пожалуйста, я пытаюсь сделать извлечение отношений из разбора предложения в виде текста в формате PDF. Я использовал ядро stanford coreNLP с pycorenlp для python, чтобы разобрать предложение. Теперь я хочу извлечь предметный глагол и объект из этого дерева разбора.
Вот пример моих данных: "Марк Роберт является основателем 3trucks. 3trucks была основана в 2010 году
Вот что я хочу получить: ("Марк Роберт", основатель "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 ответов
Вы можете включить "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)
Надеюсь это поможет.