2016-11-06 8 views
1

私はStanford NLPを使用しましたが、より厳格なライセンス条項(GPLとして記載されていますが、非営利プロジェクトのみに使用できる)のため、Apache Open NLPを評価しています。ApacheオープンNLP POS不適切なタグ付け

私は基本的なサンプルテストを試して、品詞がOpen NLPで間違ってタグ付けされていることがわかりました。 例:「load」、「loading」のような言葉は、実際には動詞のようにNNとしてマークされています。

誰もがこの問題に直面しましたか?私はオープンNLPの辞書をチェックし、それが予測の方法論を使用していますaccuracy.Because OpenNLPが100%を保証するものではありませんので、私は、NN

サンプルコード

InputStream inputStream = getClass().getResourceAsStream("/opennlp/en-pos-maxent.bin"); 
     System.out.println(" inputStream " + inputStream); 

     POSModel posModel = null; 
     try { 
      posModel = new POSModel(inputStream); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     POSTaggerME posTaggerME = new POSTaggerME(posModel); 

     String whitespaceTokenizerLine[] = WhitespaceTokenizer.INSTANCE.tokenize("Chair damaged during loading:"); 

     String[] tags = posTaggerME.tag(whitespaceTokenizerLine); 


     IntStream.range(0, tags.length).forEach(i -> System.out.println(" POS " + tags[i])); 
+0

どのようにこれらの単語をテストしましたか?別の文字列として?部分的な文字列を渡すと、スタンフォードNLPでさえ間違えてしまいます。 –

+0

私は文書の中で示唆されているようにStringの配列として渡しました – lives

+0

あなたのコードを共有できますか? 1.5.xまたは1.6を使用していますか? –

答えて

-1

これが可能であるとマークされたいくつかの動詞を見つけました。結果を予測してフィーチャを見ます。これはposタグを意味します。これは、検出されるべき単語の近くのposタグの関係を表します。したがって、すべての予測はトレーニングデータセットに依存します。適切なトレーニングデータセットを得るには、トレーニングデータセットに15,000行が必要です。他の選択肢はありません。 あなたは、Apache開発者によって訓練された、事前に訓練されたモデルで文章をテストしています。したがって、事前に訓練されたモデルを訓練するために使用されたデータとデータとの不一致の結果があるかもしれません。だから私はあなたのデータで新しいモデルを訓練することをお勧めします。それは予測確率を増加させます。

注:新しいモデルをトレーニングする方法については、ドキュメントを参照してください。それはきれいに説明します。

関連する問題