はじめに
paralleldots AI APIというテキストから感情を分析するAPIがあるので、Nodeをプロキシとして利用し、このAPIを使ってみました。
環境
・ node version : v12.18.3
・ npm version : 6.14.6
URIと機能
Path | HTTPメソッド | 機能 |
---|---|---|
/api/v1/emotion | POST | 入力テキストの全体的な感情と各感情ラベル(Happy、Sad、Angry、Excited、Bored、Fear)の信頼スコアを含むjson応答を返します。 |
使用したparalleldots AI API
paralleldots AI APIとは??
開発者向けの包括的なドキュメント分類およびAPIのセットです。10億を超えるドキュメントでトレーニングされており、感情分析や感情検出などを提供しているそう。
今回は、paralleldots AI APIの[/v4/emotion]こちらを使用していきます。
設定できるパラメータ
名前 | 詳細 | Required | Type |
---|---|---|---|
text | 分析したい文章を入力します。 | Yes | string/array |
api_key | Api key | Yes | string |
lang_code | 言語コード | Yes | string |
・ ただ、今回は、nodeでプロキシしているので、プロキシサーバ側で[api_key]及び[lang_code]は設定しています。
構成
{
"name": "node_poc",
"version": "1.0.0",
"description": "paralleldots AI API",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.20.0",
"express": "^4.17.1"
}
}
const express = require("express");
const app = express();
const axios = require('axios');
const server = app.listen(9000, function(){
console.log("Node.js is listening to PORT:" + server.address().port);
});
app.post("/api/v1/emotion", function(req, res, next){
let params = new URLSearchParams();
params.append("api_key", '××××××××××××××××××××××××××××');
params.append("lang_code", 'en');
params.append("text", req.query.text);
try {
axios.post('https://apis.paralleldots.com/v4/emotion', params)
.then((response) => {
res.send(response.data)
})
} catch (error) {
console.error(error);
}
});
Response
今回は、requestを日本語で行おうと思ったのですが、[lang_code]を英語以外を使用したい場合は、無料枠では使用できない為、仕方なく英語で行いました。
textには、
Be careful about reading health books. You may die of a misprint.
日本語訳にすると、[健康系の本を読むときは注意しなさい。ミスプリントのせいであなたは死ぬかもしれない。]
という意味です。笑
Requestは、Postmanを使用しました。(curlより見やすい為)
・ 実際のResponse
{
"emotion": {
"Happy": 0.0872024649,
"Angry": 0.2344884125,
"Bored": 0.0416403769,
"Fear": 0.3095755387,
"Sad": 0.1825278824,
"Excited": 0.1445653247
}
}
結果
やはり、死ぬかもしれないという恐怖を入れ込んだ文章を送ったため、Fearが一番結果の数値として高いことが分かります。
精度的にどうなのかは、個人の感性に依存しそうですが、、