Class: Google::Cloud::Language::Project

Inherits:
Object
  • Object
show all
Defined in:
lib/google/cloud/language/project.rb

Overview

# Project

Google Cloud Natural Language API reveals the structure and meaning of text by offering powerful machine learning models in an easy to use REST API. You can analyze text uploaded in your request or integrate with your document storage on Google Cloud Storage.

See Google::Cloud#language

Examples:

require "google/cloud/language"

language = Google::Cloud::Language.new

content = "Darth Vader is the best villain in Star Wars."
annotation = language.annotate content

annotation.sentiment.polarity #=> 1.0
annotation.sentiment.magnitude #=> 0.8999999761581421
annotation.entities.count #=> 2
annotation.sentences.count #=> 1
annotation.tokens.count #=> 10

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(service) ⇒ Project

Returns a new instance of Project.



56
57
58
# File 'lib/google/cloud/language/project.rb', line 56

def initialize service
  @service = service
end

Instance Attribute Details

#serviceObject



52
53
54
# File 'lib/google/cloud/language/project.rb', line 52

def service
  @service
end

Class Method Details

.default_projectObject



78
79
80
81
82
83
# File 'lib/google/cloud/language/project.rb', line 78

def self.default_project
  ENV["LANGUAGE_PROJECT"] ||
    ENV["GOOGLE_CLOUD_PROJECT"] ||
    ENV["GCLOUD_PROJECT"] ||
    Google::Cloud::Core::Environment.project_id
end

Instance Method Details

#annotate(content, sentiment: false, entities: false, syntax: false, format: nil, language: nil, encoding: nil) ⇒ Annotation Also known as: mark, detect

Analyzes the content and returns sentiment, entity, and syntactic feature results, depending on the option flags. Calling ‘annotate` with no arguments will perform all analysis features. Each feature is priced separately. See [Pricing](cloud.google.com/natural-language/pricing) for details.

Examples:

require "google/cloud/language"

language = Google::Cloud::Language.new

content = "Darth Vader is the best villain in Star Wars."
annotation = language.annotate content

annotation.sentiment.polarity #=> 1.0
annotation.sentiment.magnitude #=> 0.8999999761581421
annotation.entities.count #=> 2
annotation.sentences.count #=> 1
annotation.tokens.count #=> 10

Parameters:

  • content (String, Document, Google::Cloud::Storage::File)

    The content to annotate. This can be an Document instance, or any other type that converts to an Document. See #document for details.

  • sentiment (Boolean) (defaults to: false)

    Whether to perform the sentiment analysis. Optional. The default is ‘false`. If every feature option is `false`, all features will be performed.

  • entities (Boolean) (defaults to: false)

    Whether to perform the entity analysis. Optional. The default is ‘false`. If every feature option is `false`, all features will be performed.

  • syntax (Boolean) (defaults to: false)

    Whether to perform the syntactic analysis. Optional. The default is ‘false`. If every feature option is `false`, all features will be performed.

  • format (String) (defaults to: nil)

    The format of the document (TEXT/HTML). Optional.

  • language (String) (defaults to: nil)

    The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. Optional.

  • encoding (String) (defaults to: nil)

    The encoding type used by the API to calculate offsets. Optional.

Returns:

  • (Annotation)

    ] The results for the content analysis.



228
229
230
231
232
233
234
235
236
237
# File 'lib/google/cloud/language/project.rb', line 228

def annotate content, sentiment: false, entities: false, syntax: false,
             format: nil, language: nil, encoding: nil
  ensure_service!
  doc = document content, language: language, format: format
  grpc = service.annotate doc.to_grpc, sentiment: sentiment,
                                       entities: entities,
                                       syntax: syntax,
                                       encoding: encoding
  Annotation.from_grpc grpc
end

#document(content, format: nil, language: nil) ⇒ Document Also known as: doc

Returns a new document from the given content. No API call is made.

Examples:

require "google/cloud/language"

language = Google::Cloud::Language.new

document = language.document "It was the best of times, it was..."

With a Google Cloud Storage URI:

require "google/cloud/language"

language = Google::Cloud::Language.new

document = language.document "gs://bucket-name/path/to/document"

With a Google Cloud Storage File object:

require "google/cloud/storage"
storage = Google::Cloud::Storage.new

bucket = storage.bucket "bucket-name"
file = bucket.file "path/to/document"

require "google/cloud/language"
language = Google::Cloud::Language.new

document = language.document file

With ‘format` and `language` options:

require "google/cloud/language"

language = Google::Cloud::Language.new

document = language.document "<p>El viejo y el mar</p>",
                        format: :html, language: "es"

Parameters:

  • content (String, Google::Cloud::Storage::File)

    A string of text to be annotated, or a Cloud Storage URI of the form ‘“gs://bucketname/path/to/document.ext”`; or an instance of Google::Cloud::Storage::File of the text to be annotated.

  • format (String) (defaults to: nil)

    The format of the document (TEXT/HTML). Optional.

  • language (String) (defaults to: nil)

    The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. Optional.

Returns:

  • (Document)

    An document for the Language service.



134
135
136
137
138
139
140
141
142
143
144
145
# File 'lib/google/cloud/language/project.rb', line 134

