Как правильно искать перевод слова в Microsoft Translate API - PullRequest
0 голосов
/ 09 июня 2019

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

const request = require('request')
const uuidv4 = require('uuid/v4')
const YAML = require('js-yaml')

const subscriptionKey = '<mykey>'
// https://docs.microsoft.com/en-us/azure/cognitive-services/translator/translator-text-how-to-signup
const input = process.argv[2]
let LANGS = {
  "af": "Afrikaans",
  "bn": "Bangla",
  "bs": "Bosnian (Latin)",
  "bg": "Bulgarian",
  "yue": "Cantonese (Traditional)",
  "ca": "Catalan",
  "zh-Hans": "Chinese Simplified",
  "zh-Hant": "Chinese Traditional",
  "hr": "Croatian",
  "cs": "Czech",
  "da": "Danish",
  "nl": "Dutch",
  "en": "English",
  "et": "Estonian",
  "fj": "Fijian",
  "fil": "Filipino",
  "fi": "Finnish",
  "fr": "French",
  "de": "German",
  "el": "Greek",
  "ht": "Haitian Creole",
  "he": "Hebrew",
  "hi": "Hindi",
  "mww": "Hmong Daw",
  "hu": "Hungarian",
  "is": "Icelandic",
  "id": "Indonesian",
  "it": "Italian",
  "ja": "Japanese",
  "sw": "Kiswahili",
  "tlh": "Klingon",
  "tlh-Qaak": "Klingon (plqaD)",
  "ko": "Korean",
  "lv": "Latvian",
  "lt": "Lithuanian",
  "mg": "Malagasy",
  "ms": "Malay",
  "mt": "Maltese",
  "nb": "Norwegian",
  "fa": "Persian",
  "pl": "Polish",
  "pt": "Portuguese",
  "otq": "Queretaro Otomi",
  "ro": "Romanian",
  "ru": "Russian",
  "sm": "Samoan",
  "sr-Cyrl": "Serbian (Cyrillic)",
  "sr-Latn": "Serbian (Latin)",
  "sk": "Slovak",
  "sl": "Slovenian",
  "es": "Spanish",
  "sv": "Swedish",
  "ty": "Tahitian",
  "ta": "Tamil",
  "te": "Telugu",
  "th": "Thai",
  "to": "Tongan",
  "tr": "Turkish",
  "uk": "Ukrainian",
  "ur": "Urdu",
  "vi": "Vietnamese",
  "cy": "Welsh",
  "yua": "Yucatec Maya",
  "gu": "Gujarati",
  "kn": "Kannada",
  "ml": "Malayalam",
  "mr": "Marathi",
  "or": "Oriya",
  "pa": "Punjabi"
}

let langs = Object.keys(LANGS)

let i = 0
let out = {}

next(() => {
  console.log(JSON.stringify(out, null, 2))
})

function next(fn) {
  let lang = langs[i++]
  if (!lang) return fn()

  let options = {
    method: 'POST',
    baseUrl: 'https://api.cognitive.microsofttranslator.com/',
    url: 'translate',
    qs: {
      'api-version': '3.0',
      'to': [lang]
    },
    headers: {
      'Ocp-Apim-Subscription-Key': subscriptionKey,
      'Content-type': 'application/json',
      'X-ClientTraceId': uuidv4().toString()
    },
    body: [{
      'text': input
    }],
    json: true
  };

  console.log('translating to ' + lang)

  request(options, function(err, res, body){
    if (body.error) return next(fn)

    let translations = body[0].translations
    translations.forEach(translation => {
      out[LANGS[translation.to].toLowerCase()] = translation.text
    })

    setImmediate(function(){
      next(fn)
    })
  });

}

Однако он просто отвечает text переведенного слова, вот и все,Это не содержит:

  • часть речи
  • примеры предложений
  • определение

Я быхотел бы знать, есть ли способ получить (на данный момент) только часть речи .

Более конкретно, я хочу знать, что если я ищу слово «свидетель»,что именно это будет делать.Я не уверен, будет ли возвращаться существительное («свидетель») или глагол («свидетельствовать») для каждого перевода.Я также не уверен в смысле слова, которое возвращается.Я не уверен в примере с головы до головы, но скажу, что у вас есть слово типа «группа», которое может означать «музыкальная группа», «группа людей» или «группа, подобная резинке»"или" полоса ".Как узнать в переведенном тексте, что это такое?

Я просто хотел бы сделать следующее:

  • поиск формы существительного слова
  • ищите форму глагола того же слова
  • знайте, что определение - это то, что я ожидаю (поэтому для группы, я получаю обратно "полоса, как резиновая полоса")

Wonderingкак я это делаю.

...