從 Language Understanding (LUIS) 遷移至對話式語言理解 (CLU)

對話式語言理解 (CLU) 是 Azure AI 語言中的雲端式 AI 供應專案。 這是最新一代 Language Understanding (LUIS),可與先前建立的 LUIS 應用程式提供回溯相容性。 CLU 採用最先進的機器學習智慧,讓用戶能夠建置自定義的自然語言理解模型,以預測交談語句中的意圖和實體。

CLU 在 LUIS 上提供下列優點:

  • 透過最先進的機器學習模型改善精確度,以取得更佳的意圖分類和實體擷取。 LUIS 需要更多範例,才能將意圖和實體中的某些概念一般化,而 CLU 更進階的機器學習可藉由要求大幅減少數據來減輕客戶的負擔。
  • 模型學習和訓練的多語系支援。 以一種語言訓練專案,並立即預測 96 種語言的意圖和實體。
  • 使用協調流程工作流程輕鬆整合不同的 CLU 和自定義問題解答專案
  • 在部署之前,使用 Language Studio 和 API 在體驗中新增測試數據的能力,以進行模型效能評估。

若要開始使用,您可以 建立新的專案移轉 LUIS 應用程式

LUIS 與 CLU 之間的比較

下表提供 LUIS 與 CLU 功能之間的並存比較。 它也會在移轉至 CLU 之後強調 LUIS 應用程式的變更。 選取連結的概念以深入了解變更。

LUIS 功能 CLU 功能 移轉後
機器學習和結構化 ML 實體 學習的 實體元件 沒有子實體的機器學習實體將會以 CLU 實體的形式傳輸。 結構化 ML 實體只會將分葉節點(最低層級的子實體沒有自己的子實體)作為 CLU 中的實體。 CLU 中實體的名稱將會是與父系串連的子實體名稱。 例如, Order.Size
列出、regex 和預先建置的實體 列出、regex 和預先建置的 實體元件 清單、regex 和預先建置的實體將會以 CLU 中的實體身分傳送,並以實體類型為基礎的填入實體元件。
Pattern.Any 實體 目前無法使用 Pattern.Any 將會移除實體。
每個應用程式的單一文化特性 多語系模型 會為每個專案啟用多種語言。 專案的主要語言將會設定為 LUIS 應用程式文化特性。 您可以訓練您的項目以擴充至不同的語言。
實體角色 不再需要角色 實體角色將會以實體的形式傳輸。
設定:正規化標點符號、正規化讀音符號、正規化文字形式、使用所有定型數據 不再需要 設定 設定 將不會轉移。
模式和片語清單功能 不再需要模式和片語清單功能 不會傳輸模式和片語清單功能。
實體功能 實體元件 將新增為功能新增至實體的清單或預先建置實體,將會以新增元件的形式傳送至該實體。 不會針對意圖傳輸實體功能
意圖和語句 意圖和語句 所有意圖和語句都會傳輸。 語句會加上其傳輸的實體標籤。
應用程式 GUID 專案名稱 系統會為每個移轉應用程式建立專案,其中包含應用程式名稱。 應用程式名稱中的任何特殊字元都會在 CLU 中移除。
版本管理 每次定型時,都會建立模型,並做為您的專案版本 將會為選取的應用程式版本建立專案。
使用批次測試進行評估 使用測試集進行評估 需要新增測試數據集
LUIS 資源的角色型 存取控制 (RBAC) 適用於語言資源的角色型 存取控制 (RBAC) 移轉後必須手動新增語言資源 RBAC。
單一訓練模式 標準和進階 定型模式 應用程式移轉之後需要定型。
兩個發佈位置與版本發佈 具有自定義命名的十個部署位置 在應用程式的移轉和訓練之後,將需要部署。
.NET、Python、Java 和 Node.js 中的 LUIS 撰寫 API 和 SDK 支援 CLU 撰寫 REST API 如需詳細資訊,請參閱 快速入門文章 ,以取得 CLU 撰寫 API 的相關信息。 您必須重構 ,才能使用 CLU 撰寫 API。
.NET、Python、Java 和 Node.js 中的 LUIS 運行時間 API 和 SDK 支援 CLU 執行時間 API。 適用於 .NETPython 的 CLU 運行時間 SDK 支援。 如需詳細資訊,請參閱 如何呼叫 API您必須重構 ,才能使用 CLU 運行時間 API 回應。

移轉 LUIS 應用程式

使用下列步驟,使用 LUIS 入口網站或 REST API 來移轉 LUIS 應用程式。

使用 LUIS 入口網站移轉 LUIS 應用程式

