概要
Metadata社が提供する『Mextractr 感情解析API』を使ってみた。
http://www.metadata.co.jp/emotion-ma9.html
APIの概要
Mextractr 感情解析APIは、日本語のテキストを受け取るとその文章の感情を「好ましいー嫌い」「嬉しいー悲しい」「怒りー怖れ」の3つの軸でその度合いを判断しその値を返すAPIです。
制限
ただ、呼び出し回数の制限がMetadata社が提供する他のAPIと合わせて1日100回とのこと。利用形態によってはメールで希望を伝えれば上限回数の拡張はできるらしいです。
使い方
登録
登録フォームから登録する。
http://ap.mextractr.net/ma9/ma9signup
呼び出し方
http://ap.mextractr.net/ma9/emotion_analyzer?out=<出力データの形式>&apikey=xxxxx&text=<URLエンコードした文字列>
パラメータ | 形式 | 意味
---+---+---
text | UTF8でURLエンコードした文字列 | メタデータ抽出元の文字列
out | 出力データの形式:atom || json デフォルトはatom |
callback | out=jsonの場合に有効。JSONP形式のを指定 |
apikey | 文字列 | APIキー(必須)
結果を受け取る
JSONで受け取った。
{
"joysad":1,
"likedislike":1,
"angerfear":0,
"analyzed_text":UTF8でURLエンコーディングされたテキスト(単語ごとの解析結果も含まれる)
}
返される感情の値は3軸のベクトルになるみたいです。例えばanalyzed_textに解析結果が
単語A[3.0,3.0,0.0]
単語B[0.0,0.0,0.0]
(単語N[joysad, likedislike, angerfear])
だったら、各単語の感情値の和は
joysad:2.0,
likedislike:2.0,
angerfear:0.0
になる。
Nodeでの例
テキストは「テキストから感情解析してみるんだが、これできたらマジで面白いね!でも意味わかんない…」です。意味わかんないですね。
var http = require('http');
var base_url = "http://ap.mextractr.net/ma9/emotion_analyzer";
var apikey = APIキー; //ここは変えてください
var out = "json";
var text = "%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%81%8b%e3%82%89%e6%84%9f%e6%83%85%e8%a7%a3%e6%9e%90%e3%81%97%e3%81%a6%e3%81%bf%e3%82%8b%e3%82%93%e3%81%a0%e3%81%8c%e3%80%81%e3%81%93%e3%82%8c%e3%81%a7%e3%81%8d%e3%81%9f%e3%82%89%e3%83%9e%e3%82%b8%e3%81%a7%e9%9d%a2%e7%99%bd%e3%81%84%e3%81%ad%ef%bc%81%e3%81%a7%e3%82%82%e6%84%8f%e5%91%b3%e3%82%8f%e3%81%8b%e3%82%93%e3%81%aa%e3%81%84%e2%80%a6";
url = base_url + "?apikey=" + apikey + "&out=" + out + "&text=" + text;
console.log("感情データを取得します......");
http.get(url, function(res){
var body = '';
res.setEncoding('utf8');
// データ取得
res.on('data', function(chunk){
body += chunk;
});
res.on('end', function(res){
ret = JSON.parse(body);
console.log(ret);
})
});
結果
感情データを取得します......
{ likedislike: 2,
joysad: 2,
analyzed_text: '%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%8B%E3%82%89%E6%84%9F%E6%83%85%E8%A7%A3%E6%9E%90%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%E3%82%93%E3%81%A0%E3%81%8C%E3%80%81%E3%81%93%E3%82%8C%E3%81%A7%E3%81%8D%E3%81%9F%E3%82%89%E3%83%9E%E3%82%B8%E3%81%A7%E3%80%90%E3%80%90%E9%9D%A2%E7%99%BD%E3%81%84%E3%80%91%20[3.00,3.00,0.00]%20%20%E3%80%91%E3%81%AD%EF%BC%81%0A%E3%81%A7%E3%82%82%E6%84%8F%E5%91%B3%E3%82%8F%E3%81%8B%E3%82%93%E3%80%90%E3%80%90%E3%81%AA%E3%81%84%E3%80%91%20[0.00,0.00,0.00]%20%20%E3%80%91%E2%80%A6',
angerfear: 0 }
Program exited.
デコードすると
「テキストから感情解析してみるんだが、これできたらマジで【【面白い】 [3.00,3.00,0.00] 】ね!
でも意味わかん【【ない】 [0.00,0.00,0.00] 】…」
まとめ
これ使ってTwitterのつぶやきのいろづけとかしたら面白いかなーと思ってる。まぁ確実に呼び出し回数制限かかっちゃうけどね。