51
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Nodeで感情解析APIを使ってみた

Posted at

概要

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のつぶやきのいろづけとかしたら面白いかなーと思ってる。まぁ確実に呼び出し回数制限かかっちゃうけどね。

51
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?