はじめに
いきなり釣りのようで恐縮ですが、文章から感情を推定するIBM提供サービス“Watson Tone Analyzer”は日本語対応していません。
文章の多言語翻訳だったり解析系はまだまだ日本語対応していない点が我々から見たIBM社の短所です。ただでさえ AWS・GCP・Azure がクラウドビッグスリーと呼ばれて、IBM社のクラウドは後塵を拝しているので頑張ってほしいものです。
翻訳APIでフォロー
そんな文句はさておき、せっかくの Watson API なのでなんとか活用してみようとするのが今回の話です。結論から申し上げますと“Watson Tone Analyzer”が日本語対応していないので、文章入力前に日本語を英語に翻訳するAPIをかませるという雑アプリを設計しました。
日本語でメッセージ入力⇒日本語から英語に翻訳⇒英語化した文章から感情推定⇒グラフで結果出力
翻訳くらいはWatsonを使えばと思いましたが、翻訳APIも日本語対応完了していないため今回は下記APIを利用。(無料。ただし要登録。)
Yandex.Passport https://passport.yandex.com/
“Tone Analyzer”は設定が色々あるのですが、今回は5つのパラメータ『Anger、Disgust、Fear、Joy、Sadness』を出力する設定にしました。
しかし、なんというか、出力パラメータ5つのうち4つが負の感情ってどういうことだ・・・?
設計メモ
テキスト入力の受け付けはFormで適当に定義
1 2 3 4 |
<form action="/tcsl/toneout" method="post" enctype="multipart/form-data"> <input type="text" name="message" accept="text/*" size="100" /> <input type="submit" value="送信"/> </form> |
翻訳APIは下記のようにしてhttps://translate.yandex.net/api/v1.5/tr.json/translateに投げます
1 2 3 4 5 6 7 |
msg.payload={ "key":"*************(your key)", "text":text, "lang":"en" }; msg.headers = {} msg.headers["Content-Type"] = "application/x-www-form-urlencoded" |