2017-08-15 46 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