2017-08-15 40 views
0

我建立了一个CoreNLP服务器,并使用斯坦福NER从句子中提取时间段。为什么斯坦福大学NER演示将“今年”转换为2017年,而我的CoreNLP服务器却没有?

如果我使用的在线互动演示在corenlp.run解析句子

“去年发生了一些事情。”

it shows 'DATE' and '2016'。 但是,我自己的服务器搭载最新版本的CoreNLP,only shows 'DATE'。更重要的是,当我使用Python请求以相同语句查询我的服务器的API时,响应中的前两个令牌包含字段'timex': {'type': 'DATE','tid': 't1', 'altValue': 'THIS P1Y OFFSET P-1Y'}'normalizedNER': 'THIS P1Y OFFSET P-1Y'

如果我只是不得不面对的事实,我的输出并不像演示的,那么哪里是斯坦福NER或timex3文档解释什么THIS P1Y OFFSET P-1Y手段或描述什么其他可能的回答,我可能在normalizedNER领域得到良好?

这里是整个API响应

[ 
{'word': 'Last', 'after': ' ', 'originalText': 'Last', 'timex': {'type': 'DATE', 'tid': 't1', 'altValue': 'THIS P1Y OFFSET P-1Y'}, 'pos': 'JJ', 'ner': 'DATE', 'lemma': 'last', 'normalizedNER': 'THIS P1Y OFFSET P-1Y', 'before': '', 'index': 1, 'characterOffsetBegin': 0, 'characterOffsetEnd': 4}, 
{'word': 'year', 'after': ' ', 'originalText': 'year', 'timex': {'type': 'DATE', 'tid': 't1', 'altValue': 'THIS P1Y OFFSET P-1Y'}, 'pos': 'NN', 'ner': 'DATE', 'lemma': 'year', 'normalizedNER': 'THIS P1Y OFFSET P-1Y', 'before': ' ', 'index': 2, 'characterOffsetBegin': 5, 'characterOffsetEnd': 9}, 
{'word': 'something', 'before': ' ', 'originalText': 'something', 'ner': 'O', 'lemma': 'something', 'after': ' ', 'characterOffsetEnd': 19, 'index': 3, 'characterOffsetBegin': 10, 'pos': 'NN'}, 
{'word': 'happened', 'before': ' ', 'originalText': 'happened', 'ner': 'O', 'lemma': 'happen', 'after': '', 'characterOffsetEnd': 28, 'index': 4, 'characterOffsetBegin': 20, 'pos': 'VBD'}, 
{'word': '.', 'before': '', 'originalText': '.', 'ner': 'O', 'lemma': '.', 'after': '', 'characterOffsetEnd': 29, 'index': 5, 'characterOffsetBegin': 28, 'pos': '.'} 
] 
+0

[这](https://stackoverflow.com/questions/39325657/why-does-normalizedner-for-dates-in-my-local-standford-corenlp-server-doesnt-di)可能会有所帮助。 –

回答

0

您好我添加了一个新功能,让您可以告诉管道使用当前日期作为运行时,docDate,这是你的问题的主要来源。要获得此功能,您必须使用GitHub上提供的最新版本的Stanford CoreNLP。

此外,当你启动服务器,你将不得不使用-serverProperties选项,并用这些属性提供一个.properties文件:

annotators = tokenize,ssplit,pos,lemma,ner,entitymentions 
ner.usePresentDateForDocDate = true 

如果你做到这一点应该现在的工作,妥善列出2016

+0

谢谢!我会试试这个。我解析的一些句子是在过去的日期说出的,有没有办法为不同的句子选择不同的当前日期? –

+0

这似乎并没有解决我在API响应的normalizedNER字段中获得此P1Y OFFSET P-1Y的问题 –

0

如果您仔细查看交互式演示中对corenlp服务器的请求,则会看到当前日期也作为“date”参数发送给请求。 例如。如果你的句子是“今天我去上学了”,那么“今天”已经正常化的是“2017-19-09”(当前日期)。 如果你不通过“日期”参数,“今天”将不会有正常日期的确切日期。

希望它是有道理的。 enter image description here

相关问题