def document content, format: nil, language: nil
  content = content.to_gs_url if content.respond_to? :to_gs_url
  if content.is_a? Document
    # Create new document with the provided format and language
    Document.from_source content.source, @service,
                         format: (format || content.format),
                         language: (language || content.language)
  else
    Document.from_source content, @service, format: format,
                                            language: language
  end
end

#entities(content, format: :text, language: nil, encoding: nil) ⇒ Annotation::Entities

Entity analysis inspects the given text for known entities (proper nouns such as public figures, landmarks, etc.) and returns information about those entities.

Examples:

require "google/cloud/language"

language = Google::Cloud::Language.new

document = language.document "Hello Chris and Mike!"

entities = language.entities document
entities.count #=> 2

Parameters:

  • content (String, Document)

    The content to annotate. This can be an Document instance, or any other type that converts to an Document. See #document for details.

  • format (String) (defaults to: :text)

    The format of the document (TEXT/HTML). Optional.

  • language (String) (defaults to: nil)

    The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. Optional.

  • encoding (String) (defaults to: nil)

    The encoding type used by the API to calculate offsets. Optional.

Returns:



303
304
305
306
307
308
# File 'lib/google/cloud/language/project.rb', line 303

def entities content, format: :text, language: nil, encoding: nil
  ensure_service!
  doc = document content, language: language, format: format
  grpc = service.entities doc.to_grpc, encoding: encoding
  Annotation::Entities.from_grpc grpc
end

#html(content, language: nil) ⇒ Document

Returns a new document from the given content with the ‘format` value `:html`. No API call is made.

Parameters:

  • content (String, Google::Cloud::Storage::File)

    A string of text to be annotated, or a Cloud Storage URI of the form ‘“gs://bucketname/path/to/document.ext”`; or an instance of Google::Cloud::Storage::File of the text to be annotated.

  • language (String) (defaults to: nil)

    The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. Optional.

Returns:

  • (Document)

    An document for the Language service.



180
181
182
# File 'lib/google/cloud/language/project.rb', line 180

def html content, language: nil
  document content, format: :html, language: language
end

#projectObject

The Language project connected to.

Examples:

require "google/cloud/language"

language = Google::Cloud::Language.new(
  project: "my-project-id",
  keyfile: "/path/to/keyfile.json"
)

language.project #=> "my-project-id"


72
73
74
# File 'lib/google/cloud/language/project.rb', line 72

def project
  service.project
end

#sentiment(content, format: :text, language: nil) ⇒ Annotation::Sentiment

Sentiment analysis inspects the given text and identifies the prevailing emotional opinion within the text, especially to determine a writer’s attitude as positive, negative, or neutral. Currently, only English is supported for sentiment analysis.

Examples:

require "google/cloud/language"

language = Google::Cloud::Language.new

document = language.document "Hello Chris and Mike!"

sentiment = language.sentiment document
sentiment.polarity #=> 1.0
sentiment.magnitude #=> 0.8999999761581421

Parameters:

  • content (String, Document)

    The content to annotate. This can be an Document instance, or any other type that converts to an Document. See #document for details.

  • format (String) (defaults to: :text)

    The format of the document (TEXT/HTML). Optional.

  • language (String) (defaults to: nil)

    The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. Optional.

Returns:



339
340
341
342
343
344
# File 'lib/google/cloud/language/project.rb', line 339

def sentiment content, format: :text, language: nil
  ensure_service!
  doc = document content, language: language, format: format
  grpc = service.sentiment doc.to_grpc
  Annotation::Sentiment.from_grpc grpc
end

#syntax(content, format: nil, language: nil, encoding: nil) ⇒ Annotation

Syntactic analysis extracts linguistic information, breaking up the given text into a series of sentences and tokens (generally, word boundaries), providing further analysis on those tokens.

Examples:

require "google/cloud/language"

language = Google::Cloud::Language.new

document = language.document "Hello world!"

annotation = language.syntax document
annotation.thing #=> Some Result

Parameters:

  • content (String, Document, Google::Cloud::Storage::File)

    The content to annotate. This can be an Document instance, or any other type that converts to an Document. See #document for details.

  • format (String) (defaults to: nil)

    The format of the document (TEXT/HTML). Optional.

  • language (String) (defaults to: nil)

    The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. Optional.

  • encoding (String) (defaults to: nil)

    The encoding type used by the API to calculate offsets. Optional.

Returns:

  • (Annotation)

    ] The results for the content syntax analysis.



270
271
272
273
# File 'lib/google/cloud/language/project.rb', line 270

def syntax content, format: nil, language: nil, encoding: nil
  annotate content, syntax: true, format: format, language: language,
                    encoding: encoding
end

#text(content, language: nil) ⇒ Document

Returns a new document from the given content with the ‘format` value `:text`. No API call is made.

Parameters:

  • content (String, Google::Cloud::Storage::File)

    A string of text to be annotated, or a Cloud Storage URI of the form ‘“gs://bucketname/path/to/document.ext”`; or an instance of Google::Cloud::Storage::File of the text to be annotated.

  • language (String) (defaults to: nil)

    The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. Optional.

Returns:

  • (Document)

    An document for the Language service.



162
163
164
# File 'lib/google/cloud/language/project.rb', line 162

def text content, language: nil
  document content, format: :text, language: language
end