Skip to content

ツイート予定の文章に対し、過去の類似ツイートをネガポジスコア付きで提示するモデルです。

Notifications You must be signed in to change notification settings

kaorisugi/twittter_sentiment

Repository files navigation

極性判定とDoc2Vecを使ったTwitterネガポジ予測

※実行結果とコードは twitter_judgement_model.ipynb にて参照ください

【このnotebookについて】

2019年7〜10月までフルタイムで通っていたスクールの卒業課題テーマを、機械学習の勉強のために発展させたものです
卒業発表スライド https://www.slideshare.net/secret/y0m7g1nZdxpVYP
*当初は炎上予測がテーマだったので、このnotebookの内容とはややズレます
*表紙スライドの字が見えない場合は2枚目から戻ると見えます

*ちなみに…
スクールで取り組んだ課題のリポジトリ https://github.com/kaorisugi/diveintocode-ml
論文読解課題のスライドシェア https://www.slideshare.net/secret/qGmdiwl4uGS20O

【ゴール】

これからツイートする予定の文章に対し、過去の類似ツイートを探し、反応のネガポジスコア付きで上位10位まで提示する。

【モデルの仕組み】

1)ツイートデータセットを取得
 ・TwitterAPIを使ってツイートを取得
 ・各ツイートに対する反応ツイート(リプライ、引用RT)を取得
 ・反応ツイートの極性表現数をカウントしてネガポジスコアとpositive/negative/fire!!!判定を得る
 (positive/negativeの判定基準:極性表現数が多い方、fire!!!(炎上)の判定基準:極性表現の70%以上がnegative)
2)データセットの前処理
 ・正規表現、ストップワード除去など
3)予測モデルを生成
 ・データセットをDoc2vecで学習
4)ツイート予定文章のネガポジ予測を返す
 ・データセットから、ツイート予定文書と似ている文書を探す
 ・ネガポジスコア付きで、類似ツイート上位10個を返す

【結果】

類似度確認用にデータセット内にあるものと同じ文を入力したところ、類似度1位で返ってきた。また、2位、3位にもマスクに関する似た話題のツイートが提示されたので類似ツイートの抽出は成功。ネガポジスコアもデータズレなどなく正確に表示され、目的は達成できた。
ツイッターAPI制限により、まだサンプルが少ない(完成時200件程度)が、データを蓄積できる仕様にしているので、ツイート文のバリエーションを増やしていけば、様々な入力文に対応できるようになると思う。
ネガポジ判定については、ネガティブなテーマへの言及に共感したコメントでネガ判定が出ているケースも多く、必ずしもツイート主へのネガ感情ではないことに注意が必要。

【その他試みたこと】

1)文章ベクトルを特徴量としたネガポジ予測モデル
 ・文章ベクトルとフォロワー数を特徴量X、ネガポジスコアを目的変数yとしたデータを学習
 ・文章ベクトルはDoc2vecとTf-idfの2種を作成
 ・ツイート予定文書を入力してネガポジスコアを予測する
 ・試した予測モデル
 ・MultiOutputRegressor、SVRのrbf と SVRの線形、lightgbm、ランダムフォレスト
   →精度が低すぎて断念
2)ツイッターAPI制限への挑戦(データセットの拡大)
 ・古いツイートを大量取得できるパッケージを発見(通常は1週間程度しか遡れない)
   →取得データから反応ツイートの取得を試みたができなかった

【利用するには】

・config.py ファイルにツイッターAPIトークンを記入
・jupyternotebookファイル twitter_judgement_model.ipynbを実行
・jupyternotebook上でのMeCab利用で詰まる場合は、下記の自然言語処理環境のDockerイメージを使うとうまくいきました。
https://github.com/hoto17296/docker-japanese-nlp

Requirement

・必要なツール、ライブラリ
$ pip install tweepy
$ pip install oseti
$ pip install requests requests_oauthlib
$ pip install sengiri
$ pip install gensim
$ pip install emoji

About

ツイート予定の文章に対し、過去の類似ツイートをネガポジスコア付きで提示するモデルです。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published