阻止斯坦福CoreNLP美国化输入

时间:2015-07-15 20:09:30

标签: nlp stanford-nlp

我注意到斯坦福CoreNLP正在美国化输入,这打破了我的一些代码,因为字符偏移不再累加。

我使用以下代码:

String annotators = "tokenize, ssplit, pos, lemma, ner, parse, dcoref";
Properties props = new Properties();
props.put("annotators",annotators);
this.pipeline = new StanfordCoreNLP(props);
this.annotators = annotators;
Annotation document = new Annotation(text);
pipeline.annotate(document);
pipeline.prettyPrint(document, resp.getWriter());

使用以下输入:

But, at the other end of the town, in his own little hut, there dwelt an honourable laborer.

我明白了:

[...]
[Text=an CharacterOffsetBegin=70 CharacterOffsetEnd=72 PartOfSpeech=DT]    
[Text=honorable CharacterOffsetBegin=73 CharacterOffsetEnd=83 PartOfSpeech=JJ] 
[Text=laborer CharacterOffsetBegin=84 CharacterOffsetEnd=91 PartOfSpeech=NN]
[...]
(NP (DT an) (JJ honorable) (NN laborer))
[...]

请注意,输入中包含单词honourable,但输出中包含单词honorable。使用colourharbours等字词也会发生同样的事情。

有没有办法防止这种行为?我不介意它在引理中,但我想得到原始的单词,所以偏移匹配。

1 个答案:

答案 0 :(得分:3)

在CoreNLP的代码中,您要添加属性:

props.put("tokenize.options", "americanize=false");