共用方式為


從 Language Understanding (LUIS) 移轉至交談式語言理解 (CLU)

會話語言理解(CLU)是一款基於雲端的 AI 產品,採用 Azure 語言與 Foundry 工具中的服務。 它是最新一代的語言理解(LUIS),並具備向下相容性,可與先前開發的 LUIS 應用程式相容。 CLU 採用最先進的機器學習智慧,讓使用者能夠建置自訂的自然語言理解模型,以預測交談語句中的意圖和實體。

CLU 與 LUIS 相比,具有以下優勢:

  • 改善先進機器學習模型的精確度,在分類意圖與擷取實體方面表現更出色。 LUIS 需要更多範例,才能將意圖和實體中的某些概念一般化,而 CLU 更進階的機器學習可藉由要求較少的數據來減輕客戶的負擔。
  • 模型學習和定型的多語系支援。 以一種語言將專案定型,並立即預測 96 種語言中的意圖和實體。
  • 與不同 CLU 及使用調度工作流程的客製化問答專案的整合性相當便利。
  • 能夠在部署之前使用 Language Studio 和 API 在體驗中新增測試資料,以進行模型效能評估。

開始時,你可以直接使用 CLU 或遷移你的 LUIS 應用程式。

LUIS 與 CLU 之間的比較

下表提供 LUIS 與 CLU 功能之間的並排比較。 此表也會醒目顯示 LUIS 應用程式在移轉至 CLU 之後的變更。 選取連結的概念以深入瞭解變更。

LUIS 功能 CLU 功能 移轉後
機器學習和結構化 ML 實體 已學習實體組成部分 沒有子實體的機器學習實體會以 CLU 實體的形式傳輸。 結構化 ML 實體只會將葉子節點(不具子實體的最低層級子實體)作為 CLU 中的實體。 CLU 中實體的名稱是與父系串連的子實體名稱。 例如 Order.Size
清單、RegEx 和預先建置的實體 清單、正則表達式與預建實體元件 清單、正則表達式和預建實體會以CLUE中的實體形式進行轉移,並基於實體類型填入相關的實體元件。
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 執行r階段 API 和 SDK 支援 CLU 執行時 API。 CLU 執行時 SDK 支援 .NET 與 Python。 欲了解更多資訊, 請參閱 如何呼叫 API。 為了使用 CLU 執行時 API 的回應,重構是必需的。

移轉 LUIS 應用程式

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

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

請依照以下步驟開始使用 LUIS 入口網站進行遷移:

  1. 登入 LUIS 入口網站之後,請選取畫面頂端橫幅上的按鈕,以啟動移轉精靈。 移轉會將您選取的 LUIS 應用程式複製到 CLU。 移轉概觀索引標籤會提供交談語言理解及其優點的簡短說明。 按 [下一步] 繼續進行。

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

  3. 選取您想要移轉的所有 LUIS 應用程式,並指定其每個版本。 選取 下一步。 選擇您的應用程式和版本之後,系統會顯示一則訊息,告知您哪些功能將不會保留在您的 LUIS 應用程式中。

    備註

    交談式語言理解目前不支援特殊字元。 您選取 LUIS 應用程式名稱中的任何特殊字元都會在新的移轉應用程式中移除。

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

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

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

    • 訓練你的模型
    • 部署模型
    • 呼叫你的部署模型

常見問題

CLU 是否支援特定的 LUIS 版本?

是的,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 實體:

  • 比薩訂單.配料
  • 比薩訂單尺寸

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

欲了解更多實體組件相關資訊,請參閱實體組件。

實體角色如何傳輸至 CLU?

您的角色會隨著其加上標籤的語句,以獨立的實體形式被轉移。 每個角色的實體類型會決定要填入的實體元件。 例如,清單實體角色會被轉換為具有與角色相同名稱的實體,並且包含已填滿的清單元件。

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

不會轉移作為意圖特徵的實體。 做為其他實體特徵使用的實體會填入實體的相關元件。 例如,如果名為 SizeList 的清單實體被用作名為 Size 的機器學習實體的功能,則 Size 實體會傳輸到 CLU。 SizeList 中的清單值會新增至 Size 實體的清單元件。 這同樣適用於預先建置和 Regex 實體。

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

任何擷取的實體都有100個% 信賴分數,因此不應該使用實體信賴分數在實體之間進行決策。

對話式語言理解如何提供多語系?

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

範例:

將語句定型 (英文) :你好嗎?

加上標籤的意圖:問候語

執行時間語句(法文): Comment ça va?

預測意圖:問候語

CLU 的精確度如何優於 LUIS?

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

這些模型不區分次要變化,且不再需要下列設定:將標點符號標準化將變音符號標準化將文字形式標準化,以及 使用所有定型資料

此外,新模型不支援片語清單功能,因為它們不再需要使用者的補充資訊,以提供語意類似的字組,以取得更好的精確度。 模式也可用來使用新模型範例中不需要的規則型比對技術,提供改良的意圖分類。 以下問題提供了更多細節。

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

