Ruby Natural Language クライアント ライブラリ v0.28.0 への移行

Ruby Natural Language クライアント ライブラリ v0.28.0 には、以前のクライアント ライブラリと比べ、設計に関する大きな違いがあります。

Natural Language ライブラリには次の変更が加えられています。

  • このクライアント ライブラリは RPC API との整合性が高まっています。

  • それぞれの分析リクエストは、Google::Cloud::Language::Document クラスを使用するのではなく、Google::Cloud::Language クラスと関連付けられた別個のメソッド呼び出しで表現されるようになりました。

  • コンテンツ メソッド パラメータで、文字列リテラルのコンテンツと Google Cloud Storage 上のコンテンツが区別されるようになりました。

このトピックでは、v0.28.0 の Ruby クライアント ライブラリを使用するために必要となる、Cloud Natural Language API クライアント ライブラリ向け Ruby コードに対して行う変更について説明します。

クライアント ライブラリの旧バージョンの実行

Ruby クライアント ライブラリを v0.28.0 にアップグレードする必要はありません。Ruby クライアント ライブラリの旧バージョンを引き続き使用し、コードを移行しない場合は、アプリで使用する Ruby クライアント ライブラリのバージョンを指定する必要があります。たとえば、特定のライブラリ バージョンを指定するには、プロジェクトの Gemfile ファイルを次のように編集します。

gem "google-cloud-language", "0.27.1"

削除されたクラス

Ruby 言語クライアント ライブラリ v0.28.0 の gem では、以下のクラスが削除されました。

  • Google::Cloud::Language::Project

  • Google::Cloud::Language::Document

  • Google::Cloud::Language::Annotation

必要なコードの変更

gem の依存関係

Ruby 言語クライアント ライブラリ v0.28.0 の gem でのクライアント ライブラリ パスは変更されていません。

require "google/cloud/language"

クライアントの作成

Ruby 言語クライアント ライブラリ v0.28.0 を使用して Natural Language API クライアントを作成するには、次の変更を行う必要があります。

  • project パラメータを削除します。Natural Language API ではリクエストにプロジェクト名を含めないため、project パラメータは削除されました。
language = Google::Cloud::Language.new

リクエストの作成

以降のセクションで、Ruby 言語クライアント ライブラリ v0.28.0 を使用してリクエストを作成する方法を説明します。記載する例では、テキスト文字列を使用したリクエストと Google Cloud Storage 内にあるファイルの URI を使用したリクエストの両方を実行します。

テキスト文字列を使用したコンテンツの分析

以下の例は、テキスト文字列を使用して Natural Language API にコンテンツを送信する方法を示しています。

クライアント ライブラリの旧バージョン:

# project_id   = "Your Google Cloud project ID"
# text_content = "text content for NLP api"

require "google/cloud/language"

language = Google::Cloud::Language.new project project_id
document = language.document text_content

sentiment = document.sentiment

Ruby クライアント ライブラリ v0.28.0:

# text_content = "Text to run sentiment analysis on"

require "google/cloud/language"

language = Google::Cloud::Language.new

response = language.analyze_sentiment content: text_content, type: :PLAIN_TEXT

sentiment = response.document_sentiment

content パラメータは、すべての分析メソッドで使用できます。type パラメータ language.analyze_sentiment content: text_content, type: :HTML を設定して HTML を分析することもできます。

ファイルを使用したコンテンツの分析

以下の例は、新しい gcs_content_uri パラメータを使用して感情分析を実行する際に、Google Cloud Storage URI またはウェブ URI を使用してテキスト コンテンツを表す新しい方法を示しています。

クライアント ライブラリの旧バージョン:

# project_id   = "Your Google Cloud project ID"
# storage_path = "gs://path/to/file"

require "google/cloud/language"

language = Google::Cloud::Language.new project project_id
document = language.document storage_path

sentiment = document.sentiment

Ruby クライアント ライブラリ v0.28.0:

# storage_path = "Path to file in Google Cloud Storage, eg. gs://bucket/file"

require "google/cloud/language"

language = Google::Cloud::Language.new

