88

Textual Sentiment Analysishttp://en.wikipedia.org/wiki/Sentiment_analysis )のオープンソース実装、できればPythonでの実装を探しています。私が使用できるそのようなオープンソースの実装に精通している人はいますか?

Twitterで「youtube」などの検索用語を検索し、「幸せな」ツイートと「悲しい」ツイートをカウントするアプリケーションを作成しています。私はGoogleのappengineを使用しているので、Pythonで使用しています。Twitterから返された検索結果を分類できるようにしたいのですが、Pythonで分類したいと思います。私はこれまでそのような感情分析装置を見つけることができませんでした。特にPythonでは見つかりませんでした。私が使用できるそのようなオープンソースの実装に精通していますか?できれば、これはすでにpythonに含まれていますが、そうでない場合は、Pythonに変換できることを願っています。

注意してください、私が分析しているテキストは非常に短く、ツイートです。したがって、理想的には、この分類器はそのような短いテキスト用に最適化されています。

ところで、ツイッターは検索で「:)」と「:(」の演算子をサポートしています。これはまさにこれを目的としていますが、残念ながら、それらによって提供される分類はそれほど優れていないので、これを自分で試してみるかもしれないと思いました。

ありがとう!

ところで、初期のデモはここにあり、私がこれまでに持っているコードはここにあり、興味のある開発者と一緒にオープンソース化したいと思っています。

4

12 に答える 12

77

頑張ってください。

感情は非常に文脈に依存しており、ほとんどのツイートの文脈が与えられていないため、ツイート文化は問題を悪化させます. Twitter の要点は、共有された膨大な量の「現実世界」のコンテキストを活用して、意味のあるコミュニケーションを非常に短いメッセージに詰め込むことができることです。

ビデオが悪いと言う場合、それは悪いことですか、それとも悪いことですか?

ある日、言語学の教授が彼女のクラスに講義をしていました。「英語では、二重否定は肯定を形成します。しかし、ロシア語など一部の言語では、二重否定は依然として否定です。しかし、二重肯定が否定を形成できる言語はありません。」

部屋の後ろから声が響き渡った。

于 2009-03-03T19:54:07.457 に答える
44

これらの種類のアプリケーションのほとんどでは、統計分類タスクのために独自のコードの多くをロールバックする必要があります。Lucka が示唆したように、NLTK は、目的がライセンスの非営利的な性質を妨げない限り、Python での自然言語操作に最適なツールです。ただし、モデリング用の他のソフトウェア パッケージをお勧めします。Python で使用できる強力で高度な機械学習モデルはあまり見つかっていないため、Python と簡単に連携できるスタンドアロン バイナリをいくつか提案します。

Python と簡単にインターフェースできるThe Toolkit for Advanced Discriminative Modelingに興味があるかもしれません。これは、自然言語処理のさまざまな分野で分類タスクに使用されています。また、さまざまなモデルを選択できます。単純ベイズ分類器の実装に既に精通している限り、最大エントロピー分類から始めることをお勧めします。そうでない場合は、それを調べてコードを作成し、機械学習タスクとしての統計的分類を十分に理解することをお勧めします。

テキサス大学オースティン校の計算言語学グループはクラスを開催しており、そこから出てくるほとんどのプロジェクトでこの優れたツールが使用されています。Computational Linguistics IIのコース ページを見て、それを機能させる方法と、それが提供した以前のアプリケーションについて理解することができます。

同じように機能するもう 1 つの優れたツールはMalletです。Mallet との違いは、ドキュメンテーションが少し多く、意思決定ツリーなどの利用可能なモデルがいくつかあることです。それは Java であるため、私の意見では少し遅くなります。 Wekaは、さまざまな機械学習モデルのスイート全体を 1 つの大きなパッケージに収めたもので、グラフィカルな要素がいくつか含まれていますが、実際にはほとんどが教育目的のためのものであり、私が実際に製品化するものではありません。

あなたの仕事を頑張ってください。本当に難しいのは、モデルが学習する「シードセット」を分類するために事前に必要な知識工学の量でしょう。2 値分類 (幸せか悲しいか) を行うか、あらゆる種類の感情 (さらに多くのことが必要になる) を行うかに応じて、かなり大きなサイズにする必要があります。このように設計されたデータの一部をテスト用に差し出すか、10 倍または 1 を削除するテストを実行して、データを公開する前に実際に適切な予測を行っていることを確認してください。そしてなにより、楽しんでください!私の意見では、これが NLP と AI の最良の部分です。

于 2009-02-22T00:26:23.220 に答える
19

皆さんの提案に感謝します。本当にとても役に立ちました。ここから借りた単純ベイジアン分類器を使用することになりました。まず、良い/悪いキーワードのリストを入力してから、ユーザーのフィードバックを利用して「学習」機能を追加しました。それはかなりうまくいくことが判明しました。

ブログ投稿のように私の仕事の完全な詳細。

繰り返しますが、あなたの助けはとても役に立ちました。ありがとうございます!

于 2009-03-19T13:04:07.113 に答える
14

感情のラベルが付いた単語リストを作成しました。ここからアクセスできます。

http://www2.compute.dtu.dk/pubdb/views/edoc_download.php/6010/zip/imm6010.zip

私のブログに短い Python プログラムがあります。

http://finnaarupnielsen.wordpress.com/2011/06/20/simplest-sentiment-analysis-in-python-with-af/

この投稿では、単文および Twitter で単語リストを使用する方法を示します。

単語リストのアプローチには限界があります。記事「A new ANEW: マイクロブログでのセンチメント分析のための単語リストの評価」で、私の単語リストの制限の調査を見つけることができます。その記事は私のホームページから入手できます。

a がコードにないことに注意してくださいunicode(s, 'utf-8')(教育上の理由から)。

于 2011-07-18T13:54:10.823 に答える
10

多くの研究論文は、センチメント分析の良い出発点は形容詞を見ることであると示しています。短いテキストブロックの場合、これはほぼ唯一のオプションです...ドキュメント全体または文レベルの分析を検討する論文がありますが、あなたが言うように、ツイートは非常に短いです...理解するための魔法のようなアプローチはありませんですから、これらの研究論文の 1 つを探し出して、肯定的/否定的な形容詞のデータセットを取得しようとするのが最善の策だと思います。

とはいえ、センチメントはドメイン固有のものであり、汎用のデータセットで高レベルの精度を得るのは難しいかもしれません。

幸運を。

于 2009-02-21T23:04:24.247 に答える
4

探しているものを見つけるのは難しいと思うかもしれません。私が知っている最も近いものはLingPipe です。これは、いくつかの感情分析機能を備えており、限られた種類のオープンソース ライセンスの下で利用できますが、Java で書かれています。

また、感情分析システムは通常、平均的なツイートとは大きく異なる製品/映画のレビュー データでシステムをトレーニングすることによって開発されます。それらは、すべて同じトピックに関する複数の文を含むテキスト用に最適化されます。おそらく、ピッツバーグ大学が提供するような感情用語の語彙集に基づいて、ルールベースのシステムを自分で考え出すほうがよいと思います。

非常に美しいインターフェイス (およびtwitrratr )を使用した同様のアイデアの実装については、We Feel Fineを参照してください。

于 2009-02-21T22:50:05.060 に答える
2

Twitter 感情分析ツールをご覧ください。これは Python で書かれており、半教師あり機械学習による Naive Bayes 分類器を使用しています。ソースはここにあります。

于 2011-07-13T09:23:02.027 に答える
1

少し前にNatural Language Toolkitに出会いました。おそらくそれを出発点として使用できます。モジュールやアドオンもたくさんあるので、似たようなものをすでに持っているかもしれません。

于 2009-02-21T21:53:04.917 に答える
0

やや奇抜な考え: Twitter API を使用して大量のツイートをダウンロードし、絵文字を使用してそのセットのサブセットを分類してみてください: ":)"、":]"、":D" などの 1 つの肯定的なグループ、および「:(」などの別の否定グループ。

大まかな分類ができたら、頻度分析や ngram 分析、またはそれらに沿った何かを使用して、より多くの手がかりを検索できます。

ばかげているように思えるかもしれませんが、これについては真剣な研究が行われています (「感情分析」と絵文字を検索してください)。一見の価値あり。

于 2009-03-16T06:22:40.497 に答える