我使用的是斯坦福日志-线性词性标注器,下面是我标记的示例语句:
他不能那样做
标记后,我得到了这样的结果:
He_PRP ca_MD n_RB do_VB that_DT
如您所见,can't被分成两个单词,ca标记为Modal (MD),n't标记为副词(RB)?
如果单独使用can not,我实际上得到了相同的结果:can是MD,not是RB,所以这种分手方式是预期的,而不是像can_MD和't_RB那样中断。
发布于 2015-04-30 21:36:32
注:这不是完美的答案。
我认为问题的根源是斯坦福POS标签所使用的托肯器,而不是标签本身。托卡器(PTBTokenizer)不能正确处理撇号:
正如他们在这里提到的,斯坦福托卡器,PTBTokenizer将标记这个句子:
“哦,不,”她说,“我们价值400美元的搅拌机处理不了这么难的事情!”
至:
. 我们的 $ 400 搅拌机 ca n t 手柄 某物
尝试找到合适的标记化方法,并将其应用于标记器,如下所示:
import java.util.List;
import edu.stanford.nlp.ling.HasWord;
import edu.stanford.nlp.ling.Sentence;
import edu.stanford.nlp.ling.TaggedWord;
import edu.stanford.nlp.tagger.maxent.MaxentTagger;
public class Test {
public static void main(String[] args) throws Exception {
String model = "F:/code/stanford-postagger-2015-04-20/models/english-left3words-distsim.tagger";
MaxentTagger tagger = new MaxentTagger(model);
List<HasWord> sent;
sent = Sentence.toWordList("He", "can", "'t", "do", "that", ".");
//sent = Sentence.toWordList("He", "can't", "do", "that", ".");
List<TaggedWord> taggedSent = tagger.tagSentence(sent);
for (TaggedWord tw : taggedSent) {
System.out.print(tw.word() + "=" + tw.tag() + " , " );
}
}
}产出:
He=PRP,can=MD,t=VB,do=VB,that=DT,.=.
https://stackoverflow.com/questions/29976457
复制相似问题