如何在Microsoft Translate API中正确查找单词翻译

时间:2019-06-09 05:49:44

标签: node.js api translation microsoft-translator

我正在寻找here,但有一个基本示例,如下所示:

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作为响应。它包含:

  • 词性
  • 例句
  • 定义

我想知道是否有一种方法(暂时)只是词性

更具体地说,我想知道,如果我搜索“见证人”一词,它将确切地起作用。我不确定是否为每个翻译返回名词(“见证人”)或动词(“见证人”)。我也不确定返回的单词的感觉。我不确定在脑海中举个例子,但说您有一个像“乐队”这样的词,它的意思是“一个音乐乐队”,“一群人”或“一个像橡皮筋的乐队” ”或“条带”。我怎么知道翻译的文本是哪一个?

我只想执行以下操作:

  • 搜索单词的名词形式
  • 搜索相同单词的动词形式
  • 知道定义是我所期望的(因此对于乐队,我回到“像橡皮筋一样的乐队”)

想知道我该怎么做。

0 个答案:

没有答案