請遵循下列步驟,開始使用 LUIS 入口網站進行移轉:

  1. 登入 LUIS 入口網站之後,按兩下畫面頂端橫幅上的按鈕以啟動移轉精靈。 移轉只會將選取的 LUIS 應用程式複製到 CLU。

    A screenshot showing the migration banner in the LUIS portal.

    [移轉概觀] 索引卷標提供交談式語言理解及其優點的簡短說明。 按 [下一步] 繼續。

    A screenshot showing the migration overview window.

  2. 決定您想要移轉 LUIS 應用程式的語言資源。 如果您已建立語言資源,請選取您的 Azure 訂用帳戶,後面接著您的語言資源,然後選取 [ 下一步]。 如果您沒有語言資源,請按兩下連結以建立新的語言資源。 之後,選取資源,然後選取 [ 下一步]。

    A screenshot showing the resource selection window.

  3. 選取您想要移轉的所有 LUIS 應用程式,並指定其每個版本。 選取 [下一步]。 選取您的應用程式和版本之後,系統會提示您收到一則訊息,告知您任何不會從 LUIS 應用程式傳遞的功能。

    注意

    交談語言理解不支援特殊字元。 您選取 LUIS 應用程式名稱中的任何特殊字元都會在新的移轉應用程式中移除。 A screenshot showing the application selection window.

  4. 檢閱您的語言資源和 LUIS 應用程式選項。 選取 [ 完成] 以移轉您的應用程式。

  5. 彈出視窗可讓您追蹤應用程式的移轉狀態。 尚未開始移轉的應用程式狀態為 [未啟動]。 已開始移轉的應用程式的狀態會是 [進行中],一旦完成移轉,其狀態將會 [成功]。 失敗的應用程式表示您必須重複移轉程式。 移轉完成所有應用程式之後,請選取 [ 完成]。

    A screenshot showing the application migration progress window.

  6. 在應用程式移轉之後,您可以執行下列步驟:

常見問題集

CLU 支援哪些 LUIS JSON 版本?

CLU 支援模型 JSON 7.0.0 版。 如果 JSON 格式較舊,則必須先匯入 LUIS,然後使用最新版本從 LUIS 導出。

CLU 中的實體如何不同?

在 CLU 中,單一實體可以有多個實體元件,這是不同的擷取方法。 這些元件接著會使用您可以定義的規則結合在一起。 可用的元件如下:

  • 學習:相當於 LUIS 中的 ML 實體,標籤可用來定型機器學習模型,以根據所提供標籤的內容和內容預測實體。
  • 清單:就像 LUIS 中的清單實體一樣,列出元件完全符合一組同義字,並將其對應回稱為清單索引鍵標準化值。
  • 預先建置:預先建置的元件可讓您針對 LUIS 和 CLU 中可用的常見類型,使用預先建置的擷取器來定義實體。
  • Regex:Regex 元件會使用正則表達式來擷取自定義定義的模式,與 LUIS 中的 Regex 實體完全相同。

LUIS 中的實體會以 CLU 中相同名稱的實體的形式傳輸,並傳輸對等的元件。

移轉之後,系統會將結構化的機器學習分葉節點和底層子實體傳輸到新的 CLU 模型,同時忽略所有父實體和較高層級實體。 實體的名稱會是與父實體串連的底層實體名稱。

範例:

LUIS 實體:

  • 披薩訂單
    • 一流
    • 大小

CLU 中遷移的 LUIS 實體:

  • Pizza Order.Topping
  • Pizza Order.Size

您也無法為 CLU 中的 2 個不同的實體加上標籤,以取得相同的字元範圍。 CLU 中的學習元件是互斥的,而且不會只為學習的元件提供重疊的預測。 移轉 LUIS 應用程式時,重疊的實體標籤會保留最長的標籤,並忽略任何其他標籤。

如需實體元件的詳細資訊,請參閱 實體元件

實體角色如何轉移至 CLU?

您的角色將會隨著其加上標籤的語句,以不同的實體的形式傳輸。 每個角色的實體類型都會決定要填入哪個實體元件。 例如,清單實體角色會以與角色相同名稱的實體傳送,並填入清單元件。

如何在 CLU 中傳輸實體功能?

不會傳輸做為意圖功能的實體。 做為其他實體功能的實體將會填入實體的相關元件。 例如,如果名為 SizeList 的清單實體是做為名為 Size 之機器學習實體的功能,則 Size 實體將會傳送至 CLU,並將清單值從 SizeList 新增至其清單元件。 同樣適用於預先建置和 regex 實體。

CLU 中的實體信賴分數如何不同?

任何擷取的實體都有 100% 信賴分數,因此不應該使用實體信賴分數來決定實體。

Conversational Language Understanding 如何處理多語系?

對話語言理解專案接受不同語言的語句。 此外,您可以使用一種語言來定型模型,並將其擴充為以其他語言預測。

範例:

訓練語句(英文): 你怎麼樣?

加上標籤的意圖:問候語

運行時間語句 (法文): 批注 ça va?

預測意圖:問候語