response = language.analyze_sentiment gcs_content_uri: storage_path, type: :PLAIN_TEXT

sentiment = response.document_sentiment

gcs_content_uri パラメータは、すべての分析メソッドで使用できます。type パラメータ language.analyze_sentiment content: text_content, type: :HTML を設定して HTML を分析することもできます。

更新されたリクエストとレスポンス

感情分析

AnalyzeSentiment メソッドに対してリクエストを実行するには、次に示すように Google::Cloud::Language#analyze_sentiment を使用するようになりました。

クライアント ライブラリの旧バージョン:

# project_id   = "Your Google Cloud project ID"
# text_content = "text content for NLP api"

require "google/cloud/language"

language  = Google::Cloud::Language.new project: project_id
document  = language.document text_content
sentiment = document.sentiment

puts "Overall document sentiment: (#{sentiment.score})"
puts "Sentence level sentiment:"

sentiment.sentences.each do |sentence|
  sentiment = sentence.sentiment
  puts "#{sentence.text}: (#{sentiment.score})"
end

Ruby クライアント ライブラリ v0.28.0:

# text_content = "Text to run sentiment analysis on"

require "google/cloud/language"

language = Google::Cloud::Language.new

response = language.analyze_sentiment content: text_content, type: :PLAIN_TEXT

sentiment = response.document_sentiment

puts "Overall document sentiment: (#{sentiment.score})"
puts "Sentence level sentiment:"

sentences = response.sentences

sentences.each do |sentence|
  sentiment = sentence.sentiment
  puts "#{sentence.text.content}: (#{sentiment.score})"
end

エンティティ分析

AnalyzeEntities メソッドに対してリクエストを実行するには、次に示すように Google::Cloud::Language#analyze_entities を使用するようになりました。

クライアント ライブラリの旧バージョン:

# project_id   = "Your Google Cloud project ID"
# text_content = "text content for NLP api"

require "google/cloud/language"

language = Google::Cloud::Language.new project: project_id
document = language.document text_content
entities = document.entities

entities.each do |entity|
  puts "Entity #{entity.name} #{entity.type}"

  if entity.metadata["wikipedia_url"]
    puts "URL: #{entity.metadata['wikipedia_url']}"
  end
end

Ruby クライアント ライブラリ v0.28.0:

# text_content = "Text to extract entities from"

require "google/cloud/language"

language = Google::Cloud::Language.new

response = language.analyze_entities content: text_content, type: :PLAIN_TEXT

entities = response.entities

entities.each do |entity|
  puts "Entity #{entity.name} #{entity.type}"

  if entity.metadata["wikipedia_url"]
    puts "URL: #{entity.metadata['wikipedia_url']}"
  end
end

構文分析

AnalyzeSyntax メソッドに対してリクエストを実行するには、次に示すように Google::Cloud::Language#analyze_syntax を使用するようになりました。

Google::Cloud::Language#analyze_syntax リクエストに対するレスポンスでは、次に示すように、これまで Google::Cloud::Language::Annotation::Syntax で使用できた文と品詞タグにもアクセスできます。

クライアント ライブラリの旧バージョン:

# project_id   = "Your Google Cloud project ID"
# text_content = "text content for NLP api"

require "google/cloud/language"

language = Google::Cloud::Language.new project: project_id
document = language.document text_content
syntax   = document.syntax

puts "Sentences: #{syntax.sentences.count}"
puts "Tokens: #{syntax.tokens.count}"

syntax.tokens.each do |token|
  puts "#{token.part_of_speech.tag} #{token.text_span.text}"
end

Ruby クライアント ライブラリ v0.28.0:

# text_content = "Text to analyze syntax of"

require "google/cloud/language"

language = Google::Cloud::Language.new
response = language.analyze_syntax content: text_content, type: :PLAIN_TEXT

sentences = response.sentences
tokens    = response.tokens

puts "Sentences: #{sentences.count}"
puts "Tokens: #{tokens.count}"

tokens.each do |token|
  puts "#{token.part_of_speech.tag} #{token.text.content}"
end
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Natural Language API
ご不明な点がありましたら、Google のサポートページをご覧ください。