ibm_watson 2.0.0.rc1 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +22 -6
- data/lib/ibm_watson/assistant_v1.rb +111 -77
- data/lib/ibm_watson/assistant_v2.rb +83 -59
- data/lib/ibm_watson/compare_comply_v1.rb +12 -4
- data/lib/ibm_watson/discovery_v1.rb +2 -3
- data/lib/ibm_watson/discovery_v2.rb +97 -7
- data/lib/ibm_watson/language_translator_v3.rb +1 -2
- data/lib/ibm_watson/natural_language_classifier_v1.rb +1 -2
- data/lib/ibm_watson/natural_language_understanding_v1.rb +692 -3
- data/lib/ibm_watson/personality_insights_v3.rb +21 -12
- data/lib/ibm_watson/speech_to_text_v1.rb +257 -106
- data/lib/ibm_watson/text_to_speech_v1.rb +599 -19
- data/lib/ibm_watson/tone_analyzer_v3.rb +1 -2
- data/lib/ibm_watson/version.rb +1 -1
- data/lib/ibm_watson/visual_recognition_v3.rb +10 -5
- data/lib/ibm_watson/visual_recognition_v4.rb +9 -4
- data/test/integration/test_discovery_v2.rb +29 -0
- data/test/integration/test_natural_language_understanding_v1.rb +134 -1
- data/test/integration/test_text_to_speech_v1.rb +57 -0
- data/test/unit/test_assistant_v1.rb +1 -1
- data/test/unit/test_discovery_v2.rb +29 -0
- data/test/unit/test_natural_language_understanding_v1.rb +231 -0
- data/test/unit/test_text_to_speech_v1.rb +145 -0
- metadata +14 -13
@@ -14,7 +14,7 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
#
|
17
|
-
# IBM OpenAPI SDK Code Generator Version: 3.
|
17
|
+
# IBM OpenAPI SDK Code Generator Version: 3.31.0-902c9336-20210504-161156
|
18
18
|
#
|
19
19
|
# The IBM Watson™ Tone Analyzer service uses linguistic analysis to detect
|
20
20
|
# emotional and language tones in written text. The service can analyze tone at both the
|
@@ -34,7 +34,6 @@ require "json"
|
|
34
34
|
require "ibm_cloud_sdk_core"
|
35
35
|
require_relative "./common.rb"
|
36
36
|
|
37
|
-
# Module for the Watson APIs
|
38
37
|
module IBMWatson
|
39
38
|
##
|
40
39
|
# The Tone Analyzer V3 service.
|
data/lib/ibm_watson/version.rb
CHANGED
@@ -14,11 +14,16 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
#
|
17
|
-
# IBM OpenAPI SDK Code Generator Version: 3.
|
17
|
+
# IBM OpenAPI SDK Code Generator Version: 3.31.0-902c9336-20210504-161156
|
18
18
|
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
19
|
+
# IBM Watson™ Visual Recognition is discontinued. Existing instances are supported
|
20
|
+
# until 1 December 2021, but as of 7 January 2021, you can't create instances. Any
|
21
|
+
# instance that is provisioned on 1 December 2021 will be deleted.
|
22
|
+
# {: deprecated}
|
23
|
+
#
|
24
|
+
# The IBM Watson Visual Recognition service uses deep learning algorithms to identify
|
25
|
+
# scenes and objects in images that you upload to the service. You can create and train a
|
26
|
+
# custom classifier to identify subjects that suit your needs.
|
22
27
|
|
23
28
|
require "concurrent"
|
24
29
|
require "erb"
|
@@ -26,7 +31,6 @@ require "json"
|
|
26
31
|
require "ibm_cloud_sdk_core"
|
27
32
|
require_relative "./common.rb"
|
28
33
|
|
29
|
-
# Module for the Watson APIs
|
30
34
|
module IBMWatson
|
31
35
|
##
|
32
36
|
# The Visual Recognition V3 service.
|
@@ -48,6 +52,7 @@ module IBMWatson
|
|
48
52
|
# @option args service_name [String] The name of the service to configure. Will be used as the key to load
|
49
53
|
# any external configuration, if applicable.
|
50
54
|
def initialize(args = {})
|
55
|
+
warn "On 1 December 2021, Visual Recognition will no longer be available. For more information, see https://github.com/watson-developer-cloud/ruby-sdk/tree/master#visual-recognition-deprecation."
|
51
56
|
@__async_initialized__ = false
|
52
57
|
defaults = {}
|
53
58
|
defaults[:service_url] = DEFAULT_SERVICE_URL
|
@@ -14,10 +14,15 @@
|
|
14
14
|
# See the License for the specific language governing permissions and
|
15
15
|
# limitations under the License.
|
16
16
|
#
|
17
|
-
# IBM OpenAPI SDK Code Generator Version: 3.
|
17
|
+
# IBM OpenAPI SDK Code Generator Version: 3.31.0-902c9336-20210504-161156
|
18
18
|
#
|
19
|
-
#
|
20
|
-
#
|
19
|
+
# IBM Watson™ Visual Recognition is discontinued. Existing instances are supported
|
20
|
+
# until 1 December 2021, but as of 7 January 2021, you can't create instances. Any
|
21
|
+
# instance that is provisioned on 1 December 2021 will be deleted.
|
22
|
+
# {: deprecated}
|
23
|
+
#
|
24
|
+
# Provide images to the IBM Watson Visual Recognition service for analysis. The service
|
25
|
+
# detects objects based on a set of images with training data.
|
21
26
|
|
22
27
|
require "concurrent"
|
23
28
|
require "erb"
|
@@ -25,7 +30,6 @@ require "json"
|
|
25
30
|
require "ibm_cloud_sdk_core"
|
26
31
|
require_relative "./common.rb"
|
27
32
|
|
28
|
-
# Module for the Watson APIs
|
29
33
|
module IBMWatson
|
30
34
|
##
|
31
35
|
# The Visual Recognition V4 service.
|
@@ -47,6 +51,7 @@ module IBMWatson
|
|
47
51
|
# @option args service_name [String] The name of the service to configure. Will be used as the key to load
|
48
52
|
# any external configuration, if applicable.
|
49
53
|
def initialize(args = {})
|
54
|
+
warn "On 1 December 2021, Visual Recognition will no longer be available. For more information, see https://github.com/watson-developer-cloud/ruby-sdk/tree/master#visual-recognition-deprecation."
|
50
55
|
@__async_initialized__ = false
|
51
56
|
defaults = {}
|
52
57
|
defaults[:service_url] = DEFAULT_SERVICE_URL
|
@@ -120,6 +120,7 @@ if !ENV["DISCOVERY_V2_APIKEY"].nil?
|
|
120
120
|
)
|
121
121
|
query_id = service_response.result["query_id"]
|
122
122
|
refute(service_response.nil?)
|
123
|
+
# puts JSON.pretty_generate(service_response.result)
|
123
124
|
|
124
125
|
service_response = service.get_training_query(
|
125
126
|
project_id: @project_id,
|
@@ -134,6 +135,12 @@ if !ENV["DISCOVERY_V2_APIKEY"].nil?
|
|
134
135
|
examples: []
|
135
136
|
)
|
136
137
|
refute(service_response.nil?)
|
138
|
+
|
139
|
+
service_response = service.delete_training_query(
|
140
|
+
project_id: @project_id,
|
141
|
+
query_id: query_id
|
142
|
+
)
|
143
|
+
assert(service_response.nil?)
|
137
144
|
end
|
138
145
|
|
139
146
|
def test_create_get_update_delete_collection
|
@@ -238,6 +245,14 @@ if !ENV["DISCOVERY_V2_APIKEY"].nil?
|
|
238
245
|
assert(service_response.nil?)
|
239
246
|
end
|
240
247
|
|
248
|
+
def test_query_collection_notices
|
249
|
+
service_response = service.query_collection_notices(
|
250
|
+
project_id: @project_id,
|
251
|
+
collection_id: @collection_id
|
252
|
+
)
|
253
|
+
refute(service_response.result.nil?)
|
254
|
+
end
|
255
|
+
|
241
256
|
def test_delete_user_data
|
242
257
|
skip "Covered with the unit test. No need to run it here"
|
243
258
|
|
@@ -246,6 +261,20 @@ if !ENV["DISCOVERY_V2_APIKEY"].nil?
|
|
246
261
|
)
|
247
262
|
assert(service_response.nil?)
|
248
263
|
end
|
264
|
+
|
265
|
+
def test_analyze_document
|
266
|
+
skip "CPD only. Do not run on premium"
|
267
|
+
analyze_data = File.open(Dir.getwd + "/resources/problem.json")
|
268
|
+
|
269
|
+
service_response = service.analyze_document(
|
270
|
+
project_id: @project_id,
|
271
|
+
collection_id: @collection_id,
|
272
|
+
file: analyze_data,
|
273
|
+
file_content_type: "application/json"
|
274
|
+
)
|
275
|
+
assert((200..299).cover?(service_response.status))
|
276
|
+
refute(service_response.nil?)
|
277
|
+
end
|
249
278
|
end
|
250
279
|
else
|
251
280
|
class DiscoveryV2Test < Minitest::Test
|
@@ -86,7 +86,7 @@ if !ENV["NATURAL_LANGUAGE_UNDERSTANDING_APIKEY"].nil? && !ENV["NATURAL_LANGUAGE_
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def test_list_models
|
89
|
-
skip
|
89
|
+
# skip
|
90
90
|
service.add_default_headers(
|
91
91
|
headers: {
|
92
92
|
"X-Watson-Learning-Opt-Out" => "1",
|
@@ -96,6 +96,139 @@ if !ENV["NATURAL_LANGUAGE_UNDERSTANDING_APIKEY"].nil? && !ENV["NATURAL_LANGUAGE_
|
|
96
96
|
service_response = service.list_models
|
97
97
|
assert((200..299).cover?(service_response.status))
|
98
98
|
end
|
99
|
+
|
100
|
+
def test_check_orphands
|
101
|
+
skip "Use to help delete old models"
|
102
|
+
service.add_default_headers(
|
103
|
+
headers: {
|
104
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
105
|
+
"X-Watson-Test" => "1"
|
106
|
+
}
|
107
|
+
)
|
108
|
+
service_response = service.list_sentiment_models
|
109
|
+
puts JSON.pretty_generate(service_response.result)
|
110
|
+
service_response = service.list_categories_models
|
111
|
+
puts JSON.pretty_generate(service_response.result)
|
112
|
+
service_response = service.list_classifications_models
|
113
|
+
puts JSON.pretty_generate(service_response.result)
|
114
|
+
|
115
|
+
# service.delete_sentiment_model(model_id: "model_id1")
|
116
|
+
# service.delete_categories_model(model_id: "0122b971-94c9-4468-a98f-930f4ce28c32")
|
117
|
+
# service.delete_classifications_model(model_id: "0122b971-94c9-4468-a98f-930f4ce28c32")
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_sentiment_models
|
121
|
+
# skip "test_sentiment_models"
|
122
|
+
service.add_default_headers(
|
123
|
+
headers: {
|
124
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
125
|
+
"X-Watson-Test" => "1"
|
126
|
+
}
|
127
|
+
)
|
128
|
+
training_data = File.open(Dir.getwd + "/resources/nlu_sentiment_data.csv")
|
129
|
+
service_response = service.create_sentiment_model(
|
130
|
+
language: "en",
|
131
|
+
training_data: training_data
|
132
|
+
)
|
133
|
+
assert((200..299).cover?(service_response.status))
|
134
|
+
|
135
|
+
service_response = service.list_sentiment_models
|
136
|
+
model_id = service_response.result["models"][0]["model_id"]
|
137
|
+
assert((200..299).cover?(service_response.status))
|
138
|
+
|
139
|
+
service_response = service.get_sentiment_model(model_id: model_id)
|
140
|
+
assert((200..299).cover?(service_response.status))
|
141
|
+
|
142
|
+
service_response = service.update_sentiment_model(
|
143
|
+
model_id: model_id,
|
144
|
+
language: "en",
|
145
|
+
training_data: training_data
|
146
|
+
)
|
147
|
+
assert((200..299).cover?(service_response.status))
|
148
|
+
|
149
|
+
service_response = service.delete_sentiment_model(
|
150
|
+
model_id: model_id
|
151
|
+
)
|
152
|
+
assert((200..299).cover?(service_response.status))
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_categories_models
|
156
|
+
# skip "test_categories_models"
|
157
|
+
service.add_default_headers(
|
158
|
+
headers: {
|
159
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
160
|
+
"X-Watson-Test" => "1"
|
161
|
+
}
|
162
|
+
)
|
163
|
+
training_data = File.open(Dir.getwd + "/resources/nlu_categories_training.json")
|
164
|
+
service_response = service.create_categories_model(
|
165
|
+
language: "en",
|
166
|
+
training_data: training_data,
|
167
|
+
training_data_content_type: "application/json"
|
168
|
+
)
|
169
|
+
assert((200..299).cover?(service_response.status))
|
170
|
+
|
171
|
+
service_response = service.list_categories_models
|
172
|
+
model_id = service_response.result["models"][0]["model_id"]
|
173
|
+
assert((200..299).cover?(service_response.status))
|
174
|
+
# puts JSON.pretty_generate(service_response.result)
|
175
|
+
# puts JSON.pretty_generate(model_id)
|
176
|
+
|
177
|
+
service_response = service.get_categories_model(model_id: model_id)
|
178
|
+
assert((200..299).cover?(service_response.status))
|
179
|
+
|
180
|
+
service_response = service.update_categories_model(
|
181
|
+
model_id: model_id,
|
182
|
+
language: "en",
|
183
|
+
training_data: training_data,
|
184
|
+
training_data_content_type: "application/json"
|
185
|
+
)
|
186
|
+
assert((200..299).cover?(service_response.status))
|
187
|
+
|
188
|
+
service_response = service.delete_categories_model(
|
189
|
+
model_id: model_id
|
190
|
+
)
|
191
|
+
assert((200..299).cover?(service_response.status))
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_classifications_models
|
195
|
+
# skip "test_classifications_models"
|
196
|
+
service.add_default_headers(
|
197
|
+
headers: {
|
198
|
+
"X-Watson-Learning-Opt-Out" => "1",
|
199
|
+
"X-Watson-Test" => "1"
|
200
|
+
}
|
201
|
+
)
|
202
|
+
training_data = File.open(Dir.getwd + "/resources/nlu_classifications_training.json")
|
203
|
+
service_response = service.create_classifications_model(
|
204
|
+
language: "en",
|
205
|
+
training_data: training_data,
|
206
|
+
training_data_content_type: "application/json"
|
207
|
+
)
|
208
|
+
assert((200..299).cover?(service_response.status))
|
209
|
+
|
210
|
+
service_response = service.list_classifications_models
|
211
|
+
model_id = service_response.result["models"][0]["model_id"]
|
212
|
+
assert((200..299).cover?(service_response.status))
|
213
|
+
# puts JSON.pretty_generate(service_response.result)
|
214
|
+
# puts JSON.pretty_generate(model_id)
|
215
|
+
|
216
|
+
service_response = service.get_classifications_model(model_id: model_id)
|
217
|
+
assert((200..299).cover?(service_response.status))
|
218
|
+
|
219
|
+
service_response = service.update_classifications_model(
|
220
|
+
model_id: model_id,
|
221
|
+
language: "en",
|
222
|
+
training_data: training_data,
|
223
|
+
training_data_content_type: "application/json"
|
224
|
+
)
|
225
|
+
assert((200..299).cover?(service_response.status))
|
226
|
+
|
227
|
+
service_response = service.delete_classifications_model(
|
228
|
+
model_id: model_id
|
229
|
+
)
|
230
|
+
assert((200..299).cover?(service_response.status))
|
231
|
+
end
|
99
232
|
end
|
100
233
|
else
|
101
234
|
class NaturalLanguageUnderstandingV1Test < Minitest::Test
|
@@ -83,6 +83,63 @@ if !ENV["TEXT_TO_SPEECH_APIKEY"].nil? && !ENV["TEXT_TO_SPEECH_URL"].nil?
|
|
83
83
|
customization_id: customization_id
|
84
84
|
)
|
85
85
|
end
|
86
|
+
|
87
|
+
def test_custom_prompts
|
88
|
+
customization_id = @service.create_custom_model(
|
89
|
+
name: "test_integration_customization",
|
90
|
+
description: "RUBY customization for tests"
|
91
|
+
).result["customization_id"]
|
92
|
+
|
93
|
+
prompt_metadata = { prompt_text: "Thank you and goodbye" }
|
94
|
+
prompt_json = JSON[prompt_metadata]
|
95
|
+
audio_file = File.open(Dir.getwd + "/resources/speech.wav")
|
96
|
+
prompt = @service.add_custom_prompt(
|
97
|
+
customization_id: customization_id,
|
98
|
+
prompt_id: "rubyprompt_id",
|
99
|
+
metadata: prompt_json,
|
100
|
+
file: audio_file
|
101
|
+
).result["prompt"]
|
102
|
+
assert(prompt == "Thank you and goodbye")
|
103
|
+
|
104
|
+
prompts = @service.list_custom_prompts(customization_id: customization_id).result["prompts"]
|
105
|
+
refute(prompts.nil?)
|
106
|
+
|
107
|
+
prompt = @service.get_custom_prompt(
|
108
|
+
customization_id: customization_id,
|
109
|
+
prompt_id: "rubyprompt_id"
|
110
|
+
).result["prompt"]
|
111
|
+
assert(prompt == "Thank you and goodbye")
|
112
|
+
|
113
|
+
@service.delete_custom_prompt(
|
114
|
+
customization_id: customization_id,
|
115
|
+
prompt_id: "rubyprompt_id"
|
116
|
+
)
|
117
|
+
|
118
|
+
@service.delete_custom_model(
|
119
|
+
customization_id: customization_id
|
120
|
+
)
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_speaker_models
|
124
|
+
audio_file = File.open(Dir.getwd + "/resources/speech.wav")
|
125
|
+
@service.create_speaker_model(
|
126
|
+
speaker_name: "RubyMike",
|
127
|
+
audio: audio_file
|
128
|
+
).result["speaker_model"]
|
129
|
+
|
130
|
+
speakers = @service.list_speaker_models.result["speakers"]
|
131
|
+
speaker_id = speakers[0]["speaker_id"]
|
132
|
+
# puts JSON.pretty_generate(speakers)
|
133
|
+
|
134
|
+
@service.get_speaker_model(
|
135
|
+
speaker_id: speaker_id
|
136
|
+
).result["models_speaker"]
|
137
|
+
|
138
|
+
# speaker_id = d3d03b69-4035-4420-928d-7ac2e0249829
|
139
|
+
@service.delete_speaker_model(
|
140
|
+
speaker_id: speaker_id
|
141
|
+
)
|
142
|
+
end
|
86
143
|
end
|
87
144
|
else
|
88
145
|
class TextToSpeechV1Test < Minitest::Test
|
@@ -8,7 +8,7 @@ SimpleCov.command_name "test:unit"
|
|
8
8
|
|
9
9
|
WebMock.disable_net_connect!(allow_localhost: true)
|
10
10
|
|
11
|
-
# Unit tests for the Watson Assistant V1
|
11
|
+
# Unit tests for the Watson Assistant V1 Services
|
12
12
|
class AssistantV1Test < Minitest::Test
|
13
13
|
include Minitest::Hooks
|
14
14
|
attr_accessor :service
|
@@ -467,4 +467,33 @@ class DiscoveryV2Test < Minitest::Test
|
|
467
467
|
)
|
468
468
|
assert_nil(service_response)
|
469
469
|
end
|
470
|
+
|
471
|
+
def test_delete_training_query
|
472
|
+
stub_request(:delete, "https://api.us-south.discovery.watson.cloud.ibm.com/discovery/api/v2/projects/project/training_data/queries/queryid?version=2018-03-05")
|
473
|
+
.with(
|
474
|
+
headers: {
|
475
|
+
"Host" => "api.us-south.discovery.watson.cloud.ibm.com"
|
476
|
+
}
|
477
|
+
).to_return(status: 200, body: { "body" => "hello" }.to_json, headers: { "Content-Type" => "application/json" })
|
478
|
+
service_response = service.delete_training_query(
|
479
|
+
project_id: "project",
|
480
|
+
query_id: "queryid"
|
481
|
+
)
|
482
|
+
assert_nil(service_response)
|
483
|
+
end
|
484
|
+
|
485
|
+
def test_query_collection_notices
|
486
|
+
stub_request(:get, "https://api.us-south.discovery.watson.cloud.ibm.com/discovery/api/v2/projects/project/collections/collection/notices?version=2018-03-05")
|
487
|
+
.with(
|
488
|
+
headers: {
|
489
|
+
"Accept" => "application/json",
|
490
|
+
"Host" => "api.us-south.discovery.watson.cloud.ibm.com"
|
491
|
+
}
|
492
|
+
).to_return(status: 200, body: { "body" => "hello" }.to_json, headers: { "Content-Type" => "application/json" })
|
493
|
+
service_response = service.query_collection_notices(
|
494
|
+
project_id: "project",
|
495
|
+
collection_id: "collection"
|
496
|
+
)
|
497
|
+
assert_equal({ "body" => "hello" }, service_response.result)
|
498
|
+
end
|
470
499
|
end
|
@@ -144,4 +144,235 @@ class NaturalLanguageUnderstandingV1Test < Minitest::Test
|
|
144
144
|
)
|
145
145
|
assert_equal({ "deleted" => model_id }, service_response.result)
|
146
146
|
end
|
147
|
+
|
148
|
+
def test_sentiment_models
|
149
|
+
authenticator = IBMWatson::Authenticators::BasicAuthenticator.new(
|
150
|
+
username: "username",
|
151
|
+
password: "password"
|
152
|
+
)
|
153
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
154
|
+
version: "2018-03-16",
|
155
|
+
authenticator: authenticator
|
156
|
+
)
|
157
|
+
|
158
|
+
stub_request(:post, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment?version=2018-03-16")
|
159
|
+
.with(
|
160
|
+
headers: {
|
161
|
+
"Accept" => "application/json",
|
162
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
163
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
164
|
+
}
|
165
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
166
|
+
training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
|
167
|
+
service_response = service.create_sentiment_model(
|
168
|
+
language: "en",
|
169
|
+
training_data: training_data
|
170
|
+
)
|
171
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
172
|
+
|
173
|
+
stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment?version=2018-03-16")
|
174
|
+
.with(
|
175
|
+
headers: {
|
176
|
+
"Accept" => "application/json",
|
177
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
178
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
179
|
+
}
|
180
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
181
|
+
service_response = service.list_sentiment_models
|
182
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
183
|
+
|
184
|
+
stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment/model_id?version=2018-03-16")
|
185
|
+
.with(
|
186
|
+
headers: {
|
187
|
+
"Accept" => "application/json",
|
188
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
189
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
190
|
+
}
|
191
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
192
|
+
service_response = service.get_sentiment_model(model_id: "model_id")
|
193
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
194
|
+
|
195
|
+
stub_request(:put, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment/model_id?version=2018-03-16")
|
196
|
+
.with(
|
197
|
+
headers: {
|
198
|
+
"Accept" => "application/json",
|
199
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
200
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
201
|
+
}
|
202
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
203
|
+
training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
|
204
|
+
service_response = service.update_sentiment_model(
|
205
|
+
model_id: "model_id",
|
206
|
+
language: "en",
|
207
|
+
training_data: training_data
|
208
|
+
)
|
209
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
210
|
+
|
211
|
+
stub_request(:delete, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/sentiment/model_id?version=2018-03-16")
|
212
|
+
.with(
|
213
|
+
headers: {
|
214
|
+
"Accept" => "application/json",
|
215
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
216
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
217
|
+
}
|
218
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
219
|
+
service_response = service.delete_sentiment_model(
|
220
|
+
model_id: "model_id"
|
221
|
+
)
|
222
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
223
|
+
end
|
224
|
+
|
225
|
+
def test_categories_models
|
226
|
+
authenticator = IBMWatson::Authenticators::BasicAuthenticator.new(
|
227
|
+
username: "username",
|
228
|
+
password: "password"
|
229
|
+
)
|
230
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
231
|
+
version: "2018-03-16",
|
232
|
+
authenticator: authenticator
|
233
|
+
)
|
234
|
+
|
235
|
+
stub_request(:post, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories?version=2018-03-16")
|
236
|
+
.with(
|
237
|
+
headers: {
|
238
|
+
"Accept" => "application/json",
|
239
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
240
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
241
|
+
}
|
242
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
243
|
+
training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
|
244
|
+
service_response = service.create_categories_model(
|
245
|
+
language: "en",
|
246
|
+
training_data: training_data
|
247
|
+
)
|
248
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
249
|
+
|
250
|
+
stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories?version=2018-03-16")
|
251
|
+
.with(
|
252
|
+
headers: {
|
253
|
+
"Accept" => "application/json",
|
254
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
255
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
256
|
+
}
|
257
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
258
|
+
service_response = service.list_categories_models
|
259
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
260
|
+
|
261
|
+
stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories/model_id?version=2018-03-16")
|
262
|
+
.with(
|
263
|
+
headers: {
|
264
|
+
"Accept" => "application/json",
|
265
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
266
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
267
|
+
}
|
268
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
269
|
+
service_response = service.get_categories_model(model_id: "model_id")
|
270
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
271
|
+
|
272
|
+
stub_request(:put, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories/model_id?version=2018-03-16")
|
273
|
+
.with(
|
274
|
+
headers: {
|
275
|
+
"Accept" => "application/json",
|
276
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
277
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
278
|
+
}
|
279
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
280
|
+
training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
|
281
|
+
service_response = service.update_categories_model(
|
282
|
+
model_id: "model_id",
|
283
|
+
language: "en",
|
284
|
+
training_data: training_data
|
285
|
+
)
|
286
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
287
|
+
|
288
|
+
stub_request(:delete, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/categories/model_id?version=2018-03-16")
|
289
|
+
.with(
|
290
|
+
headers: {
|
291
|
+
"Accept" => "application/json",
|
292
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
293
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
294
|
+
}
|
295
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
296
|
+
service_response = service.delete_categories_model(
|
297
|
+
model_id: "model_id"
|
298
|
+
)
|
299
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
300
|
+
end
|
301
|
+
|
302
|
+
def test_classifications_models
|
303
|
+
authenticator = IBMWatson::Authenticators::BasicAuthenticator.new(
|
304
|
+
username: "username",
|
305
|
+
password: "password"
|
306
|
+
)
|
307
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
308
|
+
version: "2018-03-16",
|
309
|
+
authenticator: authenticator
|
310
|
+
)
|
311
|
+
|
312
|
+
stub_request(:post, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications?version=2018-03-16")
|
313
|
+
.with(
|
314
|
+
headers: {
|
315
|
+
"Accept" => "application/json",
|
316
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
317
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
318
|
+
}
|
319
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
320
|
+
training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
|
321
|
+
service_response = service.create_classifications_model(
|
322
|
+
language: "en",
|
323
|
+
training_data: training_data
|
324
|
+
)
|
325
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
326
|
+
|
327
|
+
stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications?version=2018-03-16")
|
328
|
+
.with(
|
329
|
+
headers: {
|
330
|
+
"Accept" => "application/json",
|
331
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
332
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
333
|
+
}
|
334
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
335
|
+
service_response = service.list_classifications_models
|
336
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
337
|
+
|
338
|
+
stub_request(:get, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications/model_id?version=2018-03-16")
|
339
|
+
.with(
|
340
|
+
headers: {
|
341
|
+
"Accept" => "application/json",
|
342
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
343
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
344
|
+
}
|
345
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
346
|
+
service_response = service.get_classifications_model(model_id: "model_id")
|
347
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
348
|
+
|
349
|
+
stub_request(:put, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications/model_id?version=2018-03-16")
|
350
|
+
.with(
|
351
|
+
headers: {
|
352
|
+
"Accept" => "application/json",
|
353
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
354
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
355
|
+
}
|
356
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
357
|
+
training_data = File.open(Dir.getwd + "/resources/weather_data_train.csv")
|
358
|
+
service_response = service.update_classifications_model(
|
359
|
+
model_id: "model_id",
|
360
|
+
language: "en",
|
361
|
+
training_data: training_data
|
362
|
+
)
|
363
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
364
|
+
|
365
|
+
stub_request(:delete, "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/v1/models/classifications/model_id?version=2018-03-16")
|
366
|
+
.with(
|
367
|
+
headers: {
|
368
|
+
"Accept" => "application/json",
|
369
|
+
"Authorization" => "Basic dXNlcm5hbWU6cGFzc3dvcmQ=",
|
370
|
+
"Host" => "api.us-south.natural-language-understanding.watson.cloud.ibm.com"
|
371
|
+
}
|
372
|
+
).to_return(status: 200, body: { resulting_key: true }.to_json, headers: { "Content-Type" => "application/json" })
|
373
|
+
service_response = service.delete_classifications_model(
|
374
|
+
model_id: "model_id"
|
375
|
+
)
|
376
|
+
assert_equal({ "resulting_key" => true }, service_response.result)
|
377
|
+
end
|
147
378
|
end
|