Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Машинное обучение Azure - неверный текст запроса Text Analytics C# даже после проверки тела JSON

Автор вопроса: MakkОтветов: 2

Работа с машинным обучением Azure - REST API текстовой аналитики, расположенным здесь. Требуется отправка полезной нагрузки на сервер через POST. Я пытаюсь получить такие же результаты, как и с IBM watson.

Вот что я пробовал в консольном приложении, вот основной код:

static IRestResponse GetResp(string url, string key, string jsonText) {
    IRestClient client = new RestClient(url);
    IRestRequest request = new RestRequest() { RequestFormat = DataFormat.Json };
    request.AddHeader("Content-Type", "application/json");
    request.AddHeader("Ocp-Apim-Subscription-Key", key);
    IRestResponse response = client.ExecuteAsPost(request, "POST");

}

//  Here the code that serializes the object to look precisely like body advertised calls it:
string json = JsonConvert.SerializeObject(documents);
IRestResponse resp = GetResponse("https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/keyPhrases", TaxonomyGlueKey, json);

тело сообщения от сериализации "документов":

{
 "documents": [
   {
  "language": "en",
  "id": "4",
  "text": "Lateral internal sphincterotomy and fissurectomy"
  },
  {
  "language": "en",
  "id": "5",
  "text": "Fissurectomy and Botox injection"
  }
]}

Я получаю ошибки Bad Request. Я проверил, что мой запрос отправлен и проходит аутентификацию (до этого он не прошел). Я также пробовал много вариантов этого.

Я могу попробовать свое тело запроса, и оно работает правильно при копировании текста из переменной отладки непосредственно в тело, предоставленное Azure:

https://westus.dev.cognitive.microsoft.com/docs/services/TextAnalytics.V2.0/operations/56f30ceeeda5650db055a3c6/console

Если я проверю, используя вышеизложенное, я получу ожидаемый ответ, статус 200:

Transfer-Encoding: chunked
x-aml-ta-request-id: c4ea9fff-8068-42a3-99c4-68717acddcf5
X-Content-Type-Options: nosniff
apim-request-id: e5eb593b-96a3-4806-9143-1d83424569be
Date: Thu, 21 Jul 2016 14:14:44 GMT
Content-Type: application/json; charset=utf-8

{
   "documents": [
      {
       "keyPhrases": [
         "fissurectomy"
      ],
      "id": "4"
    },
   {
      "keyPhrases": [
        "Botox injection"
      ],
      "id": "5"
    }
  ],
  "errors": []
}

azuremachine-learningbad-requestkeyword

Ответы

Ответ 1 · рейтинг 1 · Uday D. Joshi

Я работал с JQuery и REST API над анализом настроений. Я получил ту же ошибку, что и вы. Мне удалось заставить его работать, предоставив JSON-serialized version ввода в качестве тела запроса.

Вот рабочий код-

$(function() {
var params ={
"documents": [
{
"language": "en",
 "id": "1",
 "text": "this is AWESOME!"
}
]
};


$.ajax({
url: "https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment?" + $.param( params );,
beforeSend: function(xhrObj){
// Request headers
xhrObj.setRequestHeader("Content-Type","application/json");
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","<your subscription key here>");
xhrObj.setRequestHeader("Accept","application/json");
},
type: "POST",
// Request body
data: JSON.stringify(params)
})
.done(function(data) {
        alert("Sentiment score is " + data.documents[0].score);

    })
    .fail(function() {
        alert("error");
    });
});

Ответ 2 · Luis Cabrera

@Makk, похоже, вы используете код C #. В документации по текстовой аналитике есть быстрый -start с работающим образцом C#, который должен вам подойти.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы