偵測語言

已完成

Azure AI 語言偵測 API 會評估文字輸入,並針對提交的每份文件傳回語言識別碼,其中含有指出分析強度的分數。 Azure AI 語言服務最多可辨識 120 種語言。

此功能很適合用於收集未知語言任意文字的內容存放區。 另一種情況可能涉及到聊天機器人。 如果使用者透過聊天機器人啟動工作階段,則可以使用語言偵測來判斷他們所使用的語言,並讓您以適當的語言設定 Bot 回應。

您可以剖析此分析的結果,以判斷輸入文件中使用的語言。 回應也會傳回分數來反映對模型的信賴度 (介於 0 和 1 之間的值)。

語言偵測可以使用文件或單一片語。 請務必注意,文件大小必須低於 5,120 個字元。 大小限制為每份文件,而每個集合限制為 1,000 個項目 (識別碼)。 您可能會在要求本文中提交給服務的格式正確 JSON 承載範例如下所示,其中包含文件的集合,每個文件都包含唯一的 ID 和要分析的文字。 或者,您可以提供 countryHint 來改善預測效能。


{
  "documents": [
    {
      "countryHint": "US",
      "id": "1",
      "text": "Hello world"
    },
    {
      "id": "2",
      "text": "Bonjour tout le monde"
    }
  ]
}

此服務會傳回 JSON 回應,其中包含要求本文中每份文件的結果,包括預測的語言和指出預測信賴度的值。 信賴等級是範圍從 0 到 1 的值,較接近 1 的值表示較高的信賴等級。 此處為對應至上述要求 JSON 的標準 JSON 回應範例。

{
  "documents": [
   {
     "id": "1",
     "detectedLanguage": {
       "name": "English",
       "iso6391Name": "en",
       "confidenceScore": 1
     },
     "warnings": []
   },
   {
     "id": "2",
     "detectedLanguage": {
       "name": "French",
       "iso6391Name": "fr",
       "confidenceScore": 1
     },
     "warnings": []
   }
  ],
  "errors": [],
  "modelVersion": "2020-04-01"
}

在我們的範例中,所有語言都顯示信賴度 1,大多是因為文字相當簡單,而且是很容易識別的語言。

如果您傳入具有多語言內容的文件,則該服務的行為將有些不同。 同一文件中混合的語言內容會傳回內容中佔最多比例的語言,但正面評分較低,這反映出該評定的邊際強度。 在下列範例中,輸入會混合英文、西班牙文和法文。 分析器會使用文字的統計分析來判斷主要語言。

{
  "documents": [
    {
      "id": "1",
      "text": "Hello, I would like to take a class at your University. ¿Se ofrecen clases en español? Es mi primera lengua y más fácil para escribir. Que diriez-vous des cours en français?"
    }
  ]
}

下列範例顯示的是此多語言範例的回應。

{
  "documents": [
    {
      "id": "1",
      "detectedLanguages": [
        {
          "name": "Spanish",
          "iso6391Name": "es",
          "score": 0.9375
        }
      ]
    }
  ],
  "errors": []
}

最後一個要考慮的條件是當語言內容不明確的時候。 如果您提交分析器無法剖析的文字內容,例如,將文字轉換成字串變數時,就可能會因為字元編碼問題而發生此情節。 如此一來,語言名稱和 ISO 代碼的回應將指出 (未知),而且分數值會以 NaN,或是「不是數字」的形式傳回。 以下範例示範回應的樣子。

{
      "id": "5",
      "detectedLanguages": [
        {
          "name": "(Unknown)",
          "iso6391Name": "(Unknown)",
          "score": "NaN"
        }
      ]