Webuilder240

Natural Language APIを使ってRubyエンジニアでも簡単に感情分析を行う

2020-10-03 23:04:36 +0900

GCP Natural Language API 感情分析 感情分析API

忙しい人向けまとめ

  • AmazonやMicrosoft AzureやGCPで感情分析APIが提供されていてこれを使うと、特別な知識がなくとも感情のスコアリングができるようになる。
  • Google Cloudの Natural Language APIを使っての分析が、他クラウドの感情分析APIより1回のリクエストのバイト数制限が緩いためお勧め。
    • ただし、他クラウドよりも割高かもしれない。
  • 感情分析の解釈については正直難しく、APIで分析しただけではネガかポジかを判定するのは難しい。

いろいろコンテンツデータを分析してみたい!!ということで、ひとまず試してみようということで試してみました。

感情分析APIの選定


選定対象として、すでにアカウントを持っているクラウドサービスが提供している、「Amazon Comprehend」と「Azure Text Analytics」そして、「Google Cloud Natural Language API」が候補に挙がりました。

最初はAmazon Comprehendを利用する予定でしたが、Amazon ComprehendとAzure Text Analyticsでは、1つのドキュメント(分析の単位)に対して、解析文字列のバイト数に対して制約があったので、この制約が比較的緩いであろうNatural Language APIを使うことにしました。

Rubyでのサンプルコード

Rubyでのサンプルコードの例もちゃんとありました。
クライアントのGemも存在していて、この辺りは便利でした。下記チュートリアルコードを参考にすればサクッと導入できます。



どういうデータなのか?


簡単に言うと、スコア(数字で、プラスならポジティブ傾向、マイナスならネガティブ傾向)とマグニチュード(簡単に言うと、感情の動いたことを指す指標?)で表現されていて、正直難しいです。
ここではあまり解説しないことにしますが、公式にどう解釈すればいいかのドキュメントがあるのでリンクを載せておきます。



僕のようなAIや機械学習関連に強くないエンジニアが「まずお試しで」感情分析を行うことができる。というのはメリットではないでしょうか。解析対象のテキストと結果をざっと確認したところ、スコアについてはまぁ妥当性のある結果に落ち着いている感じがあります。

しかし、この分析の評価を適切に行うにはやはり専門家の力が必要という感じでした。

費用感について


当然、Webアプリケーション用途で使うようなサービスと異なり、機械学習のAPIということもあって、1つのテキストの分析を行う際の単価は高いように感じると思います。個人サービスで使うのは多分厳しい。
しかし、機械学習に詳しい人材がいない中で、詳しい人を新しく用意するほうが基本的には大変なはずなので、この価格設定についてはある意味お買い得というのが感想です。
しかし、Natural Language APはほかのクラウドサービスのAPIに比べるとバイト数の制約がない分、少し高めの価格設定かもしれません。



なので個人的見解としては、分析したいデータをいきなり全部投入するのではなく、最初は数か月分のデータだけとか、限定的にデータを投入していき、利用価値が見いだせたタイミングでデータを投入するという使い方をおすすめしたいです。

そのほかTips

HTMLなどの分析したい内容に直接関係しない文字列を削除しておくことで、解析対象の文字列を削減して、課金額を抑えることができるのでお勧めです。

関連しそうなブログ