Edited at

ツイートから学習した感情分析モデル

More than 1 year has passed since last update.

感情分析とは、与えられたテキストの感情を分類するタスクです。今回は、日本語ツイートをEkmanの基本6感情で評価という記事で作成したモデルをパッケージ化したので紹介します。


実行環境

実行を確認した環境は"Anaconda3-5.2.0"です。もし、実行環境をanacondaにしたい場合、例えばDockerfileに以下を書いてください。

RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh -O ~/anaconda.sh && \

/bin/bash ~/anaconda.sh -b -p /opt/conda && \
rm ~/anaconda.sh && \
ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \
echo "conda activate base" >> ~/.bashrc

Note: 2018/10/27 7:26時点で、私の環境ではpip install tensorflowができない状態ですが、anacondaならできました。

Note: python3.7にすると、pip install tensorflowができなくなるようです。https://github.com/tensorflow/tensorflow/issues/20444


インストール

git clone https://github.com/sugiyamath/sentiment_ja

cd sentiment_ja
python setup.py install


使い方の例

from sentimentja import Analyzer

analyzer = Analyzer()
print(analyzer.analyze(["ファイナル・ファンタジーは楽しい", "クソゲーはつまらん"]))

出力

[

{
'sentence': 'ファイナル・ファンタジーは楽しい',
'emotions': {'happy': '32.0', 'sad': '2.0', 'disgust': '2.0', 'angry': '1.0', 'fear': '1.0', 'surprise': '4.0'}
},
{
'sentence': 'クソゲーはつまらん',
'emotions': {'happy': '1.0', 'sad': '2.0', 'disgust': '22.0', 'angry': '5.0', 'fear': '5.0', 'surprise': '1.0'}
}
]


注意点

精度はもちろん100%ではなく、280文字以下の文章しか対応していません。

また、ニュートラルな文章(感情的ではない文章)の分類は対応していません。


リンク

sentiment_ja: https://github.com/sugiyamath/sentiment_ja