IBM Watson NLU в рубине
Я пытаюсь использовать клиент watson api из https://github.com/suchowan/watson-api-client
,
Я написал это на основе документации от https://watson-api-explorer.ng.bluemix.net/listings/natural-language-understanding-v1.json
:
require 'watson-api-client'
service = WatsonAPIClient::NaturalLanguageUnderstanding.new(
:user=>"xxxxxxxxxxxx",
:password=>"yyyyyyyyy",
:verify_ssl=>OpenSSL::SSL::VERIFY_NONE
)
result = service.analyze(
'version' => "2018-03-16",
'parameters' => "keywords.sentiment",
'source' => "The quick brown fox jumps over the lazy cat"
)
p JSON.parse(result.body)
Проблема в том, что я ничего не могу найти для отправки запроса через ruby, возможно, я использую неправильные параметры. Например я получаю ArgumentError (Extra parameter(s) : 'source'
с этим текущим кодом. Я пытался заменить исходный текст безрезультатно. Кто-нибудь успешно сделал такой запрос в Ruby или знает, какие параметры нужны?
Благодарю.
1 ответ
Глядя на API по адресу https://www.ibm.com/watson/developercloud/natural-language-understanding/api/v1/ похоже, что параметры должны быть объектом JSON. Я также не вижу никакого источника (как говорится в комментарии Саймона, используйте текст) параметра в документации API.
Возможно, прежде чем переходить к жемчужине watson-api-client, попробуйте позвонить с помощью Net::HTTP (документация https://docs.ruby-lang.org/en/2.0.0/Net/HTTP.html). вы можете видеть именно то, что ожидается. Вы также можете найти более индивидуальное решение для подключения к Watson API.
например
uri = URI('https://gateway.watsonplatform.net/natural-language-understanding/api/v1/analyze?version=2018-03-16')
Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Post.new uri
request['Content-Type'] = 'application/json'
request.body = {text: 'your test', keywords: {sentiment: true}}.to_json
request.basic_auth 'username', 'password'
response = http.request request # Net::HTTPResponse object
end
Пожалуйста, обратите внимание, что выше было только что произведено, а не проверено. Надеюсь, это поможет.