CLU 的正確性如何優於 LUIS?

CLU 使用最先進的模型來增強不同意圖分類和實體擷取模型機器學習效能。

這些模型不區分次要變化,移除下列設定的需求:標準化標點符號、正規化讀音符號、正規化文字形式,以及使用所有定型數據

此外,新模型不支援片語清單功能,因為它們不再需要使用者的補充資訊,以提供語意類似的單字,以提升精確度。 模式也可用來使用新模型範例中不需要的規則型比對技術,提供改良的意圖分類。 下列問題會更詳細地說明這一點。

如果我在 LUIS 中使用的功能不再存在,該怎麼辦?

LUIS 中存在數個功能,CLU 中將無法再使用。 這包括執行特徵工程、具有模式和 pattern.any 實體和結構化實體的能力。 如果您在 LUIS 中擁有這些功能的相依性,請使用下列指引:

  • 模式:已在 LUIS 中新增模式,以透過定義正則表示式範本語句來協助意圖分類。 這包括只定義模式意圖的能力(不含語句範例)。 CLU 能夠利用最先進的模型進行一般化。 您可以提供一些語句來比對 CLU 中意圖的特定模式,而且它可能會將不同的模式分類為最上層的意圖,而不需要模式範本語句。 這可簡化制定這些模式的需求,這些模式在 LUIS 中受到限制,並提供更佳的意圖分類體驗。

  • 片語清單功能:主要能夠藉由醒目提示要使用的重要元素/功能來協助分類意圖的功能。 這已不再需要,因為 CLU 中使用的深層模型已經具備識別語言固有元素的能力。 接著,移除這些功能不會影響模型的分類能力。

  • 結構化實體:定義結構化實體的能力主要是啟用語句的多層次剖析。 使用子實體的不同可能性,LUIS 需要定義實體的所有不同組合,並將其呈現給模型作為範例。 在 CLU 中,不再支援這些結構化實體,因為不支援重疊的學習元件。 有幾個可能的方法可以處理這些結構化擷取:

    • 非模棱兩可的擷取:在大部分情況下,分葉實體的偵測就足以瞭解完整範圍內所需的專案。 例如,已完整跨越來源和目的地的 Trip結構化實體(倫敦到紐約家庭工作)可以透過針對來源和目的地預測的個別範圍來識別。 其作為個別預測的存在會通知您 Trip 實體。
    • 模棱兩可的擷取:當不同子實體的界限不太清楚時。 為了說明,請以「我想訂購辣椒披薩和額外的乳酪素食披薩」為例。 雖然可以擷取不同的披薩類型和配料修改,但在沒有內容的情況下擷取這些披薩類型會有一定程度的模棱兩可的加入額外的乳酪。 在此情況下,範圍的範圍是以內容為基礎,而且需要 ML 來判斷這一點。 針對模棱兩可的擷取,您可以使用下列其中一種方法:
  1. 將子實體合併到相同實體內的不同實體元件。

範例:

LUIS 實作:

  • 披薩訂單 (實體)
    • 大小 (子專案)
    • 數量(子實體)

CLU 實作:

  • 披薩訂單 (實體)
    • 大小 (列出實體元件:小型、中型、大型)
    • 數量(預先建置的實體元件:數位)

在 CLU 中,您會為包含大小和數量之 Pizza Order 的整個範圍加上標籤,這會傳回具有大小清單索引鍵的披薩訂單,以及相同實體物件中數量的數位值。

  1. 針對實體包含數個深度層級的複雜問題,您可以為實體結構中的每個深度層級建立專案。 這可讓您選擇:
  • 將語句傳遞至每個專案。
  • 結合階段中 CLU 中每個專案的分析。

如需此概念的詳細範例,請參閱 GitHub可用的披薩範例專案。

如何? 在 CLU 中管理版本?

CLU 會儲存用來定型模型的數據資產。 您可以匯出模型的資產,或隨時將其載入專案。 因此,模型會作為專案的不同版本。

您可以使用 Language Studio 匯出 CLU 專案,或以程式設計方式在本機儲存不同版本的資產。

為什麼 CLU 分類與 LUIS 不同? None 分類如何運作?

CLU 會使用多重分類來呈現不同的定型模型方法,而不是二元分類。 因此,分數的解譯不同,而且在訓練選項之間也有所不同。 雖然您可能會取得更好的結果,但您必須觀察分數的差異,並判斷接受意圖預測的新閾值。 您可以在項目設定中,輕鬆地為 None 意圖新增信賴分數閾值。 如果頂端意圖未超過所提供的信賴分數閾值,這會傳回 None 作為最上層意圖。

我需要比 LUIS 更多的 CLU 模型數據嗎?

