我注意到斯坦福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
。使用colour
或harbours
等字词也会发生同样的事情。
有没有办法防止这种行为?我不介意它在引理中,但我想得到原始的单词,所以偏移匹配。
答案 0 :(得分:3)
在CoreNLP的代码中,您要添加属性:
props.put("tokenize.options", "americanize=false");