PythonでのTwitterの感情分析[終了]


87

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

Twitterで「youtube」などの検索語を検索し、「ハッピー」ツイートと「悲しい」ツイートを比較するアプリケーションを書いています。私はGoogleのappengineを使用しているので、それはpythonです。Twitterから返された検索結果を分類できるようにしたいのですが、Pythonで分類したいと思います。これまでのところ、このような感情分析ツールを見つけることはできません。具体的には、Pythonではできません。私が使用できるそのようなオープンソース実装に精通していますか?できれば、これは既にpythonに含まれていることが望ましいですが、そうでない場合は、pythonに変換できれば幸いです。

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

ところで、Twitterは検索で ":)"および ":("演算子をサポートしていますが、これはまさにこれを行うことを目的としていますが、残念ながら、それらによって提供される分類はそれほど大きくないので、私はこれを試してみるかもしれないと思いました。

ありがとう!

ところで、初期のデモはあり、ここで、私がこれまで持っているコードがあり、ここで、私はどんな興味を持って開発者と、それをオープンソースが大好きです。

回答:


44

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

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

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

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

あなたの仕事で頑張ってください。実際の困難な部分は、モデルが学習する「シードセット」を分類するために事前に必要な知識工学の量になるでしょう。バイナリ分類(幸せか悲しいか)または感情の範囲全体(さらに必要なもの)に応じて、かなり大きくする必要があります。テストのためにこの設計されたデータのいくつかを差し控えるか、10倍または1回の削除テストを実行して、実際に出力する前に実際に適切な予測を行っていることを確認してください。そして何より、楽しんでください!これは、私の考えでは、NLPとAIの最良の部分です。


ありがとう。私はこれを夜に行うだけなので、...しばらく時間がかかりますが、準備ができたらアップデートを投稿します
Ran

7
NLTKコードは、あたりとしてApacheライセンス2.0の下で利用可能ですnltk.org/faq
アミット

1
なぜウェカは教育目的であると言うのですか?ペンタホBIスイートの一部ではありませんか?そして、ペンタホは企業に貢献しています。
Swapnil 2013年

77

頑張ってください。

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

ビデオが悪いと言われたら、それは悪いことですか、それとも悪いことですか?

言語学教授がある日彼女のクラスに講義をしていた。「英語では、ダブルネガティブはポジティブを形成します。ただし、ロシア語などの一部の言語では、ダブルネガティブは依然としてネガティブです。しかし、ダブルポジティブがネガティブを形成できる言語はありません。」

部屋の奥からの声が「うん……」


4
私はそれ以外の場合はその引用のためだけにあなたに賛成票を投じなければならなかったかもしれないので、あなたが役に立つ回答をしてくれてうれしいです。:-)
ベンブランク

2
引用は「ええええ」だったと思います-シドニーモルゲンベッサーから
スコットウェインスタイン

19

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

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

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


1
ブログ投稿のリンクが機能しなくなりました。更新していただけますか?
Petrutiu Mihai 14

こんにちは@PetrutiuMihaiブログは本当に削除されました。しかし、それはかなり古いものであり、今日の研究の最前線ではないので、あなたは多くを逃しません;(
Ran

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だけでなく、単一の文章で単語リストを使用する方法を示しています。

Wordリストアプローチには制限があります。私の単語リストの制限に関する調査は、「新しいANEW:マイクロブログの感情分析のための単語リストの評価」の記事にあります。その記事は私のホームページから入手できます。

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


「Posterous Spacesはもう利用できません」どこかにpythonコードを投稿できますか?
andilabs 2013

1
ご指摘ありがとうございます。これで、後書きのリンクをブログを移動したWordpressリンクに変更しました。
FinnÅrupNielsen 2013

感情を込めたワードライトでの実験について何かお話しいただけますか?正確さ、分類の再現とはどういう意味か。
andilabs 2013年

1
私はここ数評価へのリンクを持っている:neuro.compute.dtu.dk/wiki/AFINN#Evaluation私自身は精度、リコールと分類の観点でその性能を評価されていません。私がしたことは、ツイートのMisloveのAmazon Mechanical Turkラベル付けとのランク相関です。
FinnÅrupNielsen 2013

10

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

さて、これは言われましたが、感情はドメイン固有であり、汎用のデータセットで高レベルの正確さを得るのは難しいかもしれません。

幸運を。


くそー、私はあなたを先取りするつもりでした。
Dana the Sane

4

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

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

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



1

多分、TextBlob(NLTKとパターンに基づく)は、あなたにぴったりの感情分析ツールです。


1

少し前にNatural Language Toolkitに出会いました。あなたはおそらくそれを出発点として使うことができます。また、モジュールとアドオンがたくさんあるので、おそらく同じようなものがあるでしょう。


0

やや奇妙な考え:Twitter APIを使用して大量のツイートのセットをダウンロードし、絵文字を使用してそのセットのサブセットを分類することができます。 、および「:(」などを含む別の否定的なグループ

その大雑把な分類ができたら、頻度やngram分析などでそれらの線に沿ってさらに手がかりを検索できます。

ばかげているように見えるかもしれませんが、これについて真剣な調査が行われています(「感情分析」と顔文字の検索)。一見の価値があります。



0

Twitter Sentiment Analyisをゼロからコーディングすることに関心がある人のために、Pythonコードを使ったCourseraコース「データサイエンス」がGitHubにあります(課題1- リンクの一部として)。感情はAFINN-111の一部です

たとえば、ここで実用的なソリューションを見つけることができます。AFINN-111感情リストに加えて、pos / negスコアを持つツイートの用語の頻度に基づいて動的用語リストを構築する簡単な実装がありますここを参照)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.