6

私はテキスト分類の問題に取り組んでいます。単語のコレクションをカテゴリに分類しようとしています。はい、分類に使用できるライブラリはたくさんあります。それらを使用することを提案している場合は、答えないでください。

何を実装したいのか説明させてください。(例をとる)

単語のリスト:

  1. java
  2. プログラミング
  3. 言語
  4. Cシャープ

カテゴリのリスト。

  1. java
  2. Cシャープ

ここでは、次のようにセットをトレーニングします。

  1. javaはカテゴリ1にマップされます。java
  2. プログラミングはカテゴリ1.javaにマップします
  3. プログラミングはカテゴリ2.cにマップされます-シャープ
  4. 言語はカテゴリ1.javaにマップされます
  5. 言語はカテゴリ2.cにマップされます-シャープ
  6. c-sharpはカテゴリ2にマップされます。c-sharp

これで、与えられたフレーズから「最高のJavaプログラミングブック」というフレーズができました。次の単語は、「単語のリスト」と一致します。

  1. java
  2. プログラミング

「プログラミング」には、「java」と「c-sharp」の2つのマップされたカテゴリがあるため、一般的な単語です。

「java」はカテゴリ「java」にのみマップされます。

したがって、このフレーズに一致するカテゴリは「java」です。

これが私の頭に浮かんだことです。このソリューションは問題ありません。実装できますか、あなたの提案は何ですか、私が見逃していること、欠陥などです。

4

3 に答える 3

4

もちろん、これは実装できます。単純ベイズ分類器または線形SVMを適切なデータセット(JavaおよびC#プログラミングブックのタイトルだと思います)でトレーニングする場合、「Java」という用語をJavaに、「C#」および「.NET」をC#に関連付けることを学ぶ必要があります。 、および両方を使用した「プログラミング」。つまり、単純ベイズ分類器は、データセットが均等に分割されている場合、「プログラミング」などの一般的な用語について、JavaまたはC#のほぼ均等な確率を学習する可能性があります。

于 2011-11-15T13:06:09.343 に答える
1

これを実装する簡単な方法は、ストレートアップのLucene(または任意のテキストインデックスエンジン)を使用することです。すべての「java」の例を含む単一のLuceneドキュメントと、「c#」の例を含む別のドキュメントを作成し、両方をインデックスに追加します。新しいドキュメントを分類するには、またはドキュメント内のすべての用語をORして、インデックスに対してクエリを実行し、スコアが最も高いカテゴリを取得します。

于 2011-11-15T15:22:23.990 に答える
0

可能であれば、「集合知プログラミング」という本の「ドキュメントフィルタリング」の章にある「単純な分類器」というセクションを読んでください。例はPythonですが、それがあなたにとってそれほど問題にならないことを願っています。

于 2011-11-15T13:14:40.120 に答える