単語を数値IDにマップする辞書を使用します。語彙に10,000個のアイテムが含まれている場合、辞書は各単語を0〜9999の範囲の数値にマップし、すべての単語は長さ10,000のバイナリベクトルとして表され、1つの要素のみがアクティブになります。辞書。
単語ID以外の追加の機能が必要な場合は、これらを機能ベクトルの最後に追加できます。つまり、機能を10,000以上の大文字化機能、以前のタグ機能(上記のバイナリコーディングが必要)などにすることができます。 。
最後に、品詞タグ付けは、一連の独立した分類ではなく、構造化された予測問題のインスタンスです。これが学術的な演習以上のものになる場合は、構造化パーセプトロン、またはCRFやstruct-SVMなどの別の構造化学習方法に移行することをお勧めします。
編集:簡単な例
5語の語彙{the、cat、sat、on、mat}と、縮小されたタグセット{DET、N、V、PREP}があるとします。したがって、私の文は次のとおりです。
(The、DET)(cat、N)(sat、V)(on、PREP)(the、DET)(mat、N)。
ここで、各単語の特徴ベクトルが必要です。そこからタグを予測できるようにしたいと思います。単語IDインジケーター関数として機能0〜4を使用するので、機能0は「the」に対応し、機能1は「cat」に対応します。これにより、次の特徴ベクトルが得られます(->の後に目的の「クラス」またはタグが割り当てられます)。
[1 0 0 0 0] -> DET
[0 1 0 0 0] -> N
[0 0 0 0 0] -> V
...
これらをインスタンスとして扱い、選択した学習アルゴリズムをこのタスクに適用することはできますが、単語ID関数だけではあまり購入できません。HMMのような直感を分類に取り入れたいと思ったので、前のタグが何であったかを示す機能関数も追加します。したがって、このための指標として機能5〜8を使用し、5はDETに対応し、6はNに対応します。今私は次のものを持っています:
[1 0 0 0 0 0 0 0 0] -> DET (because this is the first word there's no previous tag)
[0 1 0 0 0 1 0 0 0] -> N
[0 0 0 0 0 0 1 0 0] -> V
これで、単語が大文字であるかどうかを示すために機能9を使用して、心のコンテンツに機能を追加し続けることができます。機能10は、単語が既知の適切な名詞のリストと一致するかどうかなどです。構造化された予測タスクと方法、このタスク用にカスタマイズされたモデルを使用することがなぜ優れているのかを理解する必要があります(最も簡単なのはHMMですが、最先端のパフォーマンスのためにCRF/構造化パーセプトロン/StructSVMに進みたいです)これを処理するよりも優れています独立した決定の束として。