はじめに
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]は設定しています。
構成
package.json
{"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"}}
app.js
constexpress=require("express");constapp=express();constaxios=require('axios');constserver=app.listen(9000,function(){console.log("Node.js is listening to PORT:"+server.address().port);});app.post("/api/v1/emotion",function(req,res,next){letparams=newURLSearchParams();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が一番結果の数値として高いことが分かります。
精度的にどうなのかは、個人の感性に依存しそうですが、、
ではまた。。