新的 CLU 模型對語言具有比 LUIS 更好的語意理解,反過來又有助於讓模型隨著數據大幅減少而一般化。 雖然您不應該想要減少您擁有的數據量,但相較於 LUIS,您應該預期 CLU 中變化和同義字的效能和復原能力更好。

如果我不移轉 LUIS 應用程式,將會刪除它們嗎?

您現有的 LUIS 應用程式將持續到 2025 年 10 月 1 日為止。 在那段時間之後,您將無法再使用這些應用程式,服務端點將不再運作,而且應用程式將會永久刪除。

為 。CLU 上支援的 LU 檔案?

CLU 僅支援 JSON 格式。 您可以匯入 。LU 檔案到 LUIS 並以 JSON 格式匯出,或者您可以遵循上述應用程式的移轉步驟。

CLU 的服務限制為何?

如需詳細資訊, 請參閱服務限制 一文。

如果我將應用程式從 LUIS 遷移至 CLU,是否需要重構程式代碼?

CLU 應用程式的 API 物件與 LUIS 不同,因此需要程式碼重構。

如果您使用 LUIS 程式設計 API 和 執行時間 API,您可以使用其對等 API 來取代它們。

CLU 撰寫 API:CLU 會針對個別動作,例如 新增語句刪除實體重新命名意圖,而不是 LUIS 的特定 CRUD API,CLU 會提供 匯入 API ,以使用相同名稱取代專案的完整內容。 如果您的服務使用 LUIS 程式設計 API 來為其他客戶提供平臺,您必須考慮這個新的設計範例。 所有其他 API,例如: 列出專案定型部署刪除 。 匯入部署動作的 API 是異步操作,而不是在 LUIS 中同步。

CLU 運行時間 API:新的 API 要求和回應包含許多相同的參數,例如:查詢預測最上層意圖、意圖實體及其值。 CLU 回應物件提供更直接的方法。 實體預測會在語句文字內提供,而解析或清單索引鍵等任何其他資訊會在稱為 extraInformationresolution的額外參數中提供。

您可以使用 .NETPython CLU 運行時間 SDK 來取代 LUIS 運行時間 SDK。 CLU 目前沒有可用的撰寫 SDK。

CLU 中的訓練時間如何不同? 標準訓練與進階訓練如何不同?

CLU 提供標準訓練,以英文訓練和學習,與 LUIS 的訓練時間相當。 它也提供進階訓練,這需要相當長的時間,因為它會將訓練延伸至所有其他 支持的語言。 定型 API 將繼續是異步程式,您必須評估您為解決方案採用的 DevOps 程式變更。

與 LUIS 相比,CLU 中的體驗如何變更? 開發生命週期如何不同?

在 LUIS 中,您會建置-Train-Test-Publish,而在 CLU 中,您會建置-Train-Evaluate-Deploy-Test。

  1. 建置:在 CLU 中,您可以在定型之前定義意圖、實體和語句。 CLU 也可讓您在建置要用於模型評估的應用程式時指定 測試數據 。 評估會評估模型在測試數據上的表現,並提供精確度、召回率和 F1 計量。
  2. 型:每次定型時,您都會以名稱建立模型。 您可以覆寫已定型的模型。 您可以指定 標準進階 定型,並判斷您是否要使用測試數據進行評估,或將定型數據的百分比排除在定型之外,並作為測試數據使用。 定型完成後,您可以評估模型在外部執行的方式。
  3. 部署:定型完成且您擁有名稱為的模型之後,即可針對預測進行部署。 部署也會命名,並具有指派的模型。 同一個模型可以有多個部署。 您可以使用不同的模型覆寫部署,或者您可以將模型與專案中的其他部署交換。
  4. 測試:部署完成後,您就可以透過部署端點使用它進行預測。 您也可以在 Studio 的 [測試部署] 頁面中進行測試。

此程式與 LUIS 相反,其中應用程式識別碼已附加至所有專案,而且您已在預備或生產位置中部署應用程式的版本。

這會影響您使用的DevOps程式。

CLU 是否支援容器?

否,您無法將 CLU 匯出至容器。

移轉後,我的 LUIS 應用程式將在 CLU 中命名?

LUIS 應用程式名稱中的任何特殊字元都會移除。 如果清除的名稱長度大於 50 個字元,將會移除額外的字元。 如果移除特殊字元之後的名稱是空的(例如,如果 LUIS 應用程式名稱為 @@),則會取消命名新名稱。 如果已經有同名的對話語言理解專案,則移轉的 LUIS 應用程式會附加 _1 第一個重複專案,並針對每個額外的重複專案增加 1。 如果新名稱的長度為 50 個字元,而且需要重新命名,則會移除最後 1 或 2 個字元,才能串連數位,而且仍然在 50 個字元的限制內。

從 LUIS Q&A 移轉

如果您有本文中未回答的任何問題,請考慮將您的問題留在我們的 Microsoft Q&A 線程

下一步