LoginSignup
1
2

More than 3 years have passed since last update.

COTOHA API を使ってみたよ!

Posted at

【Qiita x COTOHA APIプレゼント企画】COTOHA APIで、テキスト解析をしてみよう!

なーんてものをやっていたので、せっかくだから参加してみたよ!ヾ(´∀`)ノ
名前は知ってたけど利用したことはなかったので、良い機会だから勉強します!
そしてプレゼントが欲しいです。

環境は GoogleAppsScripts です!
どうぞよろしくお願いいたします。('ω')

COTOHA API Portal for Developers にアカウント登録

まずは何はともあれ、登録登録!(*'▽')
COTOHA API Portal

無料登録枠でやりまーす。
制限はありますが、最初だし使える機能を使って遊びます。

スタートガイドがわかりやすいですねー。こゆとこ、大事だと思います。

では、登録していきましょー!ヾ(´∀`)ノ

1582005235.png

メールアドレスを送信したら URL が送られてきて、名前とか使い道とか(割とテキトーに)書いたらすんなり登録できました。
難しいことは何もありませんでしたよー。
登録が楽チンって、ハードル下がっていいですよね!( ゚Д゚)

1582005389.png

さっそく Client ID と Client secret が発行されましたよ!
これを使って COTOHA API で遊んじゃいましょー!ヾ(´∀`)ノ

アクセストークンの取得

スタートガイドの手順4に書いてある通りに設定します。
cURL での例があるので、これを GoogleAppsScripts に書き換えます。

cotoha.js

function getToken() {
  const uri = 'https://api.ce-cotoha.com/v1/oauth/accesstokens';
  const json = {
    "grantType" : "client_credentials",
    "clientId": "",
    "clientSecret": ""
  };
  const options = {
    "method": "post",
    "headers": { "Content-type": "application/json" },
    "payload": JSON.stringify(json)
  };
  Logger.log(UrlFetchApp.fetch(uri, options));
}

簡単かんたん!(*'▽')
さーて、ログからアクセストークン取り出そうっと。

[20-02-18 16:13:51:501 JST] 
          {
            "access_token": "IkV8Fp369UI8MMOPIvS9GQzUuw5v", 
            "token_type": "bearer",
            "expires_in": "86399" ,
            "scope": "" ,    
            "issued_at": "1582010031433"           
           }

いえーい( ゚Д゚)
だーいせーいこー!

ちなみにこのときにした、とんでもない失敗の話は最後に語ります( ノД`)

COTOHA API を呼び出す(構文解析 API)

アクセストークンが手に入ったので COTOHA API を使ってみたいと思います!
スタートガイドにもありますし、構文解析 API を使ってみましょうかね。

test.js
function test() {
  const uri = 'https://api.ce-cotoha.com/api/dev/' + "nlp/v1/parse";
  const json = {
    "sentence":"犬は歩く。",
    "type": "default"
  };
  const options = {
    "method": "post",
    "headers": {
        "Content-type": "application/json",
        "Authorization": getToken()
    },
    "payload": JSON.stringify(json)
  };
  const res = JSON.parse(UrlFetchApp.fetch(uri, options));
  Logger.log(res);
}

さー、結果を見てみよー。

{
    result=[{
        tokens=[{
            features=[], 
            form=犬, 
            pos=名詞, 
            dependency_labels=[{
                token_id=1, 
                label=case
            }], 
            lemma=犬, 
            attributes={}, 
            id=0, 
            kana=イヌ
        }, {
            features=[], 
            form=は, 
            pos=連用助詞, 
            lemma=は, 
            attributes={}, 
            id=1, 
            kana=ハ
        }], 
        chunk_info={
            head=1, 
            chunk_func=1, 
            links=[], 
            id=0, 
            dep=D, 
            chunk_head=0
        }
    }, {
        tokens=[{
            features=[K], 
            form=歩, 
            pos=動詞語幹, 
            dependency_labels=[{
                token_id=0, 
                label=nsubj
            }, {
                token_id=3, 
                label=aux
            }, {
                token_id=4, 
                label=punct
            }], 
            lemma=歩く, 
            attributes={}, 
            id=2, 
            kana=アル
        }, {
            features=[終止], 
            form=く, 
            pos=動詞接尾辞, 
            lemma=く, 
            attributes={}, 
            id=3, 
            kana=ク
        }, {
            features=[], 
            form=。, 
            pos=句点, 
            lemma=。, 
            attributes={}, 
            id=4, 
            kana=
        }], 
        chunk_info={
            head=-1, 
            predicate=[], 
            chunk_func=1, 
            links=[{
                link=0, 
                label=agent
            }], 
            id=1, 
            dep=O, 
            chunk_head=0
        }
    }], 
    message=, 
    status=0
}

