20

私は 500 語程度の長さの短編小説をたくさん持っており、それらを 20 のカテゴリのいずれかに分類したいと考えています。

  • エンターテイメント
  • 食べ物
  • 音楽

それらの束を手作業で分類することはできますが、最終的には機械学習を実装してカテゴリを推測したいと考えています。これにアプローチする最良の方法は何ですか?使用すべき機械学習への標準的なアプローチはありますか? 決定木はテキスト データなのでうまく機能しないと思います...私はこの分野ではまったくの初心者です。

どんな助けでも大歓迎です、ありがとう!

4

8 に答える 8

24

単純なベイズはおそらくあなたのために働くでしょう。メソッドは次のようになります。

  • いくつかのカテゴリを修正し、(ドキュメント、カテゴリ) ペアのトレーニング データ セットを取得します。
  • ドキュメントのデータ ベクトルは、単語の袋のようになります。たとえば、「the」、「and」などの単語を除く、最も一般的な 100 の単語を取り上げます。各単語は、データ ベクトルの固定コンポーネントを取得します (たとえば、"food" は位置 5 です)。特徴ベクトルはブール値の配列であり、それぞれがその単語が対応するドキュメントに登場したかどうかを示します。

トレーニング:

  • トレーニング セットについて、すべての特徴とすべてのクラスの確率を計算します: p(C) = クラス C のドキュメント数 / ドキュメントの総数。
  • クラス内の特徴の確率を計算します: p(F|C) = 特定の特徴を持つクラスのドキュメント数 (= 「食べ物」という単語がテキスト内にある) / 特定のクラスのドキュメント数。

決断:

  • 未分類のドキュメントがクラス C に属する確率は、P(C|F1, ..., F500) = P(C) * P(F1|C) * P(F2|C) * .. に比例します。 . * P(F500|C)。この項を最大化する C を選択します。
  • 乗算は数値的に難しいため、同じ C で最大化される対数の合計を代わりに使用できます: log P(C|F1, ..., F500) = log P(C) + log P(F1|C ) + log P(F2|C) + ... + log P(F500|C)。
于 2010-04-23T08:11:32.150 に答える
10

何万もの短い文章を分類してきました。私が最初に行ったことは、tf-idf ベクトル空間モデルを使用してから、それらのベクトルに対して k-means クラスタリングを行うことでした。これは、データセットを適切に処理するための探索的データ分析の非常に優れた最初のステップです。クラスタ化に使用したパッケージは cluto でした: http://glaros.dtc.umn.edu/gkhome/views/cluto/

tf-idf を行うために、英数字以外をトークン化する簡単なスクリプトを perl で書きました。次に、すべてのドキュメントは単語の袋で構成されます。すべてのドキュメントは、含まれる単語のベクトルとして表されます。ベクトルの各インデックスの値は、用語頻度 (tf) * 逆ドキュメント頻度 (idf) です。これは、ドキュメント内のその単語/用語の数に、その単語を含むドキュメントの割合の逆数を掛けた積です。("the" のような単語は非常に情報量が少ないためです。)

この方法では、すぐに約 80% ~ 90% の精度が得られます。次に、正しいもの (または、さらに重要なことに、間違っているもの) に手動でラベルを付け、必要に応じて教師あり学習を行うことができます。

于 2010-04-25T19:42:09.870 に答える
6

「自動テキスト分類における機械学習」(Google で PDF ファイルをダウンロードできます) は読む価値があると思います。この論文では、2 つの重要な部分について説明しました。1 つは特徴選択 (テキストを特徴空間に変換する) で、もう 1 つは特徴空間で分類器を構築するためです。多くの特徴選択方法といくつかの分類方法 (デシジョン ツリー、単純ベイズ、kNN、SVM など) があります。いくつかの組み合わせを試して、データセットで機能しているかどうかを確認できます。
以前も似たようなことをしました。テキスト操作、機能の選択、機能の重み付けには Python を使用しています。分類器のオレンジ。Orange と Weka にはすでに naive Bayes や kNN... が含まれていましたが、最近では Python スクリプトで直接分類器を作成することもできます。それほど難しくはないはずです。
お役に立てれば。

于 2010-04-23T07:16:54.383 に答える
3

ほとんどの人は、統計的テキスト分析 (ナイーブ ベイズ アプローチのような) が標準的なアプローチであると言うでしょう: 「統計的自然言語処理の基礎」、Manning と Schuetze、「Speech and Language Processing」、Jurafsky と Martin が標準的な参考文献です。統計テキスト分析は、シンボリック システムよりも簡単に優れているため、90 年代後半に標準的なアプローチになりました。ただし、一部の記号システムには統計要素が組み込まれており、実際にはコネクショニスト アプローチを使用することもできます (これを示す論文がいくつかあります)。コサイン類似度 (k-Nearest Neighbor の形式) を使用することもできますが、通常はナイーブ ベイズが最高のパフォーマンスを発揮します。

http://www.cs.utexas.edu/users/hyukcho/classificationAlgorithm.html ドットコム プロジェクトで書いた検索エンジンのプロトタイプのテキスト分類に、そのページに記載されている虹を使用しました

于 2011-01-15T16:14:14.213 に答える
2

将来、さらに500の分類を行う可能性がない限り、機械学習のアプローチを採用するかどうかはわかりません。

カテゴリが非常に類似していない限り(例として「食品」と「イタリア料理」)、非常に単純なヒューリスティックが非常にうまく機能すると思います。

カテゴリごとに一般的な単語の表を作成し(食品の場合:「ジャガイモ」、「食品」、「料理」、「トマト」、「レストラン」など)、テキスト数ごとに、どのカテゴリが最も多くの単語に一致したかを示します。手作業で辞書を作成する代わりに、テキストのサンプル(たとえば、100)を取得し、手作業で分類してから、アルゴリズムに単語を選択させてから、すべてのセットに共通する単語を削除することができます(情報を提供しない)。これは、本質的に、非常に単純な「学習」システムです。

機械学習システムが本当に必要な場合は、分類する方法がいくつかあります。欠点は、ほとんどのメソッドの実装は非常に簡単ですが、難しいのは、適切なメソッド、適切な機能、および適切なパラメーターを選択することです。

于 2010-04-23T06:12:39.960 に答える
2

Wekaを試してみてください...これは、多くの機械学習アルゴリズムを実装する無料のデータ マイニング ツールです。これには GUI と API があるため、データ セットに対して直接使用することも、それに対してプログラミングすることもできます。

さまざまな機械学習アルゴリズムの結果が気に入っていて、独自のアルゴリズムを実装することに興味がある場合は、最も気に入ったアルゴリズムを実装できます。これは、ML/AI アルゴリズムを構築する前に通常感じる「実際に機能するかどうか」という感覚の一部を取り除くのにも役立ちます。

于 2010-04-23T06:24:36.607 に答える
0

既製のものを探している場合は、SQLServerでMicrosoftのデータマイニングアルゴリズムを試してみることをお勧めします。

http://msdn.microsoft.com/en-us/library/ms175595%28v=SQL.100%29.aspx

http://www.sqlserverdatamining.com

于 2010-04-26T23:06:46.687 に答える