最近、ChatGPTを使ったAI対話システムの開発をしている中で、ChatGPTが返した文章に感情情報を付与したいなーと考えてました。ChatGPTプロンプトで設定するという方法もいいのですが、もっと自由に、ネガティブまたはポジティブよりももっと豊かな感情を扱いたいなーということで探していると・・・ドンピシャなのを見つけました! Hugging Face + WRIMEデータセットで、8クラスの感情分類。
使ってみるととってもいい感じだったので、もっとサクサクと動かしたい・・・というわけで、途中いろいろ紆余曲折もありつつ、GitHub CopilotやらChatGPTやらの力を借りて、Dockerを使った感情解析サーバーを作ってみました。
ソースコードとかビルド手順
GitHubのsusumu_emotional_analysis参照。
学習済みモデルも内蔵しているので、git cloneで取得して、スクリプトを1つ実行すればサーバーが動きます。 サーバーにテキストを送ると感情情報を返します。
感情解析の例
入力テキスト | 喜び | 悲しみ | 期待 | 驚き | 怒り | 恐怖 | 嫌悪 | 信頼 |
---|---|---|---|---|---|---|---|---|
いいことあるかな | 0.01 | 0.00 | 0.97 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
おばけ怖い | 0.00 | 0.03 | 0.00 | 0.02 | 0.00 | 0.86 | 0.05 | 0.00 |
ヤフオクで転売された。 | 0.19 | 0.24 | 0.10 | 0.36 | 0.00 | 0.04 | 0.02 | 0.00 |
ヤッターヤッター大成功 | 0.95 | 0.00 | 0.00 | 0.01 | 0.00 | 0.00 | 0.00 | 0.01 |
俺、激おこ | 0.03 | 0.04 | 0.43 | 0.05 | 0.10 | 0.13 | 0.18 | 0.01 |
じいちゃんが帰ってこない。 | 0.00 | 0.91 | 0.00 | 0.01 | 0.00 | 0.02 | 0.03 | 0.00 |
この例はデータセットの内容と被ったのか、簡単過ぎる文章だったのか、出来が良過ぎる気がするけど、まあいいか。
動作環境
Dockerが動けば動きます。
スクリプトはWindows用とLinux用の2種類を用意したので、動作確認はWidnwos 11とUbuntu22.04 on WSL2で行っています。
謝辞
すばらしいデータセットを公開してくださった梶原 智之さん、中島 悠太さんに感謝します。
Google Colaboratoryを使ってわかりやすくモデル作成方法を公開してくださった@izaki_shinさんに感謝いたします。
参考リンク
WRIME: 主観と客観の感情分析データセット
Hugging Face + WRIMEデータセットで、8クラスの感情分類