10種類の感情分類ができるライブラリ「pymlask」を試す
ML-Askができること
感情の推定
2,100語の辞書によるパターンマッチングで{喜, 怒, 哀, 怖, 恥, 好, 厭, 昂, 安, 驚}の10種類の感情を推定します。この2,100語は、感情表現辞典に基づいているそうです。
感情の強さ
間投詞、擬態語、がさつな言葉、顔文字、「!」や「?」の数で感情の強さを推定します。
ネガポジ分類
推定された感情から文を{ネガティブ、ポジティブ、ニュートラル}の3種類に分類します。
文脈の考慮
Contextual Valence Shifters (CVS) という概念に基づいて, 文脈を考慮した感情推定を行います. たとえば, 「好きとは言えない」という文の場合、「好き」が否定されているので、「好き」の逆の感情である「厭」だと推定します。
活性的かどうか
推定された感情を元に文が{ACTIVE, NEUTRAL, PASSIVE}であるかの分類します。たとえば、「昂」はACTIVEで、「哀」はPASSIVEです。
GitHubレポジトリ
pymlaskはML-Ask(eMotive eLement and Expression Analysis system)のPython版です
ML-Askの詳細については、http://arakilab.media.eng.hokudai.ac.jp/~ptaszynski/repository/mlask.htm をご覧ください。
インストール
Colaboratoryで。
Mecabと辞書をインストール
!apt install mecab mecab-ipadic-utf8
MecabのPythonラッパーをインストール
!pip install mecab-python3
pymlaskをインストール
!pip install pymlask
!pip freeze | grep pymlask
pymlask==0.3.3
mecabの設定ファイルは/usr/local/etc/mecabrc
を期待しているが、パッケージでインストールされたものは/etc/mecabrc
にあるので、シンボリックリンクを貼っておく。
!ln -s /etc/mecabrc /usr/local/etc/mecabrc
感情分析
from mlask import MLAsk
emotion_analyzer = MLAsk()
emotion_analyzer.analyze('今日の競馬はボロ負けやった。。。メインを外したのは悔しい。。。でも素晴らしいレースが見れたので、とても楽しかった!来週また頑張るぞ!')
{'text': '今日の競馬はボロ負けやった。。。メインを外したのは悔しい。。。でも素晴らしいレースが見れたので、とても楽しかった!来週また頑張るぞ!',
'emotion': defaultdict(list, {'iya': ['悔しい'], 'yorokobi': ['楽しい']}),
'orientation': 'NEUTRAL',
'activation': 'NEUTRAL',
'emoticon': None,
'intension': 2,
'intensifier': {'exclamation': ['!'], 'emotikony': ['。。']},
'representative': ('iya', ['悔しい'])}
ライセンスはThe BSD 3-Clause Licenseなのだけど、辞書データの諸元のライセンスはどうなるのかな???
ML-Askの公式のほうで配布しているようなのだけども。
あと、辞書のデータ量によるところが大きいみたいで、判定されないことが多いみたい。