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"

gcloud = Google::Cloud.new
language = gcloud.language

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.



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

def initialize service
  @service = service
end

Instance Attribute Details

#serviceObject



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

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::GCE.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"

gcloud = Google::Cloud.new
language = gcloud.language

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.



233
234
235
236
237
238
239
240
241
242
# File 'lib/google/cloud/language/project.rb', line 233

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"

gcloud = Google::Cloud.new
language = gcloud.language

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

With a Google Cloud Storage URI:

require "google/cloud"

gcloud = Google::Cloud.new
language = gcloud.language

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

With a Google Cloud Storage File object:

require "google/cloud"

gcloud = Google::Cloud.new
storage = gcloud.storage

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

language = gcloud.language

document = language.document file

With ‘format` and `language` options:

require "google/cloud"

gcloud = Google::Cloud.new
language = gcloud.language

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.



138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/google/cloud/language/project.rb', line 138

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"

gcloud = Google::Cloud.new
language = gcloud.language

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:



310
311
312
313
314
315
# File 'lib/google/cloud/language/project.rb', line 310

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.



184
185
186
# File 'lib/google/cloud/language/project.rb', line 184

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

#projectObject

The Language project connected to.

Examples:

require "google/cloud"

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

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"

gcloud = Google::Cloud.new
language = gcloud.language

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:



347
348
349
350
351
352
# File 'lib/google/cloud/language/project.rb', line 347

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"

gcloud = Google::Cloud.new
language = gcloud.language

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.



276
277
278
279
# File 'lib/google/cloud/language/project.rb', line 276

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.



166
167
168
# File 'lib/google/cloud/language/project.rb', line 166

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