ナード戦隊データマン

データサイエンスを用いて悪と戦うぞ

sentimentja: 日本語感情分析のpythonパッケージ

感情分析とは、与えられたテキストの感情を分類するタスクです。今回は、日本語ツイートを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ならできました。

インストール

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