15

重複の可能性:
カテゴリへのテキストの分類

私は現在、説明に基づいて 10,000 軒のレストランのデータベースで提供される食品の種類を取得するソリューションに取り組んでいます。キーワードのリストを使用して、提供する料理の種類を決定しています。

機械学習について少し読んだことがありますが、実際の経験はまったくありません。このような単純な問題に対するより良い解決策であるかどうか/なぜそれが良いのか、誰かが私に説明できますか? パフォーマンスよりも精度が重要だと思います!

簡単な例:

["China", "Chinese", "Rice", "Noodles", "Soybeans"]
["Belgium", "Belgian", "Fries", "Waffles", "Waterzooi"]

可能な説明は次のとおりです。

「Hong's Garden Restaurant では、風味豊かで手頃な価格の中華料理をお客様に提供しています。土曜の夜 8 時に突然 ご飯麺類大豆が食べたくなったとしても、ご心配なく! 年中無休で営業しています。フライドポテトもここで買えます!

4

1 に答える 1

57

あなたは確かに、機械学習で解決できる分類問題を説明しています。

この問題では、あなたの特徴は説明の中の言葉です。Bag Of Wordsモデルを使用する必要があります。これは、基本的に、単語と各単語の出現回数が分類プロセスにとって重要であると述べています。

問題を解決するには、次の手順を実行する必要があります。

  1. 特徴抽出器を作成します。レストランの説明を指定すると、このレストランの「特徴」(上記で説明したBag Of Wordsモデルの下)が返されます(文献では例として示されています)。
  2. 一連の例に手動でラベルを付けます。それぞれに目的のクラス(中国、ベルギー、ジャンクフードなど)のラベルが付けられます。
  3. ラベル付けされた例を学習アルゴリズムにフィードします。分類器を生成します。個人的な経験から、SVMは通常最良の結果をもたらしますが、ナイーブベイズニューラルネットワークディシジョンツリー(通常はC4.5が使用されます)などの他の選択肢があり、それぞれに独自の利点があります。
  4. 新しい(ラベルのない)例(レストラン)が来ると、特徴を抽出して分類器にフィードします。それは、それが何であると考えているか(そして通常は分類器が正しい確率はどれくらいか)を教えてくれます。

評価:
アルゴリズムの評価は、相互検証、またはアルゴリズムの精度を評価するためにのみ使用されるラベル付きの例からテストセットを分離することで実行できます。


最適化:

個人的な経験から-特徴抽出に役立つと私が見つけたいくつかの最適化は次のとおりです。

  1. ストップワードをステミングして排除することは、通常、大いに役立ちます。
  2. バイグラムを使用すると、精度が向上する傾向があります(ただし、フィーチャスペースが大幅に増加します)。
  3. 一部の分類器は大きな特徴空間(SVMは含まれていません)になりがちですが、特徴の次元を減らすなど、それを克服するいくつかの方法があります。PCAはそれを助けることができる1つのものです。Genethic Algorithmsは、(経験的に)サブセット選択にも非常に適しています。

ライブラリ:

残念ながら、私はPythonに精通していませんが、役立つ可能性のあるライブラリを次に示します。

  • Luceneは、テキスト分析で大いに役立つ可能性があります。たとえば、ステミングはEnglishAnalyzerで実行できます。PyLuceneと呼ばれるPythonバージョンのluceneがあり、これが役立つと思います。
  • Wekaは、機械学習に役立つ多くの機能を実装するオープンソースライブラリです。多くの分類子と機能セレクターが含まれています。
  • Libsvmは、SVMアルゴリズムを実装するライブラリです。
于 2012-12-09T14:44:46.623 に答える