PerlからGoogleの感情分析を使ってみる
お盆明けから妙に気分が沈んだり、なんかおかしいなーって感じですが、みなさんお元気でしょうか。うちはダメです。
で、ほぼ毎日twitterでつぶやいているツイ廃としては、過去に呟いた内容をもとに、いつからおかしくなったのか?ってのを調べてみようと思ったのです。
と思って、twitterの履歴から感情分析とかしたら面白そう・・・ってことで日本語で感情分析できるGoogleのAPI使えないかなーってやってみてた。とりあえず、APIKEYベタ書きならリクエスト投げて戻ってくるところまでいけた。整理してblogに書けるかなー / https://t.co/hm4YO9GqiA
— sironekotoro (@sironekotoro) 2019年8月25日
今回はGoogleの感情分析APIを使ってみるところまでやってみました。暗く沈んでる時期の自分のtweet漁るのは怖さがある・・・
しかし、いつもの通りPerl用のライブラリやSDK(Software Development Kit)は提供されていない・・・けど、WebAPIであればリクエストを投げて受け取るだけなので安心(安心?
JSONでPOSTして、JSONで受け取る、ということなのでSDKなくてもなんとかなりそうですね。
ただ、APIを利用するためにGoogle CloudのAPI_KEYの取得とクレジットカード登録の必要があり、そこはハードルが高いかもしれません。
うちの場合、昔、BigQuery試してみた時にクレカを登録していました。
参考にしたところ
Google Cloud Natural Language API 公式サイト
GoogleのAPI使うための認証情報の扱いとか。特に環境変数の設定のあたり
公式サイトのほか、こちらのページが大変参考になりました。実装はPHPですが、curl をつかってリクエストを投げてくれるところがあって、Perlで書くにあたって大変助かりました。
macOS用のパッケージ管理ソフト brew cask をつかってgoogle-cloud-sdkを入れる際に参考にしました。
動かすまで
google-cloud-sdk
をインストール$ brew cask install google-cloud-sdk
$ brew cask info google-cloud-sdk
秘密鍵のファイルをローカルにおいて、パスを通したりする
早く動かしたいので、コマンドラインでAPI_KEYを表示させて、それをスプリプトに直接入れることにする
$ gcloud auth application-default print-access-token
PerlのWebクライアントでAPIを叩いて、 返ってくるエラーを見ながらGCPの権限をつけたり、コードを直したりする
Furl
ではうまく動いたので、標準に寄せるべくHTTP::Tiny
で書き直してたらハマった・・・ハマった原因は、
headers
と書くところをheader
と書いていたからなのでした
うごいたー!
こんな感じです。あー、参考にならない書き方ー
あと、やはり環境構築が鬼門だなぁという感じ。
コード
でも、コードがあればなんとかなりそうなので、コードを置いておきますね。