2011-08-17 9 views
2

JavaでPOSタグを構築する必要があり、開始方法を知る必要があります。 POSタガーがどのように機能するかを示すコード例やその他のリソースはありますか?品詞タグを構築する(POS Tagger)

+0

nlpは難解な未解決の問題です。問題を扱っている記事を探して、いくつかの提案されたソリューションを選択して実装し、より良い結果をもたらすものを選択する必要があります。 – amit

+0

ええと... **あなたは一から自分自身を構築する**持っていますか?もしそうでなければ、あなたはAndreyまたはWColenが言いましたOpenNLPによってStanfordのものを使うことができます。スタンフォードの私の好み。それはかなりいいです。ビルドする必要がある場合は、宿題-yプロジェクトのように聞こえます。そうでなければ、本当にあなた自身のものを作る理由はない(私が少なくとも笑って考える理由はない)。 – dmn

+0

POSタガーの作成は大きな作業です。理想的には、注釈付きコーパスを取得し、構文解析し、トークンの頻度を取得し、推定値を取得し、データを平滑化してから、モデルを構築します。このモデルは、ロジットやHMMのようなものを使用して、既存の確率的データのみに基づいている場合や、フィーチャに依存する管理対象の介入やMaxentまたはPerceptronモデルを使用することができます。また、Brilleのようなルールベースのタグを使用することで、確率モデルを完全に回避することもできます。 –

答えて

3

既存のタグ付けの実装を調べることができます。

(クリスティーナToutanovaによる)は、Javaでのスタンフォード大学POSタガーに例えば参照してください、それはGNU一般公衆利用許諾契約書(後v2または)の下で提供され、ソースコードがよく書かれており、明確に文書化されています

http://nlp.stanford.edu/software/tagger.shtml

タギングについて読むこと

良い本です: 音声・言語処理(第2版)ダニエル・ジューラフスキーによって、ジェームズ・H.マーティン

+0

私は、スタンフォードPOSタガーが、その複雑な(そして一回限りの)確率モデルを前提にして、良い実装であるかどうかは分かりません。しかし、Jurafsky&Martinは読むべき本です。 –

4

Apache OpenNLPを試してみてください。これには、POS Taggerツールが含まれています。すぐに使える英語モデルはhereからダウンロードできます。

ドキュメントには、Javaアプリケーションからの使用方法の詳細が記載されています。基本的には次が必要です

InputStream modelIn = null; 

try { 
    modelIn = new FileInputStream("en-pos-maxent.bin"); 
    POSModel model = new POSModel(modelIn); 
} 
catch (IOException e) { 
    // Model loading failed, handle the error 
    e.printStackTrace(); 
} 
finally { 
    if (modelIn != null) { 
    try { 
     modelIn.close(); 
    } 
    catch (IOException e) { 
    } 
    } 
} 

は、POSタガーをインスタンス化

ロードPOSモデル

POSTaggerME tagger = new POSTaggerME(model); 

実行し、それ

String sent[] = new String[]{"Most", "large", "cities", "in", "the", "US", "had", "morning", "and", "afternoon", "newspapers", "."};   
String tags[] = tagger.tag(sent); 

POSタガーではトークン化された文が必要です。 Apache OpenNLPは、これらのタスクを支援するツールとモデルも提供しています。

独自のモデルを訓練する必要がある場合は、documentationを参照してください。