簡単な問題から始めましょう。350 文字のセンテンスがあり、そのセンテンスを「機嫌が良い」バケットまたは「機嫌が悪い」バケットのいずれかに分類したいとします。
文をバケット化するアルゴリズムを設計する最良の方法は何ですか?
簡単な問題から始めましょう。350 文字のセンテンスがあり、そのセンテンスを「機嫌が良い」バケットまたは「機嫌が悪い」バケットのいずれかに分類したいとします。
文をバケット化するアルゴリズムを設計する最良の方法は何ですか?
一連の文を気分ごとに手作業で分類します。次に、これらを単純ベイズ分類器にフィードします。SpamBayesのようなものを出発点として使用します。
文のドメインと必要な精度によっては、これは非常に難しい問題になる場合があります。感情分析に関する学術論文は数多くあります。良いスタートはここからかもしれません- 短くて古典的な論文です。
私が実行することをお勧めする手順は、徐々により良い分類子につながります。
いくつかのドキュメントを手作業で分類し、それらを使用して既製のアルゴリズムをトレーニングします。SVM を使用することをお勧めします (たとえば、WEKA で LibSVMを使用する、またはSVMLightを使用する) が、上記で提案したように、ナイーブ ベイまたはデシジョン ツリーも機能する可能性があります。
さらにいくつかのドキュメントを手動で分類し、ユニグラム ベースのモデルからより洗練されたモデル (バイグラムや品詞ベースなど) に移行します。これは、 TagHelper ツールを使用して非常に簡単に行うことができます。このツールは、テキストを取得し、これらの手法を使用して WEKA 対応ファイルに変換します。これにより、各用語のムードに何らかのコンテキストが追加されます (例: 「not」と「bad」vs.「not bad」)。
最後に、独自のルールと辞書を追加して、ドメイン固有の知識をアルゴリズムに追加できます。それらは、同じ分類エンジンの追加機能として、または追加の分類ステップとして表される場合があります。
単純で素朴な提案は、最初に各文を個々の単語に分割するか、正規表現を使用して両方の「ポジティブ」リストから特定の単語をスキャンすることです (例: 「好き」、「幸せ」、「できる」、「する」など) と「ネガティブ」リスト (「嫌い」、「悲しい」、「できない」、「しない」) を使用して、各文でどちらがより一般的かを判断し、それに応じてバケツに入れます。
要件とデータセットによっては、これで十分な場合もあれば、ベイジアン フィルタリングなどのより高度な手法を調査したい場合もあります。
そのような文章の束から機械学習を試してください。気分の指標としてのスマイリーなど、いくつかの機能を使用します。品質を観察し、機能セットを追加/変更します。