我对斯坦福CoreNLP OpenIE注释器有疑问。
我正在使用Stanford CoreNLP版本 stanford-corenlp-full-2015-12-09 ,以便使用OpenIE提取关系。我不太了解Java,这就是我使用Python 3.4的import nltk
from pycorenlp import *
import collections
nlp=StanfordCoreNLP("http://localhost:9000/")
s="Twenty percent electric motors are pulled from an assembly line"
output = nlp.annotate(s, properties={"annotators":"tokenize,ssplit,pos,depparse,natlog,openie",
"outputFormat": "json","triple.strict":"true"})
result = [output["sentences"][0]["openie"] for item in output]
print(result)
for i in result:
for rel in i:
relationSent=rel['relation'],rel['subject'],rel['object']
print(relationSent)
包装器的原因。
我想提取句子中所有单词之间的关系,下面是我使用的代码。我也有兴趣展示每个三胞胎的信心:
[[{'relationSpan': [4, 6], 'subject': 'Twenty percent electric motors', 'objectSpan': [8, 10], 'relation': 'are pulled from', 'object': 'assembly line', 'subjectSpan': [0, 4]}, {'relationSpan': [4, 6], 'subject': 'percent electric motors', 'objectSpan': [8, 10], 'relation': 'are pulled from', 'object': 'assembly line', 'subjectSpan': [1, 4]}, {'relationSpan': [4, 5], 'subject': 'Twenty percent electric motors', 'objectSpan': [5, 6], 'relation': 'are', 'object': 'pulled', 'subjectSpan': [0, 4]}, {'relationSpan': [4, 5], 'subject': 'percent electric motors', 'objectSpan': [5, 6], 'relation': 'are', 'object': 'pulled', 'subjectSpan': [1, 4]}]]
这是我得到的结果:
('are pulled from', 'Twenty percent electric motors', 'assembly line')
('are pulled from', 'percent electric motors', 'assembly line')
('are', 'Twenty percent electric motors', 'pulled')
('are', 'percent electric motors', 'pulled')
三胞胎是:
('are pulled from', 'Twenty percent electric motors', 'assembly line')
第一个问题是结果中没有表现出信心。第二个问题是我只想检索包含句子中所有单词的三元组,即这个三元组:
"triple.strict":"true"
我得到的不仅仅是三胞胎组合。我尝试使用选项{{1}},因为只有当它们消耗整个片段时它才会提取三倍"但它不起作用。
有人可以就此提出建议吗?
答案 0 :(得分:5)
您应该尝试以下设置:
"openie.triple.strict":"true"
查看此时出现的代码,置信度不会与返回的json一起存储,因此您无法从CoreNLP服务器获取该信息。
由于你提出这个问题,我会推出一个更改,将这些更改添加到输出json中,并让你知道它何时在GitHub上运行。
答案 1 :(得分:2)
非常感谢,它现在正在运行我添加了两个:“openie.triple.strict”:“true”和“openie.max_entailments_per_clause”:“1”代码现在是:
output = nlp.annotate(chunkz, properties={"annotators":"tokenize,ssplit,pos,depparse,natlog,openie",
"outputFormat": "json",
"openie.triple.strict":"true",
"openie.max_entailments_per_clause":"1"})