Как получить группы перевода из Microsoft Translator?

#java #azure #microsoft-translator

#java #azure #microsoft-переводчик

Вопрос:

Если вы перейдете к https://www.bing.com/translator , (который использует MS / Azure Translator api) и введите word среднее значение с английского на шведский, в дополнение к «основному» переводу, который вы получаете справа, у вас также есть раздел «Другие способы сказать», которые сгруппированы по глаголу, существительному и прилагательному.

Пример

Я хотел бы знать, как я могу извлечь этот список групп из ответа.

Прямо сейчас у меня есть следующее, но в данном случае оно возвращает только основной перевод Menar .

 import com.fasterxml.jackson.databind.ObjectMapper;
import com.squareup.okhttp.MediaType;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Protocol;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.RequestBody;
import com.squareup.okhttp.Response;

protected String doInBackground(String... params) {

    String word = params[0];
    String translationType = params[1];

    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType,
            "[{nt"Text": ""   word   ""n}]");
    Request request = new Request.Builder()
            .url(BASE_URL   translationType)
            .post(body)
            .addHeader("Ocp-Apim-Subscription-Key", SUBSCRIPTION_KEY)
            .addHeader("Ocp-Apim-Subscription-Region", SUBSCRIPTION_REGION)
            .addHeader("Content-type", "application/json")
            .build();

    Response response = okHttpClient.newCall(request)
            .execute();
    if (!response.isSuccessful()) {
        throw new AzureTranslateException("Failed to get translations from Azure Translator API, due to: "
                  response.message());
    }
    String json = response.body().string();
    // remove the first and last characters, which are brackets, for ObjectMapper
    json = json.substring(1, json.length() - 1);

    // this will only have ONE translation
    AzureTranslateResponse r = new ObjectMapper().readValue(json, AzureTranslateResponse.class);

    return r.getTranslations().get(0).getText();
}
  

AzureTranslatorResponse

 @Data
public class AzureTranslateResponse {

    private DetectedLanguage detectedLanguage;
    private List<Translation> translations;
}
  

Обнаруженный язык

 @Data
public class DetectedLanguage {

    private String language;
    private double score;
}
  

Обнаруженный язык

 @Data
public class DetectedLanguage {

    private String language;
    private double score;
}
  

Ответ №1:

Вы можете получить альтернативные переводы, используя ресурс поиска по словарю. https://learn.microsoft.com/azure/cognitive-services/translator/reference/v3-0-dictionary-lookup

Он возвращает часть речи в атрибуте posTag. Затем вы можете сгруппировать по posTag для достижения аналогичной группировки.

Ресурс Dictionary Examples возвращает примеры предложений, которые вы также видите на сайте Bing Translator. https://learn.microsoft.com/azure/cognitive-services/translator/reference/v3-0-dictionary-examples