2

ドキュメントを分類するドキュメント分類器を構築しています。

したがって、最初のステップは、トレーニング目的で各ドキュメントを「特徴ベクトル」として表すことです。

調査の結果、Bag of Words アプローチまたは N-gram アプローチのいずれかを使用して、ドキュメントをベクトルとして表現できることがわかりました。

各ドキュメント (スキャンされた PDF と画像) のテキストは OCR を使用して取得されるため、一部の単語にはエラーが含まれています。また、これらのドキュメントで使用されている言語についての予備知識もありません (ステミングは使用できません)。

したがって、私が理解している限り、n-gram アプローチを使用する必要があります。または、ドキュメントを表す他のアプローチはありますか?

また、より明確な全体像を把握し、それがどのように機能するかを理解するために、誰かが私を N-Gram ガイドにリンクしていただければ幸いです。

前もって感謝します

4

1 に答える 1

9
  1. 言語検出を使用してドキュメントの言語を取得します (私のお気に入りのツールはTika プロジェクトのLanguageIdentifierですが、他にも多くのツールが利用可能です)。
  2. スペル修正を使用します(詳細については、この質問を参照してください)。
  3. 語幹(Java 環境で作業している場合は、Luceneを選択してください)。
  4. すべてのN グラムを収集します(以下を参照)。
  5. 特定のドキュメントから n-gram を抽出して、分類のインスタンスを作成します
  6. 分類器を構築します。

N-gram モデル

N-gram は N 個の項目の単なるシーケンスです。トピックによる分類では、通常、単語またはその語根の N グラムを使用します (ただし、文字の N グラムに基づくモデルはあります)。最も一般的な N グラムは、ユニグラム (単なる単語)、バイグラム (2 つの連続した単語)、およびトライグラム (3 つの連続した単語) です。では、文面から

こんにちは、私の名前はフランクです

次のユニグラムを取得する必要があります。

[hello, my, name, is, frank] (または [hello, I, name, be, frank]、ルートを使用する場合)

次のバイグラム:

[hello_my, my_name, name_is, is_frank]

等々。

最後に、特徴ベクトルの位置 (次元) は、すべてのテキストに含まれる単語数に未知の単語の 1 を加えた数になります。インスタンス ベクトル内のすべての位置は、インスタンス テキスト内の対応する単語の数をなんらかの方法で反映する必要があります。これは、出現回数バイナリ機能(単語が出現する場合は 1、それ以外の場合は 0)、正規化された機能、またはtf-idf (トピックによる分類で非常に一般的) の場合があります。

分類プロセス自体は、他のドメインと同じです。

于 2012-08-21T01:08:23.877 に答える