我有以下方法返回一个带有POS标记的句子:
String Sentence = "STEERING COLUMN MOVES"
MaxentTagger taggerObject = new MaxentTagger("left3words-wsj-0-18.tagger");
String TaggedSentence = getTaggedSentence(Sentence, taggerObject);
在Windows环境中,单词"STEERING COLUMN"返回:NN NN(正确)然而,在MapReduce中实现的相同代码返回:VBG NN
由于某些原因,当我在MapReduce的Mapper类中调用这个方法时,它将STEERING和COLUMN标记为单独的对象/概念,而不是一个。
90%在MapReduce中标记的对象匹配Windows。10%是不正确的,90%的不正确的标签中有单词STEERING。
例子:
Object | Windows | MapReduce (Linux)
---------------------------------------------------------------------
STEERING COLUMN | NN NN | VBG NN
STEERING WHEEL | NN NN | VBG NN
POWER STEERING | NN NN | NN VBG
任何关于调试这些差异的指导将不胜感激!
事实证明,在Java 8中标注器更准确。
Windows版本运行在Java 8中,而MapReduce版本运行在Java 7中。