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 = "Star Wars is a great movie. The Death Star is fearsome."
annotation = language.annotate content

annotation.sentiment.score #=> 0.10000000149011612
annotation.sentiment.magnitude #=> 1.100000023841858
annotation.entities.count #=> 3
annotation.sentences.count #=> 2
annotation.tokens.count #=> 13

Instance Method Summary collapse

Instance Method Details

#annotate(content, sentiment: false, entities: false, syntax: false, format: nil, language: 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 for details.

Examples:

require "google/cloud/language"

language = Google::Cloud::Language.new

content = "Star Wars is a great movie. The Death Star is fearsome."
annotation = language.annotate content

annotation.sentiment.score #=> 0.10000000149011612
annotation.sentiment.magnitude #=> 1.100000023841858
annotation.entities.count #=> 3
annotation.sentences.count #=> 2
annotation.tokens.count #=> 13

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)

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

  • entities (Boolean)

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

  • syntax (Boolean)

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

  • format (String, Symbol)

    The format of the document. Acceptable values are: text or html. Optional.

  • language (String, Symbol)

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

Returns:

  • (Annotation)

    The results for the content analysis.



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

def annotate content, sentiment: false, entities: false, syntax: false,
             format: nil, language: nil
  ensure_service!
  doc = document content, language: language, format: format
  grpc = service.annotate doc.to_grpc, sentiment: sentiment,
                                       entities: entities,
                                       syntax: syntax
  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, Symbol)

    The format of the document. Acceptable values are: text or html. If no format is provided, the document will default to text. Optional.

  • language (String, Symbol)

    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.



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

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) ⇒ 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

content = "Star Wars is a great movie. The Death Star is fearsome."
document = language.document content

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

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, Symbol)

    The format of the document. Acceptable values are: text or html. Optional.

  • language (String, Symbol)

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

Returns:



315
316
317
318
319
320
# File 'lib/google/cloud/language/project.rb', line 315

def entities content, format: :text, language: nil
  ensure_service!
  doc = document content, language: language, format: format
  grpc = service.entities doc.to_grpc
  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, Symbol)

    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.



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

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

content = "Star Wars is a great movie. The Death Star is fearsome."
document = language.document content

sentiment = language.sentiment document

sentiment.score #=> 0.10000000149011612
sentiment.magnitude #=> 1.100000023841858
sentiment.language #=> "en"

sentence = sentiment.sentences.first
sentence.sentiment.score #=> 0.699999988079071
sentence.sentiment.magnitude #=> 0.699999988079071

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, Symbol)

    The format of the document. Acceptable values are: text or html. Optional.

  • language (String, Symbol)

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

Returns:



358
359
360
361
362
363
# File 'lib/google/cloud/language/project.rb', line 358

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) ⇒ Annotation::Syntax

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

content = "Star Wars is a great movie. The Death Star is fearsome."
document = language.document content

syntax = language.syntax document

sentence = syntax.sentences.last
sentence.text #=> "The Death Star is fearsome."
sentence.offset #=> 28

syntax.tokens.count #=> 13
token = syntax.tokens.first

token.text #=> "Star"
token.offset #=> 0
token.part_of_speech.tag #=> :NOUN
token.head_token_index #=> 1
token.label #=> :TITLE
token.lemma #=> "Star"

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, Symbol)

    The format of the document. Acceptable values are: text or html. Optional.

  • language (String, Symbol)

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

Returns:



281
282
283
284
285
286
# File 'lib/google/cloud/language/project.rb', line 281

def syntax content, format: nil, language: nil
  ensure_service!
  doc = document content, language: language, format: format
  grpc = service.syntax doc.to_grpc
  Annotation::Syntax.from_grpc grpc
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, Symbol)

    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.



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

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