google-cloud-language 0.27.1 → 0.28.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.yardopts +2 -6
- data/LICENSE +1 -1
- data/README.md +35 -59
- data/lib/google/cloud/language.rb +81 -230
- data/lib/google/cloud/language/credentials.rb +9 -11
- data/lib/google/cloud/language/v1.rb +107 -0
- data/lib/google/cloud/language/v1/doc/google/cloud/language/v1/language_service.rb +108 -18
- data/lib/google/cloud/language/v1/doc/overview.rb +67 -0
- data/lib/google/cloud/language/v1/language_service_client.rb +157 -67
- data/lib/google/cloud/language/v1/language_service_client_config.json +10 -0
- data/lib/google/cloud/language/v1/language_service_pb.rb +34 -0
- data/lib/google/cloud/language/v1/language_service_services_pb.rb +5 -0
- data/lib/google/cloud/language/v1beta2.rb +107 -0
- data/lib/google/cloud/language/v1beta2/doc/google/cloud/language/v1beta2/language_service.rb +29 -0
- data/lib/google/cloud/language/v1beta2/doc/overview.rb +67 -0
- data/lib/google/cloud/language/v1beta2/language_service_client.rb +5 -6
- data/lib/google/cloud/language/v1beta2/language_service_pb.rb +6 -0
- metadata +24 -100
- data/lib/google-cloud-language.rb +0 -112
- data/lib/google/cloud/language/annotation.rb +0 -1084
- data/lib/google/cloud/language/convert.rb +0 -35
- data/lib/google/cloud/language/document.rb +0 -375
- data/lib/google/cloud/language/project.rb +0 -376
- data/lib/google/cloud/language/service.rb +0 -143
- data/lib/google/cloud/language/version.rb +0 -22
@@ -1,35 +0,0 @@
|
|
1
|
-
# Copyright 2017 Google Inc. All rights reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
|
16
|
-
module Google
|
17
|
-
module Cloud
|
18
|
-
module Language
|
19
|
-
##
|
20
|
-
# @private Conversion to/from Language GRPC objects.
|
21
|
-
module Convert
|
22
|
-
##
|
23
|
-
# @private Convert a Google::Protobuf::Map to a Hash
|
24
|
-
def self.map_to_hash map
|
25
|
-
if map.respond_to? :to_h
|
26
|
-
map.to_h
|
27
|
-
else
|
28
|
-
# Enumerable doesn't have to_h on ruby 2.0...
|
29
|
-
Hash[map.to_a]
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,375 +0,0 @@
|
|
1
|
-
# Copyright 2016 Google Inc. All rights reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
|
16
|
-
require "google/cloud/language/annotation"
|
17
|
-
|
18
|
-
module Google
|
19
|
-
module Cloud
|
20
|
-
module Language
|
21
|
-
##
|
22
|
-
# # Document
|
23
|
-
#
|
24
|
-
# Represents a document for the Language service.
|
25
|
-
#
|
26
|
-
# Be aware that only English, Spanish, and Japanese language content are
|
27
|
-
# supported.
|
28
|
-
#
|
29
|
-
# See {Project#document}.
|
30
|
-
#
|
31
|
-
# @example
|
32
|
-
# require "google/cloud/language"
|
33
|
-
#
|
34
|
-
# language = Google::Cloud::Language.new
|
35
|
-
#
|
36
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
37
|
-
# document = language.document content
|
38
|
-
# annotation = document.annotate
|
39
|
-
#
|
40
|
-
# annotation.entities.count #=> 3
|
41
|
-
# annotation.sentiment.score #=> 0.10000000149011612
|
42
|
-
# annotation.sentiment.magnitude #=> 1.100000023841858
|
43
|
-
# annotation.sentences.count #=> 2
|
44
|
-
# annotation.tokens.count #=> 13
|
45
|
-
#
|
46
|
-
class Document
|
47
|
-
##
|
48
|
-
# @private The gRPC Service object.
|
49
|
-
attr_accessor :service
|
50
|
-
|
51
|
-
##
|
52
|
-
# @private Creates a new document instance.
|
53
|
-
def initialize
|
54
|
-
@grpc = nil
|
55
|
-
@service = nil
|
56
|
-
end
|
57
|
-
|
58
|
-
##
|
59
|
-
# @private Whether the document has content.
|
60
|
-
#
|
61
|
-
def content?
|
62
|
-
@grpc.source == :content
|
63
|
-
end
|
64
|
-
|
65
|
-
##
|
66
|
-
# @private Whether the document source is a Google Cloud Storage URI.
|
67
|
-
#
|
68
|
-
def gcs_url?
|
69
|
-
@grpc.source == :gcs_content_uri
|
70
|
-
end
|
71
|
-
|
72
|
-
##
|
73
|
-
# @private The source of the document's content.
|
74
|
-
#
|
75
|
-
def source
|
76
|
-
return @grpc.content if content?
|
77
|
-
@grpc.gcs_content_uri
|
78
|
-
end
|
79
|
-
|
80
|
-
##
|
81
|
-
# The document's format.
|
82
|
-
#
|
83
|
-
# @return [Symbol] `:text` or `:html`
|
84
|
-
#
|
85
|
-
def format
|
86
|
-
return :text if text?
|
87
|
-
return :html if html?
|
88
|
-
end
|
89
|
-
|
90
|
-
##
|
91
|
-
# Sets the document's format.
|
92
|
-
#
|
93
|
-
# @param [Symbol, String] new_format Accepted values are `:text` or
|
94
|
-
# `:html`.
|
95
|
-
#
|
96
|
-
# @example
|
97
|
-
# require "google/cloud/language"
|
98
|
-
#
|
99
|
-
# language = Google::Cloud::Language.new
|
100
|
-
#
|
101
|
-
# document = language.document "<p>The Old Man and the Sea</p>"
|
102
|
-
# document.format = :html
|
103
|
-
#
|
104
|
-
def format= new_format
|
105
|
-
@grpc.type = :PLAIN_TEXT if new_format.to_s == "text"
|
106
|
-
@grpc.type = :HTML if new_format.to_s == "html"
|
107
|
-
@grpc.type
|
108
|
-
end
|
109
|
-
|
110
|
-
##
|
111
|
-
# Whether the document is the `TEXT` format.
|
112
|
-
#
|
113
|
-
# @return [Boolean]
|
114
|
-
#
|
115
|
-
def text?
|
116
|
-
@grpc.type == :PLAIN_TEXT
|
117
|
-
end
|
118
|
-
|
119
|
-
##
|
120
|
-
# Sets the document to the `TEXT` format.
|
121
|
-
#
|
122
|
-
def text!
|
123
|
-
@grpc.type = :PLAIN_TEXT
|
124
|
-
end
|
125
|
-
|
126
|
-
##
|
127
|
-
# Whether the document is the `HTML` format.
|
128
|
-
#
|
129
|
-
# @return [Boolean]
|
130
|
-
#
|
131
|
-
def html?
|
132
|
-
@grpc.type == :HTML
|
133
|
-
end
|
134
|
-
|
135
|
-
##
|
136
|
-
# Sets the document to the `HTML` format.
|
137
|
-
#
|
138
|
-
def html!
|
139
|
-
@grpc.type = :HTML
|
140
|
-
end
|
141
|
-
|
142
|
-
##
|
143
|
-
# The document's language. ISO and BCP-47 language codes are supported.
|
144
|
-
#
|
145
|
-
# @return [String]
|
146
|
-
#
|
147
|
-
def language
|
148
|
-
@grpc.language
|
149
|
-
end
|
150
|
-
|
151
|
-
##
|
152
|
-
# Sets the document's language.
|
153
|
-
#
|
154
|
-
# @param [String, Symbol] new_language ISO and BCP-47 language codes are
|
155
|
-
# accepted.
|
156
|
-
#
|
157
|
-
# @example
|
158
|
-
# require "google/cloud/language"
|
159
|
-
#
|
160
|
-
# language = Google::Cloud::Language.new
|
161
|
-
#
|
162
|
-
# document = language.document "<p>El viejo y el mar</p>"
|
163
|
-
# document.language = "es"
|
164
|
-
#
|
165
|
-
def language= new_language
|
166
|
-
@grpc.language = new_language.to_s
|
167
|
-
end
|
168
|
-
|
169
|
-
##
|
170
|
-
# Analyzes the document and returns sentiment, entity, and syntactic
|
171
|
-
# feature results, depending on the option flags. Calling `annotate`
|
172
|
-
# with no arguments will perform **all** analysis features. Each feature
|
173
|
-
# is priced separately. See [Pricing](https://cloud.google.com/natural-language/pricing)
|
174
|
-
# for details.
|
175
|
-
#
|
176
|
-
# @param [Boolean] sentiment Whether to perform sentiment analysis.
|
177
|
-
# Optional. The default is `false`. If every feature option is
|
178
|
-
# `false`, **all** features will be performed.
|
179
|
-
# @param [Boolean] entities Whether to perform the entity analysis.
|
180
|
-
# Optional. The default is `false`. If every feature option is
|
181
|
-
# `false`, **all** features will be performed.
|
182
|
-
# @param [Boolean] syntax Whether to perform syntactic analysis.
|
183
|
-
# Optional. The default is `false`. If every feature option is
|
184
|
-
# `false`, **all** features will be performed.
|
185
|
-
#
|
186
|
-
# @return [Annotation] The results of the content analysis.
|
187
|
-
#
|
188
|
-
# @example
|
189
|
-
# require "google/cloud/language"
|
190
|
-
#
|
191
|
-
# language = Google::Cloud::Language.new
|
192
|
-
#
|
193
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
194
|
-
# document = language.document content
|
195
|
-
# annotation = document.annotate
|
196
|
-
#
|
197
|
-
# annotation.sentiment.score #=> 0.10000000149011612
|
198
|
-
# annotation.sentiment.magnitude #=> 1.100000023841858
|
199
|
-
# annotation.entities.count #=> 3
|
200
|
-
# annotation.sentences.count #=> 2
|
201
|
-
# annotation.tokens.count #=> 13
|
202
|
-
#
|
203
|
-
# @example With feature flags:
|
204
|
-
# require "google/cloud/language"
|
205
|
-
#
|
206
|
-
# language = Google::Cloud::Language.new
|
207
|
-
#
|
208
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
209
|
-
# document = language.document content
|
210
|
-
# annotation = document.annotate entities: true, syntax: true
|
211
|
-
#
|
212
|
-
# annotation.entities.count #=> 3
|
213
|
-
# annotation.sentences.count #=> 2
|
214
|
-
# annotation.tokens.count #=> 13
|
215
|
-
#
|
216
|
-
def annotate sentiment: false, entities: false, syntax: false
|
217
|
-
ensure_service!
|
218
|
-
grpc = service.annotate to_grpc, sentiment: sentiment,
|
219
|
-
entities: entities,
|
220
|
-
syntax: syntax
|
221
|
-
Annotation.from_grpc grpc
|
222
|
-
end
|
223
|
-
alias_method :mark, :annotate
|
224
|
-
alias_method :detect, :annotate
|
225
|
-
|
226
|
-
##
|
227
|
-
# Syntactic analysis extracts linguistic information, breaking up the
|
228
|
-
# given text into a series of sentences and tokens (generally, word
|
229
|
-
# boundaries), providing further analysis on those tokens.
|
230
|
-
#
|
231
|
-
# @return [Annotation::Syntax] The results for the content analysis.
|
232
|
-
#
|
233
|
-
# @example
|
234
|
-
# require "google/cloud/language"
|
235
|
-
#
|
236
|
-
# language = Google::Cloud::Language.new
|
237
|
-
#
|
238
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
239
|
-
# document = language.document content
|
240
|
-
#
|
241
|
-
# syntax = document.syntax
|
242
|
-
#
|
243
|
-
# sentence = syntax.sentences.last
|
244
|
-
# sentence.text #=> "The Death Star is fearsome."
|
245
|
-
# sentence.offset #=> 28
|
246
|
-
#
|
247
|
-
# syntax.tokens.count #=> 13
|
248
|
-
# token = syntax.tokens.first
|
249
|
-
#
|
250
|
-
# token.text #=> "Star"
|
251
|
-
# token.offset #=> 0
|
252
|
-
# token.part_of_speech.tag #=> :NOUN
|
253
|
-
# token.head_token_index #=> 1
|
254
|
-
# token.label #=> :TITLE
|
255
|
-
# token.lemma #=> "Star"
|
256
|
-
#
|
257
|
-
def syntax
|
258
|
-
ensure_service!
|
259
|
-
grpc = service.syntax to_grpc
|
260
|
-
Annotation::Syntax.from_grpc grpc
|
261
|
-
end
|
262
|
-
|
263
|
-
##
|
264
|
-
# Entity analysis inspects the given text for known entities (proper
|
265
|
-
# nouns such as public figures, landmarks, etc.) and returns information
|
266
|
-
# about those entities.
|
267
|
-
#
|
268
|
-
# @return [Annotation::Entities] The results for the entities analysis.
|
269
|
-
#
|
270
|
-
# @example
|
271
|
-
# require "google/cloud/language"
|
272
|
-
#
|
273
|
-
# language = Google::Cloud::Language.new
|
274
|
-
#
|
275
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
276
|
-
# document = language.document content
|
277
|
-
# entities = document.entities # API call
|
278
|
-
#
|
279
|
-
# entities.count #=> 3
|
280
|
-
# entities.first.name #=> "Star Wars"
|
281
|
-
# entities.first.type #=> :WORK_OF_ART
|
282
|
-
# entities.first.mid #=> "/m/06mmr"
|
283
|
-
#
|
284
|
-
def entities
|
285
|
-
ensure_service!
|
286
|
-
grpc = service.entities to_grpc
|
287
|
-
Annotation::Entities.from_grpc grpc
|
288
|
-
end
|
289
|
-
|
290
|
-
##
|
291
|
-
# Sentiment analysis inspects the given text and identifies the
|
292
|
-
# prevailing emotional opinion within the text, especially to determine
|
293
|
-
# a writer's attitude as positive, negative, or neutral. Currently, only
|
294
|
-
# English is supported for sentiment analysis.
|
295
|
-
#
|
296
|
-
# @return [Annotation::Sentiment] The results for the sentiment
|
297
|
-
# analysis.
|
298
|
-
#
|
299
|
-
# @example
|
300
|
-
# require "google/cloud/language"
|
301
|
-
#
|
302
|
-
# language = Google::Cloud::Language.new
|
303
|
-
#
|
304
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
305
|
-
# document = language.document content
|
306
|
-
#
|
307
|
-
# sentiment = document.sentiment
|
308
|
-
#
|
309
|
-
# sentiment.score #=> 0.10000000149011612
|
310
|
-
# sentiment.magnitude #=> 1.100000023841858
|
311
|
-
# sentiment.language #=> "en"
|
312
|
-
#
|
313
|
-
# sentence = sentiment.sentences.first
|
314
|
-
# sentence.sentiment.score #=> 0.699999988079071
|
315
|
-
# sentence.sentiment.magnitude #=> 0.699999988079071
|
316
|
-
#
|
317
|
-
def sentiment
|
318
|
-
ensure_service!
|
319
|
-
grpc = service.sentiment to_grpc
|
320
|
-
Annotation::Sentiment.from_grpc grpc
|
321
|
-
end
|
322
|
-
|
323
|
-
# @private
|
324
|
-
def inspect
|
325
|
-
"#<#{self.class.name} (" \
|
326
|
-
"#{(content? ? "\"#{source[0, 16]}...\"" : source)}, " \
|
327
|
-
"format: #{format.inspect}, language: #{language.inspect})>"
|
328
|
-
end
|
329
|
-
|
330
|
-
##
|
331
|
-
# @private New gRPC object.
|
332
|
-
def to_grpc
|
333
|
-
@grpc
|
334
|
-
end
|
335
|
-
|
336
|
-
##
|
337
|
-
# @private
|
338
|
-
def self.from_grpc grpc, service
|
339
|
-
new.tap do |i|
|
340
|
-
i.instance_variable_set :@grpc, grpc
|
341
|
-
i.instance_variable_set :@service, service
|
342
|
-
end
|
343
|
-
end
|
344
|
-
|
345
|
-
##
|
346
|
-
# @private
|
347
|
-
def self.from_source source, service, format: nil, language: nil
|
348
|
-
source = String source
|
349
|
-
grpc = Google::Cloud::Language::V1::Document.new
|
350
|
-
if source.start_with? "gs://"
|
351
|
-
grpc.gcs_content_uri = source
|
352
|
-
format ||= :html if source.end_with? ".html"
|
353
|
-
else
|
354
|
-
grpc.content = source
|
355
|
-
end
|
356
|
-
if format.to_s == "html"
|
357
|
-
grpc.type = :HTML
|
358
|
-
else
|
359
|
-
grpc.type = :PLAIN_TEXT
|
360
|
-
end
|
361
|
-
grpc.language = language.to_s unless language.nil?
|
362
|
-
from_grpc grpc, service
|
363
|
-
end
|
364
|
-
|
365
|
-
protected
|
366
|
-
|
367
|
-
##
|
368
|
-
# Raise an error unless an active language project object is available.
|
369
|
-
def ensure_service!
|
370
|
-
fail "Must have active connection" unless service
|
371
|
-
end
|
372
|
-
end
|
373
|
-
end
|
374
|
-
end
|
375
|
-
end
|
@@ -1,376 +0,0 @@
|
|
1
|
-
# Copyright 2016 Google Inc. All rights reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
|
16
|
-
require "google/cloud/errors"
|
17
|
-
require "google/cloud/env"
|
18
|
-
require "google/cloud/language/service"
|
19
|
-
require "google/cloud/language/document"
|
20
|
-
require "google/cloud/language/annotation"
|
21
|
-
|
22
|
-
module Google
|
23
|
-
module Cloud
|
24
|
-
module Language
|
25
|
-
##
|
26
|
-
# # Project
|
27
|
-
#
|
28
|
-
# Google Cloud Natural Language API reveals the structure and meaning of
|
29
|
-
# text by offering powerful machine learning models in an easy to use REST
|
30
|
-
# API. You can analyze text uploaded in your request or integrate with
|
31
|
-
# your document storage on Google Cloud Storage.
|
32
|
-
#
|
33
|
-
# See {Google::Cloud#language}
|
34
|
-
#
|
35
|
-
# @example
|
36
|
-
# require "google/cloud/language"
|
37
|
-
#
|
38
|
-
# language = Google::Cloud::Language.new
|
39
|
-
#
|
40
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
41
|
-
# annotation = language.annotate content
|
42
|
-
#
|
43
|
-
# annotation.sentiment.score #=> 0.10000000149011612
|
44
|
-
# annotation.sentiment.magnitude #=> 1.100000023841858
|
45
|
-
# annotation.entities.count #=> 3
|
46
|
-
# annotation.sentences.count #=> 2
|
47
|
-
# annotation.tokens.count #=> 13
|
48
|
-
#
|
49
|
-
class Project
|
50
|
-
##
|
51
|
-
# @private The gRPC Service object.
|
52
|
-
attr_accessor :service
|
53
|
-
|
54
|
-
##
|
55
|
-
# @private Creates a new Language Project instance.
|
56
|
-
def initialize service
|
57
|
-
@service = service
|
58
|
-
end
|
59
|
-
|
60
|
-
# The Language project connected to.
|
61
|
-
#
|
62
|
-
# @example
|
63
|
-
# require "google/cloud/language"
|
64
|
-
#
|
65
|
-
# language = Google::Cloud::Language.new(
|
66
|
-
# project: "my-project-id",
|
67
|
-
# keyfile: "/path/to/keyfile.json"
|
68
|
-
# )
|
69
|
-
#
|
70
|
-
# language.project #=> "my-project-id"
|
71
|
-
#
|
72
|
-
def project
|
73
|
-
service.project
|
74
|
-
end
|
75
|
-
|
76
|
-
##
|
77
|
-
# @private Default project.
|
78
|
-
def self.default_project
|
79
|
-
ENV["LANGUAGE_PROJECT"] ||
|
80
|
-
ENV["GOOGLE_CLOUD_PROJECT"] ||
|
81
|
-
ENV["GCLOUD_PROJECT"] ||
|
82
|
-
Google::Cloud.env.project_id
|
83
|
-
end
|
84
|
-
|
85
|
-
##
|
86
|
-
# Returns a new document from the given content. No API call is made.
|
87
|
-
#
|
88
|
-
# @param [String, Google::Cloud::Storage::File] content A string of text
|
89
|
-
# to be annotated, or a Cloud Storage URI of the form
|
90
|
-
# `"gs://bucketname/path/to/document.ext"`; or an instance of
|
91
|
-
# Google::Cloud::Storage::File of the text to be annotated.
|
92
|
-
# @param [String, Symbol] format The format of the document. Acceptable
|
93
|
-
# values are: `text` or `html`. If no format is provided, the document
|
94
|
-
# will default to `text`. Optional.
|
95
|
-
# @param [String, Symbol] language The language of the document (if not
|
96
|
-
# specified, the language is automatically detected). Both ISO and
|
97
|
-
# BCP-47 language codes are accepted. Optional.
|
98
|
-
#
|
99
|
-
# @return [Document] An document for the Language service.
|
100
|
-
#
|
101
|
-
# @example
|
102
|
-
# require "google/cloud/language"
|
103
|
-
#
|
104
|
-
# language = Google::Cloud::Language.new
|
105
|
-
#
|
106
|
-
# document = language.document "It was the best of times, it was..."
|
107
|
-
#
|
108
|
-
# @example With a Google Cloud Storage URI:
|
109
|
-
# require "google/cloud/language"
|
110
|
-
#
|
111
|
-
# language = Google::Cloud::Language.new
|
112
|
-
#
|
113
|
-
# document = language.document "gs://bucket-name/path/to/document"
|
114
|
-
#
|
115
|
-
# @example With a Google Cloud Storage File object:
|
116
|
-
# require "google/cloud/storage"
|
117
|
-
# storage = Google::Cloud::Storage.new
|
118
|
-
#
|
119
|
-
# bucket = storage.bucket "bucket-name"
|
120
|
-
# file = bucket.file "path/to/document"
|
121
|
-
#
|
122
|
-
# require "google/cloud/language"
|
123
|
-
# language = Google::Cloud::Language.new
|
124
|
-
#
|
125
|
-
# document = language.document file
|
126
|
-
#
|
127
|
-
# @example With `format` and `language` options:
|
128
|
-
# require "google/cloud/language"
|
129
|
-
#
|
130
|
-
# language = Google::Cloud::Language.new
|
131
|
-
#
|
132
|
-
# document = language.document "<p>El viejo y el mar</p>",
|
133
|
-
# format: :html, language: "es"
|
134
|
-
#
|
135
|
-
def document content, format: nil, language: nil
|
136
|
-
content = content.to_gs_url if content.respond_to? :to_gs_url
|
137
|
-
if content.is_a? Document
|
138
|
-
# Create new document with the provided format and language
|
139
|
-
Document.from_source content.source, @service,
|
140
|
-
format: (format || content.format),
|
141
|
-
language: (language || content.language)
|
142
|
-
else
|
143
|
-
Document.from_source content, @service, format: format,
|
144
|
-
language: language
|
145
|
-
end
|
146
|
-
end
|
147
|
-
alias_method :doc, :document
|
148
|
-
|
149
|
-
##
|
150
|
-
# Returns a new document from the given content with the `format` value
|
151
|
-
# `:text`. No API call is made.
|
152
|
-
#
|
153
|
-
# @param [String, Google::Cloud::Storage::File] content A string of text
|
154
|
-
# to be annotated, or a Cloud Storage URI of the form
|
155
|
-
# `"gs://bucketname/path/to/document.ext"`; or an instance of
|
156
|
-
# Google::Cloud::Storage::File of the text to be annotated.
|
157
|
-
# @param [String, Symbol] language The language of the document (if not
|
158
|
-
# specified, the language is automatically detected). Both ISO and
|
159
|
-
# BCP-47 language codes are accepted. Optional.
|
160
|
-
#
|
161
|
-
# @return [Document] An document for the Language service.
|
162
|
-
#
|
163
|
-
def text content, language: nil
|
164
|
-
document content, format: :text, language: language
|
165
|
-
end
|
166
|
-
|
167
|
-
##
|
168
|
-
# Returns a new document from the given content with the `format` value
|
169
|
-
# `:html`. No API call is made.
|
170
|
-
#
|
171
|
-
# @param [String, Google::Cloud::Storage::File] content A string of text
|
172
|
-
# to be annotated, or a Cloud Storage URI of the form
|
173
|
-
# `"gs://bucketname/path/to/document.ext"`; or an instance of
|
174
|
-
# Google::Cloud::Storage::File of the text to be annotated.
|
175
|
-
# @param [String, Symbol] language The language of the document (if not
|
176
|
-
# specified, the language is automatically detected). Both ISO and
|
177
|
-
# BCP-47 language codes are accepted. Optional.
|
178
|
-
#
|
179
|
-
# @return [Document] An document for the Language service.
|
180
|
-
#
|
181
|
-
def html content, language: nil
|
182
|
-
document content, format: :html, language: language
|
183
|
-
end
|
184
|
-
|
185
|
-
##
|
186
|
-
# Analyzes the content and returns sentiment, entity, and syntactic
|
187
|
-
# feature results, depending on the option flags. Calling `annotate`
|
188
|
-
# with no arguments will perform **all** analysis features. Each feature
|
189
|
-
# is priced separately. See [Pricing](https://cloud.google.com/natural-language/pricing)
|
190
|
-
# for details.
|
191
|
-
#
|
192
|
-
# @param [String, Document, Google::Cloud::Storage::File] content The
|
193
|
-
# content to annotate. This can be an {Document} instance, or any
|
194
|
-
# other type that converts to an {Document}. See {#document} for
|
195
|
-
# details.
|
196
|
-
# @param [Boolean] sentiment Whether to perform the sentiment analysis.
|
197
|
-
# Optional. The default is `false`. If every feature option is
|
198
|
-
# `false`, **all** features will be performed.
|
199
|
-
# @param [Boolean] entities Whether to perform the entity analysis.
|
200
|
-
# Optional. The default is `false`. If every feature option is
|
201
|
-
# `false`, **all** features will be performed.
|
202
|
-
# @param [Boolean] syntax Whether to perform the syntactic analysis.
|
203
|
-
# Optional. The default is `false`. If every feature option is
|
204
|
-
# `false`, **all** features will be performed.
|
205
|
-
# @param [String, Symbol] format The format of the document. Acceptable
|
206
|
-
# values are: `text` or `html`. Optional.
|
207
|
-
# @param [String, Symbol] language The language of the document (if not
|
208
|
-
# specified, the language is automatically detected). Both ISO and
|
209
|
-
# BCP-47 language codes are accepted. Optional.
|
210
|
-
#
|
211
|
-
# @return [Annotation] The results for the content analysis.
|
212
|
-
#
|
213
|
-
# @example
|
214
|
-
# require "google/cloud/language"
|
215
|
-
#
|
216
|
-
# language = Google::Cloud::Language.new
|
217
|
-
#
|
218
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
219
|
-
# annotation = language.annotate content
|
220
|
-
#
|
221
|
-
# annotation.sentiment.score #=> 0.10000000149011612
|
222
|
-
# annotation.sentiment.magnitude #=> 1.100000023841858
|
223
|
-
# annotation.entities.count #=> 3
|
224
|
-
# annotation.sentences.count #=> 2
|
225
|
-
# annotation.tokens.count #=> 13
|
226
|
-
#
|
227
|
-
def annotate content, sentiment: false, entities: false, syntax: false,
|
228
|
-
format: nil, language: nil
|
229
|
-
ensure_service!
|
230
|
-
doc = document content, language: language, format: format
|
231
|
-
grpc = service.annotate doc.to_grpc, sentiment: sentiment,
|
232
|
-
entities: entities,
|
233
|
-
syntax: syntax
|
234
|
-
Annotation.from_grpc grpc
|
235
|
-
end
|
236
|
-
alias_method :mark, :annotate
|
237
|
-
alias_method :detect, :annotate
|
238
|
-
|
239
|
-
##
|
240
|
-
# Syntactic analysis extracts linguistic information, breaking up the
|
241
|
-
# given text into a series of sentences and tokens (generally, word
|
242
|
-
# boundaries), providing further analysis on those tokens.
|
243
|
-
#
|
244
|
-
# @param [String, Document, Google::Cloud::Storage::File] content The
|
245
|
-
# content to annotate. This can be an {Document} instance, or any
|
246
|
-
# other type that converts to an {Document}. See {#document} for
|
247
|
-
# details.
|
248
|
-
# @param [String, Symbol] format The format of the document. Acceptable
|
249
|
-
# values are: `text` or `html`. Optional.
|
250
|
-
# @param [String, Symbol] language The language of the document (if not
|
251
|
-
# specified, the language is automatically detected). Both ISO and
|
252
|
-
# BCP-47 language codes are accepted. Optional.
|
253
|
-
#
|
254
|
-
# @return [Annotation::Syntax] The results for the content syntax
|
255
|
-
# analysis.
|
256
|
-
#
|
257
|
-
# @example
|
258
|
-
# require "google/cloud/language"
|
259
|
-
#
|
260
|
-
# language = Google::Cloud::Language.new
|
261
|
-
#
|
262
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
263
|
-
# document = language.document content
|
264
|
-
#
|
265
|
-
# syntax = language.syntax document
|
266
|
-
#
|
267
|
-
# sentence = syntax.sentences.last
|
268
|
-
# sentence.text #=> "The Death Star is fearsome."
|
269
|
-
# sentence.offset #=> 28
|
270
|
-
#
|
271
|
-
# syntax.tokens.count #=> 13
|
272
|
-
# token = syntax.tokens.first
|
273
|
-
#
|
274
|
-
# token.text #=> "Star"
|
275
|
-
# token.offset #=> 0
|
276
|
-
# token.part_of_speech.tag #=> :NOUN
|
277
|
-
# token.head_token_index #=> 1
|
278
|
-
# token.label #=> :TITLE
|
279
|
-
# token.lemma #=> "Star"
|
280
|
-
#
|
281
|
-
def syntax content, format: nil, language: nil
|
282
|
-
ensure_service!
|
283
|
-
doc = document content, language: language, format: format
|
284
|
-
grpc = service.syntax doc.to_grpc
|
285
|
-
Annotation::Syntax.from_grpc grpc
|
286
|
-
end
|
287
|
-
|
288
|
-
##
|
289
|
-
# Entity analysis inspects the given text for known entities (proper
|
290
|
-
# nouns such as public figures, landmarks, etc.) and returns information
|
291
|
-
# about those entities.
|
292
|
-
#
|
293
|
-
# @param [String, Document] content The content to annotate. This
|
294
|
-
# can be an {Document} instance, or any other type that converts to an
|
295
|
-
# {Document}. See {#document} for details.
|
296
|
-
# @param [String, Symbol] format The format of the document. Acceptable
|
297
|
-
# values are: `text` or `html`. Optional.
|
298
|
-
# @param [String, Symbol] language The language of the document (if not
|
299
|
-
# specified, the language is automatically detected). Both ISO and
|
300
|
-
# BCP-47 language codes are accepted. Optional.
|
301
|
-
#
|
302
|
-
# @return [Annotation::Entities] The results for the entities analysis.
|
303
|
-
#
|
304
|
-
# @example
|
305
|
-
# require "google/cloud/language"
|
306
|
-
#
|
307
|
-
# language = Google::Cloud::Language.new
|
308
|
-
#
|
309
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
310
|
-
# document = language.document content
|
311
|
-
#
|
312
|
-
# entities = language.entities document
|
313
|
-
# entities.count #=> 3
|
314
|
-
#
|
315
|
-
def entities content, format: :text, language: nil
|
316
|
-
ensure_service!
|
317
|
-
doc = document content, language: language, format: format
|
318
|
-
grpc = service.entities doc.to_grpc
|
319
|
-
Annotation::Entities.from_grpc grpc
|
320
|
-
end
|
321
|
-
|
322
|
-
##
|
323
|
-
# Sentiment analysis inspects the given text and identifies the
|
324
|
-
# prevailing emotional opinion within the text, especially to determine
|
325
|
-
# a writer's attitude as positive, negative, or neutral. Currently, only
|
326
|
-
# English is supported for sentiment analysis.
|
327
|
-
#
|
328
|
-
# @param [String, Document] content The content to annotate. This
|
329
|
-
# can be an {Document} instance, or any other type that converts to an
|
330
|
-
# {Document}. See {#document} for details.
|
331
|
-
# @param [String, Symbol] format The format of the document. Acceptable
|
332
|
-
# values are: `text` or `html`. Optional.
|
333
|
-
# @param [String, Symbol] language The language of the document (if not
|
334
|
-
# specified, the language is automatically detected). Both ISO and
|
335
|
-
# BCP-47 language codes are accepted. Optional.
|
336
|
-
#
|
337
|
-
# @return [Annotation::Sentiment] The results for the sentiment
|
338
|
-
# analysis.
|
339
|
-
#
|
340
|
-
# @example
|
341
|
-
# require "google/cloud/language"
|
342
|
-
#
|
343
|
-
# language = Google::Cloud::Language.new
|
344
|
-
#
|
345
|
-
# content = "Star Wars is a great movie. The Death Star is fearsome."
|
346
|
-
# document = language.document content
|
347
|
-
#
|
348
|
-
# sentiment = language.sentiment document
|
349
|
-
#
|
350
|
-
# sentiment.score #=> 0.10000000149011612
|
351
|
-
# sentiment.magnitude #=> 1.100000023841858
|
352
|
-
# sentiment.language #=> "en"
|
353
|
-
#
|
354
|
-
# sentence = sentiment.sentences.first
|
355
|
-
# sentence.sentiment.score #=> 0.699999988079071
|
356
|
-
# sentence.sentiment.magnitude #=> 0.699999988079071
|
357
|
-
#
|
358
|
-
def sentiment content, format: :text, language: nil
|
359
|
-
ensure_service!
|
360
|
-
doc = document content, language: language, format: format
|
361
|
-
grpc = service.sentiment doc.to_grpc
|
362
|
-
Annotation::Sentiment.from_grpc grpc
|
363
|
-
end
|
364
|
-
|
365
|
-
protected
|
366
|
-
|
367
|
-
##
|
368
|
-
# @private Raise an error unless an active connection to the service is
|
369
|
-
# available.
|
370
|
-
def ensure_service!
|
371
|
-
fail "Must have active connection to service" unless service
|
372
|
-
end
|
373
|
-
end
|
374
|
-
end
|
375
|
-
end
|
376
|
-
end
|