使用意圖與實體從表達文字擷取資料

重要

LUIS 將於 2025 年 10 月 1 日淘汰,而自 2023 年 4 月 1 日開始,您將無法建立新的 LUIS 資源。 建議您移轉 LUIS 應用程式交談語言理解,以享有持續產品支援和多語言功能的優點。

LUIS 可讓您從使用者的自然語言語句取得資訊。 此資訊的擷取方式使得它可供程式、應用程式或 Chatbot 用來執行動作。 在下列各節中,您將透過 JSON 範例,了解從意圖和實體會傳回哪些資料。

最難擷取的資料是機器學習資料,因為它不是全文相符的資料。 機器學習實體的資料擷取必須是製作循環的一部分,直到您確信收到預期的資料為止。

資料位置和金鑰使用方式

LUIS 會從已發佈端點的使用者表達中擷取資料。 HTTPS 要求 (POST 或 GET) 除了包含一些額外的設定 (例如預備或生產環境) 之外,也包含語句。

V2 預測端點要求

https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/<appID>?subscription-key=<subscription-key>&verbose=true&timezoneOffset=0&q=book 2 tickets to paris

V3 預測端點要求

https://westus.api.cognitive.microsoft.com/luis/v3.0-preview/apps/<appID>/slots/<slot-type>/predict?subscription-key=<subscription-key>&verbose=true&timezoneOffset=0&query=book 2 tickets to paris

當您編輯 LUIS 應用程式時,從該 LUIS 應用程式的 [設定] 頁面,以及從您 URL 的一部分 (在 /apps/ 之後),都可以取得 appIDsubscription-key 是用來查詢您應用程式的端點金鑰。 在學習 LUIS 期間,雖然您可以使用免費的撰寫/入門金鑰,但請務必將端點金鑰變更為支援預期的 LUIS 使用方式的金鑰。 timezoneOffset 單位為分鐘。

HTTPS 回應包含 LUIS 可以根據目前已發佈之預備或生產環境端點模型來判斷的所有意圖和實體資訊。 端點 URL 是在 LUIS 網站、[管理] 區段、[金鑰和端點] 頁面上找到的。

來自意圖的資料

主要資料是最高分的意圖名稱。 端點回應為:

{
  "query": "when do you open next?",
  "topScoringIntent": {
    "intent": "GetStoreInfo",
    "score": 0.984749258
  },
  "entities": []
}
資料物件 資料類型 資料位置
Intent String topScoringIntent.intent "GetStoreInfo"

如果您的聊天機器人或 LUIS 呼叫應用程式會根據多個意圖分數進行決策,則會傳回所有意圖的分數。

設定查詢字串參數 verbose=true。 端點回應為:

{
  "query": "when do you open next?",
  "topScoringIntent": {
    "intent": "GetStoreInfo",
    "score": 0.984749258
  },
  "intents": [
    {
      "intent": "GetStoreInfo",
      "score": 0.984749258
    },
    {
      "intent": "None",
      "score": 0.2040639
    }
  ],
  "entities": []
}

意圖會依最高分到最低分排序。

資料物件 資料類型 資料位置 Score
Intent String intents[0].intent "GetStoreInfo" 0.984749258
Intent String intents[1].intent "None" 0.0168218873

如果您新增預先建置的定義域,則意圖名稱除了會指出意圖之外,也會指出該定義域,例如 UtiltiesCommunication

{
  "query": "Turn on the lights next monday at 9am",
  "topScoringIntent": {
    "intent": "Utilities.ShowNext",
    "score": 0.07842206
  },
  "intents": [
    {
      "intent": "Utilities.ShowNext",
      "score": 0.07842206
    },
    {
      "intent": "Communication.StartOver",
      "score": 0.0239675418
    },
    {
      "intent": "None",
      "score": 0.0168218873
    }],
  "entities": []
}
網域 資料物件 資料類型 資料位置
公用程式 Intent String intents[0].intent "Utilities.ShowNext"
溝通 Intent String intents[1].intent Communication.StartOver"
Intent String intents[2].intent "None"

來自實體的資料

大多數聊天機器人和應用程式都不僅僅只是需要意圖名稱。 這個額外的選擇性資料來自在語句中探索到的實體。 每個類型的實體會傳回與比對相關的不同資訊。

語句中的單一單字或片語可能會與多個實體相符。 在該情況下,系統會傳回每個相符的實體及其分數。

所有實體都會在端點回應的實體陣列中傳回

傳回的 Token 化實體

請參閱 LUIS 中的 Token 支援

預先建置的實體資料

探索預先建置實體時,會使用開放原始碼 Recognizers-Text 專案,根據規則運算式比對進行探索。 預先建置的實體會在實體陣列中傳回,並使用前面加上 builtin:: 的類別名稱。

清單實體資料

清單實體代表一組固定的封閉式相關字組及其同義字。 LUIS 並不會探索清單實體的額外值。 使用建議功能,以根據目前的清單查看適用於新字組的建議。 如果有多個清單實體具有相同的值,則在端點查詢中會傳回每個實體。

規則運算式實體資料

規則運算式實體會根據您提供的規則運算式來擷取實體。

擷取名稱

從語句中取得名稱相當困難,因為名稱幾乎可以是字母與單字的任何組合。 視所要擷取的名稱類型而定,您會有數個選項。 下列建議不是規定,而是指導方針。

新增預建的 PersonName 和 GeographyV2 實體

PersonNameGeographyV2 實體可在某些語言文化特性中使用。

人名

人名可依據語言和文化特性而有些微的格式。 使用預建的 personName 實體或具有名字和姓氏角色的簡單實體

如果您使用簡單實體,請務必提供在表達的不同部分、在不同長度的表達中及在所有意圖 (包括 None 意圖) 的表達中使用名字和姓氏的範例。 請定期檢閱端點語句,以標記任何未正確預測的名稱。

地名

位置名稱是已設定且已知的名稱,例如城市、縣市、州、省及國家/地區。 使用預建的實體 geographyV2 擷取位置資訊。

全新和新興的名稱

有些應用程式需要能夠尋找全新和新興的名稱,例如產品或公司。 這些名稱類型是難度最高的資料擷取類型。 請從簡單實體開始著手,並新增一個片語清單。 請定期檢閱端點語句,以標記任何未正確預測的名稱。

Pattern.any 實體資料

Pattern.any 是僅用於模式範本表達的可變長度預留位置,用來標記實體開始及結束的位置。 您必須找到模式中所使用的實體,才能套用模式。

情感分析

如果在發佈時設定了情感分析,LUIS JSON 回應就會包含情感分析。 若要深入了解情感分析,請參閱語言服務文件。

關鍵片語擷取實體資料

關鍵片語擷取實體會傳回表達中語言服務所提供的關鍵片語。

與多個實體相符的資料

LUIS 會傳回在語句中探索到的所有實體。 因此,您的聊天機器人可能需要根據結果進行決策。

與多個清單實體相符的資料

如果單字或片語與多個清單實體相符,端點查詢會傳回每個清單實體。

如果查詢為 when is the best time to go to red rock?,且應用程式在多個清單中有 red 一字,LUIS 就會辨識所有實體,並在 JSON 端點回應中傳回實體陣列。

下一步

請參閱新增實體,以深入了解如何將實體新增至 LUIS 應用程式。