CoreNLP正在返回比我们期望得到的更多的三元组,即整个句子或短语,而不是构成句子所传达的基本或基本信息的一个或两个三元组。
例如,在句子中:
"初步诊断由Roy Coy MD通知Tom博士 2011年11月11日16:00 CDT。"
我们期待这个三重奏:
preliminary diagnosis; be notify to; Dr. Tom
但是我们得到这样的三倍:
1.0 diagnosis be notify by Roy Coy MD at 16:00 cdt on 11/11/2011
1.0 diagnosis be notify to Dr. Tom at 16:00 cdt on 11/11/2011
1.0 preliminary diagnosis be notify to Dr. Tom
除基本信息外还包含其他详细信息。在极端情况下,CoreNLP返回整个原始句子。
为了将CoreNLP输出降低到基本三元组,我们可以改变哪些参数?我们已经尝试了最大数量的蕴涵和三重严格集,但它们不起作用。我们可以提供一个包含完整三元组列表的文件。
Java代码:
java -mx1g -cp stanford-openie.jar;stanford-openie-models.jar;slf4j-api.jar edu.stanford.nlp.naturalli.OpenIE -openie.max_entailments_per_clause= 1 -openie.triple.strict= true -openie.splitter.disable=true
答案 0 :(得分:0)
实际上,这是设计的。它并不总是先验清楚人们对OpenIE系统所需的粒度级别,因此我们的系统会尝试生成所有级别的粒度。这里的预期用途是生成可以在数据库中查找的三元组。因此,如果有人询问非常具体的查询,则返回更长的三元组。如果有人问一个简单的查询,我们会返回简单的三元组(并不重要的是它们旁边有一些较长的查询)。