んな!?
めっちゃ細かい!

連用助詞とか動詞接尾辞とか、普段使わない言葉が満載。
こんな細かく分析してくれるなら、特定の言葉を抜き出したり置き換えたりするのも簡単ね。
みんなが原始人になりたがるわけだ。ぱはー( ゚Д゚)

COTOHA API を呼び出す(感情解析 API)

感情分析 API!これ、面白そうだなーって思ってたんですよね!
どんな文章を解析してもらおうかしら( ^ω^)

test2.js
function test2() {
  const uri = 'https://api.ce-cotoha.com/api/dev/' + "nlp/v1/sentiment";
  const json = {
    "sentence":"私は今、レバノンにて人生の春を謳歌している"
  };
  const options = {
    "method": "post",
    "headers": {
        "Content-type": "application/json",
        "Authorization": getToken()
    },
    "payload": JSON.stringify(json)
  };
  const res = JSON.parse(UrlFetchApp.fetch(uri, options));
  Logger.log(res);
}
{
    result={
        sentiment=Positive, 
        score=0.08938453252087439, 
        emotional_phrase=[{
            emotion=安心,喜ぶ, 
            form=謳歌
        }]
    }, 
    message=OK, 
    status=0
}

ポジティブですね!
score は 100 分率かな? 8点ってこと??
ギリギリポジティブってことで、謳歌ってほどではない、と。なるほど( ゚Д゚)

ちょっと文章を変えてみますか。
"sentence" のところだけ変えれば OK です。

test2.js
function test2() {
  const uri = 'https://api.ce-cotoha.com/api/dev/' + "nlp/v1/sentiment";
  const json = {
    "sentence":"むしゃくしゃしてやった。今は後悔している。"
  };
/// 後省略
{
    result={
        sentiment=Negative, 
        score=0.5424414618903893, 
        emotional_phrase=[{
            emotion=N, 
            form=後悔している
        }, {
            emotion=怒る, 
            form=むしゃくしゃ
        }]
    },
    message=OK, 
    status=0
}

めっちゃネガティブですね!
score が 54点になってます。
score が高いほどネガティブなのかな?
それとも、ネガティブ選手権の中での得点ですかね?

点数で出してくれるのは面白いですねー。

ちょっと調べてみたら score を分析して入試の文章題も解けるとか。

COTOHA APIを使って人の気持ちを考える

COTOHA さん( ゚Д゚)パネェ

とても恥ずかしいとんでもない失敗の話

さてさて、さっき言ってた失敗ですが・・・。
アクセストークンの取得のときにですね、何だかよくわからないけどこんな失敗をしました。

[20-02-18 16:05:22:067 JST] 
          {
            "access_token": "", 
            "token_type": "bearer",

            "expires_in": "" ,
            "scope": "" ,    
            "issued_at": ""           
           }

・・・ちょ、待っ、え?どゆこと????( ゚Д゚)
空っぽなんですけどーーーーーーー!!!

ちょーびっくりしました。
「COTOHA」「アクセストークン」「空」で検索しました。
何も Hit しませんでした。
神は私を見捨てたもうたか。。。

こういうときは落ち着いて、もう一度最初から確認するんだ!
悪いのはプログラムじゃない。たいてい、自分なのだから。。。

そして見つけたのが、こちら!
1582010487.png

なんだよ、grant_type って!(;´Д`)
なぜこうなったのか、本当にわかりません。
手入力したんだろうなー。コピペしろよ!( ゚Д゚)

猛省します。コピペ大事。

おわりに

ここまでお付き合いいただきありがとうございました。

COTOHA 使って何しましょうねー。
みなさん、原始人に変身したり、筋肉空間を形成したりと、遊び放題ですよね!

私も何か面白いこと、しようと思います!

ではまた!(^^)/

参考にさせていただきましたm(_ _)m

COTOHA API Portal
COTOHA APIを使って人の気持ちを考える
【Qiita x COTOHA APIプレゼント企画】COTOHA APIで、テキスト解析をしてみよう!

1
2
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
1
2