Class: Google::Cloud::Language::Annotation

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

Overview

# Annotation

The results of all requested document analysis features.

See Project#annotate and Document#annotate.

Examples:

require "google/cloud"

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

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

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

Defined Under Namespace

Classes: Entities, Entity, Sentiment, TextSpan, Token

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAnnotation

Returns a new instance of Annotation.



51
52
53
# File 'lib/google/cloud/language/annotation.rb', line 51

def initialize
  @grpc = nil
end

Instance Attribute Details

#grpcObject



47
48
49
# File 'lib/google/cloud/language/annotation.rb', line 47

def grpc
  @grpc
end

Class Method Details

.from_grpc(grpc) ⇒ Object



204
205
206
# File 'lib/google/cloud/language/annotation.rb', line 204

def self.from_grpc grpc
  new.tap { |a| a.instance_variable_set :@grpc, grpc }
end

Instance Method Details

#entitiesEntities

The entities returned by entity analysis.

Examples:

require "google/cloud"

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

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

entities = annotation.entities
entities.count #=> 2
entity = entities.first

entity.name #=> "Darth Vader"
entity.type #=> :PERSON
entity.salience #=> 0.8421939611434937
entity.mentions.count #=> 1
entity.mentions.first.text # => "Darth Vader"
entity.mentions.first.offset # => 0
entity.wikipedia_url #=> "http://en.wikipedia.org/wiki/Darth_Vader"

Returns:



138
139
140
# File 'lib/google/cloud/language/annotation.rb', line 138

def entities
  @entities ||= Entities.from_grpc @grpc
end

#inspectObject



198
199
200
# File 'lib/google/cloud/language/annotation.rb', line 198

def inspect
  "#<#{self.class.name} #{self}>"
end

#languageString

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

Examples:

require "google/cloud"

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

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

Returns:

  • (String)

    the language code



185
186
187
# File 'lib/google/cloud/language/annotation.rb', line 185

def language
  @grpc.language
end

#sentencesArray<TextSpan>

The sentences returned by syntactic analysis.

Examples:

require "google/cloud"

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

content = "I love dogs. I hate cats."
document = language.document content
annotation = document.annotate

text_span = annotation.sentences.last
text_span.text #=> "I hate cats."
text_span.offset #=> 13

Returns:

  • (Array<TextSpan>)

    an array of pieces of text including relative location



75
76
77
78
79
# File 'lib/google/cloud/language/annotation.rb', line 75

def sentences
  @sentences ||= begin
    Array(grpc.sentences).map { |g| TextSpan.from_grpc g.text }
  end
end

#sentimentSentiment

The result of sentiment analysis.

Examples:

require "google/cloud"

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

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

sentiment.polarity #=> 1.0
sentiment.magnitude #=> 0.8999999761581421
sentiment.language #=> "en"

Returns:



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

def sentiment
  return nil if @grpc.document_sentiment.nil?
  @sentiment ||= Sentiment.from_grpc @grpc
end

#to_sObject



190
191
192
193
194
195
# File 'lib/google/cloud/language/annotation.rb', line 190

def to_s
  tmplt = "(sentences: %i, tokens: %i, entities: %i," \
          " sentiment: %s, language: %s)"
  format tmplt, sentences.count, tokens.count, entities.count,
         !sentiment.nil?, language.inspect
end

#tokensArray<Token>

The tokens returned by syntactic analysis.

Examples:

require "google/cloud"

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

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

annotation.tokens.count #=> 10
token = annotation.tokens.first

token.text_span.text #=> "Darth"
token.text_span.offset #=> 0
token.part_of_speech #=> :NOUN
token.head_token_index #=> 1
token.label #=> :NN
token.lemma #=> "Darth"

Returns:

  • (Array<Token>)

    an array of the smallest syntactic building blocks of the text



107
108
109
# File 'lib/google/cloud/language/annotation.rb', line 107

def tokens
  @tokens ||= Array(grpc.tokens).map { |g| Token.from_grpc g }
end