應用程式的資料收集

重要

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

Language Understanding (LUIS) 應用程式會在應用程式開發時需要資料。

LUIS 中使用的資料

LUIS 會使用文字作為資料來訓練和測試您的 LUIS 應用程式,以進行意圖的分類和實體的擷取。 您需要夠大的資料集,讓您有足夠的資料,為訓練和測試建立個別的資料集,其中具有下面特別提到的多樣性和散發。 其中每一個資料集中的資料不應該重疊。

為範例語句選取訓練資料

根據下列準則,為您的訓練集選取語句:

  • 實際資料最適合

    • 來自用戶端應用程式的實際資料:選取的語句是用戶端應用程式中的實際資料。 如果客戶今天傳送 Web 表單與其查詢,而且您正在建置 Bot,則您可以從使用 Web 表單資料開始。
    • 群眾外包資料:如果您沒有任何現有的資料,請考慮使用群眾外包語句。 嘗試使用群眾外包,從您案例的實際使用者群體中獲取語句,以取得應用程式將看到的最近似實際資料。 群眾外包人類語句優於電腦產生的語句。 當建置在特定模式中產生的綜合語句資料集時,其會缺少很多您在人們建立語句時看到的自然變化,而且最終也不會產生很好的概括性。
  • 資料多樣性

    • 區域多樣性:確定每個意圖的資料儘可能多樣化,包括「片語化」(字組選擇) 和「文法」。 如果您要教導有關休假日的 HR 原則意圖,請確定您有語句,代表用於您所有服務區域的條款。 例如,在歐洲,人們可能會詢問 taking a holiday,在美國,人們則可能詢問 taking vacation days
    • 語言多樣性:如果您有使用各種母語的使用者是以第二語言進行溝通,請確保有代表非母語說話者的語句。
    • 輸入多樣性:考慮您的資料輸入路徑。 如果您要從一個人、部門或輸入裝置 (麥克風) 收集資料,則可能會遺失對於您應用程式了解所有輸入路徑來說很重要的多樣性。
    • 標點符號多樣性:考慮人們在文字應用程式中使用不同層級的標點符號,並確定您有各式各樣使用標點符號的方式。 如果您是使用來自語音的資料,其不會有任何標點符號,因此您的資料不應該如此。
  • 資料散發:確定跨意圖分佈的資料表示您的用戶端應用程序接收的資料有著相同的分佈。 如果您的 LUIS 應用將對要求安排休假的語句進行分類 (50%),但其還會看到查詢剩餘休假天數的語句 (20%)、核准休假的語句 (20%),以及一些超出範圍和閒聊的語句 (10%),則您的資料集應有每種語句的範例百分比。

  • 使用所有資料形式:如果您的 LUIS 應用程式將會以多種形式取得資料,請務必將這些形式包含在訓練語句中。 例如,如果您的用戶端應用程式同時接受語音和具類型的文字輸入,您必須讓語音轉換文字產生的語句以及具類型的語句。 您將看到人們說話方式與其輸入方式的不同變化,以及語音辨識與打錯字中的不同錯誤。 所有這些變化都應體現在您的訓練資料中。

  • 正面和負面範例:若要教導 LUIS 應用程式,其必須了解意圖是什麼 (正面) 和意圖不是什麼 (負面)。 在 LUIS 中,單一意圖的語句只能是正面。 將語句新增至意圖時,LUIS 會自動使該相同的範例語句成為所有其他意圖的負面範例。

  • 應用程式範圍以外的資料:如果您的應用程式可看到落在所定義意圖之外的語句,請務必提供這些語句。 未指派給特別定義意圖的範例將以「無」意圖標示。 「無」意圖務必要有實際的範例,才能正確預測所定義意圖範圍外的語句。

    例如,如果您要建立專注於休假時間的 HR Bot,並有三個意圖:

    • 安排或編輯休假
    • 查詢可用的休假日
    • 核准/不核准休假

    您想要確保您具有的語句既涵蓋了這兩種意圖,又涵蓋了應用程式應服務範圍之外的潛在語句,如下所示:

    • What are my medical benefits?
    • Who is my HR rep?
    • tell me a joke
  • 罕見範例:您的應用程式需要具有罕見範例以及一般範例。 如果您的應用程式從未見過罕見範例,將無法在生產環境中加以識別。 如果您使用的是實際資料,您將能夠更精確地預測您的 LUIS 應用程式在生產環境中的運作方式。

品質而非數量

在新增更多資料之前,請先考慮現有資料的品質。 透過 LUIS,您可以使用機器教學。 您的標籤和您所定義的機器學習功能的組合,就是您的 LUIS 應用程式所使用的功能。 其不只依賴標籤數量做出最佳預測。 您的 LUIS 應用程式在生產環境中看到的範例多樣性及其表示法是最重要的部分。

前置處理資料

下列前置處理步驟將協助建置更好的 LUIS 應用程式:

  • 移除重複項目:重複語句不會造成傷害,但它們不會提供任何幫助,因此移除它們將可節省標記時間。
  • 套用相同的用戶端應用程式前置處理:如果您的用戶端應用程式 (其會呼叫 LUIS 預測端點) 在執行階段套用資料處理,然後將文字傳送至 LUIS,則您應該在以相同方式處理的資料上訓練 LUIS 應用程式。
  • 不要套用用戶端應用程式不使用的新清除程序:如果您的用戶端應用程式直接接受語音產生的文字,而沒有任何清除 (例如文法或標點符號),則您的語句必須反映相同的內容,包括任何遺漏的標點符號,以及您需要考慮的其他誤認。
  • 不要清除資料:不要去除格式錯誤的輸入,您可能會從模糊的語音辨識、意外按鍵或打錯/拼錯的文字中取得這類輸入。 如果您的應用程式會看到像這樣的輸入,請務必針它們訓練和測試您的應用程式。 如果您不預期您的應用程式了解格式錯誤的輸入意圖,請新增此意圖。 標記此資料,可協助您的 LUIS 應用程式在執行階段預測正確的回應。 您的用戶端應用程式可對無法辨識的語句選擇適當的回應,例如 Please try again

標記資料

  • 將文字標記為其是否正確:範例語句應該具有所有形式的標記實體。 這包括拼錯、打錯和翻錯的文字。

LUIS 應用程式進入生產階段之後的資料檢閱

一旦您將應用程式部署至生產環境,請檢閱端點語句來監視實際語句流量。 這可讓您使用實際資料來更新訓練語句,進而改善您的應用程式。 任何使用群眾外包或非實際案例資料建置的應用程式,都必須根據其實際使用方式進行改善。

選取測試資料進行批次測試

上面針對訓練語句列出的所有準則,均適用於您應該用於測試集的語句。 確定跨意圖和實體的散發會儘可能地反映實際散發。

不要在測試集中重複使用來自訓練集的語句。 這會對您的結果產生不當的偏差,並且不會為您正確指出 LUIS 應用程式在生產環境中的執行方式。

一旦發佈了您應用程式的第一個版本,您就應該使用來自真實流量的語句更新測試集,以確保您的測試集反映您的生產散發,而且您可以監視一段時間後的實際效能。

下一步

了解 LUIS 如何在預測前改變您的資料