2015-04-30 2 views
0

Я использую Stanford Log-linear Part-Of-Speech Tagger и вот образец фраза, что я помечать:Почему теги алгоритмов тегов POS `can't` как отдельные слова?

Он не может сделать это

Когда меченой я получаю этот результат:

He_PRP ca_MD n't_RB do_VB that_DT

Как вы можете видеть, can't разделен на tw o words, ca отмечен как Модальный (MD), а n't помечен как ADVERB (RB)?

я на самом деле получить тот же результат, если я использую can not отдельно: can является MD и not является RB, так это способ расставания, как ожидается, вместо того, чтобы сказать, как нарушение can_MD и 't_RB?

ответ

1

Примечание: Это не идеальный ответ.
Я думаю, что проблема исходит из Tokenizer, используемого в Stanford POS Tagger, а не из самого тегатора. токенизатор (PTBTokenizer) не может правильно обрабатывать апостроф:
1- Stanford PTBTokenizer token's split delimiter.
2- Stanford coreNLP - split words ignoring apostrophe.
Как упоминалось здесь Stanford Tokenizer, то PTBTokenizer будет размечает предложение: «! Наш $ 400 блендер не может обрабатывать что-то в этом жесткий»

«О, нет,» она говорит,

к:

......
наш
$ блендер
ча
не
ручка
что-то

Попробуйте найти подходящий метод токенизации и применить это к Tagger следующим образом:

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, может = MD, «т = VB, делать = VB, то = DT, =. ,

+0

Спасибо, я мог бы рассмотреть этот подход. Но он производит отличный результат, чем оригинал - отмечает '' t' как VB вместо 'RB' - так что, возможно, я буду придерживаться оригинальной токенизации. –

+0

Это не проблема, а выбор. Мы выбираем следовать за частью Penn Treebank набора речевых меток и, следовательно, токенизации .... –

Смежные вопросы