2015-04-30 61 views
0

我使用Stanford Log-linear Part-Of-Speech Tagger,這裏是我的標籤樣品一句話:爲什麼POS標籤算法標籤`不能'作爲單獨的單詞?

他不能這樣做,

標籤化時我得到這樣的結果:

He_PRP ca_MD n't_RB do_VB that_DT

正如你所看到的,can't被分成tw o詞,ca被標記爲模態(MD),並且n't被標記爲ADVERB(RB)?

我居然得到同樣的結果,如果我使用can not分開:can是MD和not是RB,所以分手的這種方式有望代替說破喜歡can_MD't_RB

回答

1

注意:這不是完美的答案。
我認爲問題來自Stanford POS Tagger中使用的Tokenizer,而不是來自標記器本身。 Tokenizer(PTBTokenizer)無法正確處理撇號:
1- Stanford PTBTokenizer token's split delimiter
2- Stanford coreNLP - split words ignoring apostrophe
當他們在這裏Stanford Tokenizer提到的,PTBTokenizer會在標記化的句子:「我們的$ 400攪拌機不能處理這個東西很難 」

「哦,不,」她說,

到:

......
我們
$ 攪拌機
CA

手柄
東西

嘗試找到合適的標記化方法並應用它的惡搞如下:

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() + " , "); 

      } 

     } 

} 

輸出:

他= PRP,可以= MD,「T = VB,做= VB,即= DT =。 ,

+0

謝謝,我可能會考慮這種方法。但它產生的結果與原來的結果不同 - 將VB標記爲「RB」而不是「RB」 - 所以也許我會堅持原始標記化。 –

+0

這不是一個問題,而是一個選擇。我們選擇遵循Penn Treebank語音標籤集的一部分,從而實現標記化.... –

相關問題