概要
RubyでGoogle Natural Language APIを使うための準備をメモりました。このAPIは普段PythonやPHPで用いられることが多く、Rubyで使おうとするとなかなか参考にできるものが少ないと思ったので。最後にテストで感情分析を行っています。
Google Natural Language APIとは?
Googleが提供する自然言語処理用のAPIです。自然言語処理を行うAPIはいくつか存在しますが、日本語テキストに対応しているのが強みです。基本無料で使用できますが、本人確認のためにクレジットカードが必須です。自然言語処理を行うクラウドサービスを比較している記事があったので、こちらを参考にどうぞ。
Google Natural Language APIを使う準備
本題です。まずはGoogle Cloud Platform(このAPIを含むプラットホーム)で登録を済ませましょう。
1. 新しいプロジェクトの作成(任意)
ホーム画面の左上に「My First Project」という欄があるはずです。
これをクリックし、出てきた画面の右上にある「新しいプロジェクト」を選択、好きなプロジェクト名を付けて「作成」をクリックしてください。
元からあるMy First Projectのままでも作業はできますので、この設定は任意です。何個かプロジェクトを作るつもりの人や、好きな名前でプロジェクトを始めたい人は以上の設定をするといいと思います。
2. gcloudコマンドラインでの設定(多分必須)
Google Cloud Platformには備え付けのコマンドラインがあります。次はそれを使ってRubyでこのAPIを使えるように設定しましょう。
まず、ホーム画面で右上の赤枠のアイコンをクリックし、「Start Cloud Shell」をクリック。
そうすると、画面下にコマンドラインが生成されたと思います。ここで、諸々の設定をしていきます。
まず、作業するプロジェクトが、目的(自分が作ったプロジェクト)のものになっているか確認します。コマンドライン上で、
gcloud config list
と打ちます。これは、現在作業しているプロジェクトを参照するコマンドです。返ってきた文章の中に
[core]
account = [自分のgmailアドレス]
project =[現在作業中のプロジェクトのID]
とあると思います。このプロジェクトIDが、作業したいプロジェクトのIDと一致しているか確認してください。もし違うようなら、
gcloud config set project [作業したいプロジェクトのID]
を実行しましょう。
Updated property [core/project].
と返ってくれば、作業するプロジェクトが変更できたことになります。
3. APIを有効にする(必須)
gcloudコマンドラインで次のコマンドを打ちます。
gcloud services enable language.googleapis.com
ここでエラーが起きる人は、作業2が正常にできていない場合があります。
4. サービスアカウントの作成(必須)
APIのリクエストを認証するためには、サービスアカウントというものを作る必要があります。詳しくは以下のリンクをご覧ください。
ここではプラットフォームからサービスアカウントを作成する方法を書きます。
まず、ホーム画面左の「IAMと管理」→「サービスアカウント」→「+ CREATE SERVICE ACCOUNT」をクリックします。
作成画面で、好きなサービスアカウント名を入力します。この後、
- ②このサービスアカウントにプロジェクトへのアクセスを許可する
は省略してOKです。複数人が関わるプロジェクトにおいて、特定の人に何らかの権限を与える必要があるときは記入してください。次に、③ユーザーにこのサービスアカウントへのアクセスを許可 のところで、「キーの作成(オプション)」という欄があります。これは、プログラムを動かす際に必要な秘密鍵を含むファイルをダウンロードするものです。「+ キーを作成」を押し、キーのタイプをJSONにし、作成をクリックしましょう。これで秘密鍵ができました。なお、ページにも書いてある通り、このファイルは復元できないので注意してください。秘密鍵なので扱いも慎重に。
5. 環境変数を設定(必須)
環境変数GOOGLE_APPLICATION_CREDENTIALS
を設定します。OSのコマンドラインで次のようなコマンドを打ちます。
- Mac or Linux
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
例)
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
- Windows(コマンドプロンプト)
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
6. gemをインストール(必須)
OSのコマンドラインで
gem install google-cloud-language
これでRubyでGoogle Natural Language APIを使う準備ができました。
いざ使ってみるぞ
こんなファイルを用意します。今回はAPIの中の一つの機能である「感情分析」を使ってみました。ソースコードはこんな感じです。
require 'google/cloud/language' #APIを使う
language = Google::Cloud::Language.new
response = language.analyze_sentiment content: "今日も1日楽しかった。", #ここに分析したい文章
type: :PLAIN_TEXT
sentiment = response.document_sentiment
score = sentiment.score.to_f.round(1) #float型に変換,少数第2位を四捨五入
magnitude = sentiment.magnitude.to_f.round(1)
puts "Score: #{score}"
puts "Magnitude: #{magnitude}"
出力結果
Score: 0.4
Magnitude: 0.4
- score: -1.0~1.0の中で大きいほど正の感情(ポジティブ)、小さいほど負の感情(ネガティブ)を抱いていることを示す。
- magnitude: 感情の強さ。0~infで、大きいほど感情的であることを示す。scoreが0.0であったとき、magnitudeが大きいなら「感情的であり、ポジティブとネガティブが打ち消しあっている」ことを示し、小さいなら「ニュートラルな文章である」ことを示す。
感想
意外と大変だな〜という印象でした。ただ、どの機能を使うにしてもほぼ同じような作業でできそうなので、一気にいろんなことを覚えなくてもいいのかもしれません。もう少し勉強していきたいなあと思います。
最後に
不明な点やおかしな点などございましたら気軽にコメントしていただけると嬉しいです。(もしかしたら間違っていることもあるかもしれませんが、暖かい目で見てから指摘くださると助かります!)
それでは!