Help us understand the problem. What is going on with this article?

深層学習でツイートの感情分析

More than 3 years have passed since last update.

はじめに

今回はラベル付きツイートデータの感情分析(Sentiment Analysis,or 感情分類 Sentiment Classification)をしました.
2015/10/19 追加実験を行いました.
2015/12/19 SCNNのソースコード公開しました.hogefugabar/CharSCNN-theano
2015/12/27 SCNNだけでなく,CharSCNNの実装も公開しました.hogefugabar/CharSCNN-theano

アルゴリズム

今回はDeep Convolutional Neural Networks for Sentiment Analysis of Short Textsという論文に載っているCharSCNNというアルゴリズムを使おうとしたのですが,メモリの都合上SCNNというアルゴリズムを使いました.このアルゴリズムは入力として与える文(Sentence)を,単語のone-hot表現の系列として与えます.CharSCNNは単語に加えて文字にもone-hot表現を与えたものになります.SCNNは僕の理解が間違っていなければ以下に近いアーキテクチャになるかと思われます.


UNITN: Training Deep Convolutional Neural Network for Twitter Sentiment Classificationより

実装

GitHubにsatwantrana/CharSCNNがあったのでこれをまんま使おうと下のですが,いろいろコードがおかしかったので自分で修正しました.2015/12/19 ソースコード公開しました.hogefugabar/CharSCNN-theano こちらを参照してください.

To Word Embeddings → Convolution → Max Pooling → Fully-Connected → Fully-Connected → Softmaxみたいな感じで実装しました.Dropout,RMSpropなども使ってます.

データセット

satwantrana/CharSCNNの中にあったtweets_clean.txtの2万ツイートを使いました.訓練データ18000ツイート,テストデータ2000ツイートです.それぞれのツイートには0/1(negative/positive)のラベルがついていますので,2クラス分類です.

実験結果


グラフ10シード平均とったもに更に移動平均をとったものになります.
大体2epoch(180000*2 iteration)回したあたりから過学習が始まる感じでした.
最高で0.8ほどの分類精度となりました.元論文には0.82~0.85くらいまで行ったとあったので,データセットの違いやパラメータの違いが影響しているのかなと思います.

終わりに

一番最初の入力をWord Embeddingsに変換する重みをWord2Vecで事前学習したものを使用すると結果が良くなるらしいのでそれもやってみたい.

追加実験(2015/10/19更新)

ChainerのサンプルにWord2VecがあったのでSkip-gram with Negative-Samplingで事前学習した結果をつかってみました.Chainerで事前学習してTheanoプログラム回すという笑.cPickleさんありがてえ.

あれ,立ち上がりは事前学習したほうが良かったけど最終的な結果は事前学習していないほうがいい...もうちょっと長く回したらどうなるんだろ.

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away