若干 LUIS 中的功能在 CLU 中已不再提供。 這些功能包括能夠執行特徵工程、具有模式和 pattern.any 實體以及結構化實體。 如果您對 LUIS 中的這些功能有相依性,請運用下列指引:

  • 模式:已在 LUIS 中新增模式,以透過定義規則運算式範本語句來協助分類意圖。 此功能包含定義僅限模式意圖(不含語句範例)的功能。 CLU 能夠使用最先進的模型進行一般化。 您可以提供一些話語,讓特定模式與 CLU 中的意圖相符。 在許多情況下,CLU 會將這些不同的模式分類為最上層意圖,而不需要模式範本語句。 此步驟可簡化制定這些模式的需求,這在 LUIS 中受到限制,並提供更好的意圖分類體驗。

  • 片語清單功能:主要能夠建立特徵的關聯性,透過醒目提示要使用的主要元素/功能來協助分類意圖。 不再需要此步驟,因為 CLU 中使用的深度模型已經具備識別語言固有元素的能力。 接著,移除這些功能不會影響模型的分類能力。

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

    • 非模棱兩可的擷取:在大部分情況下,分葉實體的偵測就足以了解完整範圍內所需的專案。 例如,完全橫跨出發地和目的地 (倫敦到紐約住家到公司) 的行程這類結構化實體,也可以透過針對出發地和目的地預測的個別範圍進行識別。 其是作為個別預測而存在,會通知您行程實體。
    • 當不同子實體的界限不清楚時,就會發生模棱兩可的提取。 為了說明這一點,以“我想點一個意大利辣香腸披薩和一個有額外的奶酪的素食披薩”為例。雖然可以提取不同的披薩類型和配料修改,但在沒有上下文的情況下提取它們會在一定程度上造成額外奶酪的位置不明确。 在此情況下,跨度的範圍是以內容為基礎,需要 ML 來判斷。 對於模棱兩可的擷取,您可以使用下列其中一種方法:
  1. 將子實體合併為相同實體內的不同實體元件。

範例:

LUIS 實作:

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

CLU 實作:

  • 披薩訂單 (實體)
    • 大小 (清單實體元件:小、中、大)
    • 數量 (預先建置的實體元件:數字)

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

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

想了解這個概念的詳細範例,可以參考 GitHub 上的披薩範例專案。

如何管理 CLU 中的版本?

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

你可以用 Language Studio 或程式化匯出 CLU 專案,並將不同版本的資產儲存在本地。

為何 CLU 分類與 LUIS 不同? None 分類的運作方式為何?

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

CLU 模型需要的資料比 LUIS 模型多嗎?

新的 CLU 模型對於語言的語意理解比 LUIS 更好,進而有助模型以更少資料量來進行一般化。 您不應該以減少擁有的數據量為目標。 不過,相較於 LUIS,您可以期待 CLU 在效能更佳,同時對於變化和同義字的彈性更高。

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

您目前的 LUIS 應用程式可在 2025 年 3 月 31 日之前存取。 在此日期之後,您將無法使用這些應用程式,服務端點無法運作,而且應用程式會永久移除。 從 2025 年 10 月 31 日開始,您無法再在線上存取 LUIS 入口網站。

CLU 是否支援的 .LU 檔案?

CLU 僅支援 JSON 格式。 您可以匯入 .LU 檔案新增至 LUIS,並以 JSON 格式匯出,或者您可以遵循應用程式的先前移轉步驟。

CLU 有哪些服務限制?

欲了解更多資訊, 請參閱 服務限制。

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

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

如果你使用 LUIS 的程式化 API 和執行時 API,可以用它們的等效 API 來取代它們。

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

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

你可以用 .NET 或 Python CLU 執行 SDK 來取代 LUIS 執行時的 SDK。 CLU 目前沒有可用的撰寫 SDK。

CLU 中的定型時間有何不同? 標準定型與進階定型有何不同?

CLU 提供標準定型,是以英文定型和學習,而且相當於 LUIS 的定型時間。 它也提供進階訓練,因為這會將訓練擴展到所有其他支援語言,所需時間明顯較長。 train API 持續是一個非同步過程,您需要評估為您的解決方案採用的 DevOps 流程所做的變更。

相較於 LUIS,CLU 中的體驗有何變化? 開發生命週期有何不同?

您在 LUIS 中會使用建置-定型-測試-發佈流程,在 CLU 中則是建置-定型-評估-部署-測試流程。

  1. 建置:在 CLU 中,您可以在定型之前定義意圖、實體和語句。 CLU 也可讓您在建置要用於模型評估的應用程式時指定測試資料。 評估作業會評估模型對您測試資料的成效,並提供精確度、回收和 F1 計量。
  2. 定型:每次定型時,您都會建立具有名稱的模型。 您可以覆寫已定型的模型。 您可以指定 標準進階 訓練。 然後決定您是否要使用測試資料進行評估,或將一定百分比的訓練資料從訓練中排除並用作測試資料。 定型完成後,您可以評估模型在外部執行的方式。
  3. 部署:定型完成且您有具備名稱的模型之後,即可針對預測進行部署。 系統也會對部署命名,且部署會具有指派的模型。 您可以針對相同模型有多個部署。 部署可以使用不同的模型覆寫,或者您可以將模型與專案中的其他部署交換。
  4. 測試:部署完成後,您可以透過部署端點使用其進行預測。 您也可以在工作室的 [測試部署] 頁面中進行測試。

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

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

CLU 是否支援容器?

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

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

LUIS 應用程式名稱中的任何特殊字元都會移除。 如果清除的名稱長度大於 50 個字元,則會移除額外的字元。 如果移除特殊字元之後的名稱是空的(例如,如果 LUIS 應用程式名稱為 @@),則會 取消命名新名稱。 如果已經存在相同名稱的交談式語言理解專案,對於第一個重複的專案,系統會在移轉的 LUIS 應用程式名稱後附加 _1,並且對於每個後續的重複專案,將數字遞增 1。 如果新名稱的長度為 50 個字元,且需要重新命名,則會移除最後一兩個字元。

從 LUIS git p 移轉

如果你有本文未解答的問題,歡迎在我們的 Microsoft Q&A 討論串留言。

後續步驟

  • 快速入門:建立一個 CLU 專案
  • CLU 語言支援
  • CLU 常見問題集