Google Cloud Natural Language APIをRubyで実行する


はじめに

理科大のAdvent Calendar 2017の21日の記事です!(25日に執筆中)
stripeのことを書く予定でしたが卒論でstripeどころかqiita書く時間もなかったので、ちょうど卒論で使ったGoogle Cloud Natural Language API
について書きます。

Google Cloud Natural Language APIとは

CLOUD NATURAL LANGUAGE API

感情分析

ネガポジで-1.0〜1.0で返してくれる
ドキュメント

エンティティ分析

一般名詞を返してくれる
ドキュメント

構文解析

そのまんま。
ドキュメント

エンティティ感情分析

一般名詞に対する感情を返す
ドキュメント

こんかいは感情分析だけ使った。

感情分析のスコアの見方

感情分析の値の解釈

サンプルコード

ドキュメントにrubyのサンプルコードがあったけど実行すると認証エラーになった。(下記のコードでできたからまだ解決してない)
事前にapi_keyを取得する必要がある。

curl

request.jsonを作成して

{
  "document":{
    "type":"PLAIN_TEXT",
    "content":"これが感情分析したいテキストが入る場所"
  }
}
curl "https://language.googleapis.com/v1beta1/documents:analyzeSentiment?key=hogehogehogehogehoge" \
  -s -X POST -H "Content-Type: application/json" --data-binary @request.json

curlはここを参照

ruby

require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("https://language.googleapis.com/v1beta1/documents:analyzeSentiment?key=hogehogeohogehoge")
request = Net::HTTP::Post.new(uri)
request.content_type = "application/json"
request.body = ""
request.body = '{
                  "document":{
                    "type":"PLAIN_TEXT",
                    "content": "これが感情分析したいテキストが入る場所"
                  }
                }'

req_options = {
  use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end

json = JSON.parse(response.body)
p score =  json['documentSentiment']['score']
p magnitude = json['documentSentiment']['magnitude']