sironekotoroの日記

Perl で楽をしたい

PerlからGoogleの感情分析を使ってみる

お盆明けから妙に気分が沈んだり、なんかおかしいなーって感じですが、みなさんお元気でしょうか。うちはダメです。

で、ほぼ毎日twitterでつぶやいているツイ廃としては、過去に呟いた内容をもとに、いつからおかしくなったのか?ってのを調べてみようと思ったのです。

今回はGoogleの感情分析APIを使ってみるところまでやってみました。暗く沈んでる時期の自分のtweet漁るのは怖さがある・・・

しかし、いつもの通りPerl用のライブラリやSDK(Software Development Kit)は提供されていない・・・けど、WebAPIであればリクエストを投げて受け取るだけなので安心(安心?

JSONでPOSTして、JSONで受け取る、ということなのでSDKなくてもなんとかなりそうですね。

ただ、APIを利用するためにGoogle CloudのAPI_KEYの取得とクレジットカード登録の必要があり、そこはハードルが高いかもしれません。

うちの場合、昔、BigQuery試してみた時にクレカを登録していました。

参考にしたところ

Google Cloud Natural Language API 公式サイト

cloud.google.com

GoogleAPI使うための認証情報の扱いとか。特に環境変数の設定のあたり

cloud.google.com

公式サイトのほか、こちらのページが大変参考になりました。実装はPHPですが、curl をつかってリクエストを投げてくれるところがあって、Perlで書くにあたって大変助かりました。

www.casleyconsulting.co.jp

macOS用のパッケージ管理ソフト brew cask をつかってgoogle-cloud-sdkを入れる際に参考にしました。

qiita.com

動かすまで

  1. google-cloud-sdk をインストール

    $ brew cask install google-cloud-sdk

    $ brew cask info google-cloud-sdk

  2. 秘密鍵のファイルをローカルにおいて、パスを通したりする

  3. 早く動かしたいので、コマンドラインAPI_KEYを表示させて、それをスプリプトに直接入れることにする

    $ gcloud auth application-default print-access-token

  4. PerlのWebクライアントでAPIを叩いて、 返ってくるエラーを見ながらGCPの権限をつけたり、コードを直したりする

    • Furl ではうまく動いたので、標準に寄せるべく HTTP::Tiny で書き直してたらハマった・・・

    • ハマった原因は、headers と書くところを header と書いていたからなのでした

  5. うごいたー!

こんな感じです。あー、参考にならない書き方ー

あと、やはり環境構築が鬼門だなぁという感じ。

コード

でも、コードがあればなんとかなりそうなので、コードを置いておきますね。

gist.github.com