你有沒有在你對語音助理說「幫我訂明天台北到高雄的高鐵」,它要抓出日期、地點、交通工具,發現只看表面常常不夠?
你可以把它想成把句子裡的關鍵欄位填進表單,不只知道你要做什麼,還要知道細節是什麼。
對話系統如果只懂意圖,不懂細節,就沒辦法真的幫你完成任務。
容易混淆
意圖識別 意圖識別像判斷你的「目的」(例如:你是想訂票?還是想查天氣?),槽位填充則像進一步問「細節」(你是想訂哪裡的票?什麼時候的?)。兩者常常是搭檔,先判斷意圖,再從中提取具體資訊。
最關鍵的區別:先看它是在比意思、比結構,還是在做任務輸出。
記住這句就好
把時間、地點、數量這些細節抓出來,就是槽位填充。
實際案例
訂票系統要抓出出發地、目的地、日期、艙等,才能真的幫你下單。 天氣查詢要抓出城市和日期,才知道你問的是哪裡、哪一天。
算法與應用
常見做法是序列標注,像 BIO 標籤,把句子中的實體位置標出來。 現在也常和意圖分類一起做,先判斷目的,再抽出欄位。
情境判斷
Q1(直覺題): 如果系統知道你是要訂票,但不知道去哪裡,還能完成嗎?
→ 不能完整完成。意圖有了,槽位沒填滿,任務還不夠。
Q2(判斷題): 如果一句話裡有重疊的時間和地點資訊,這還算正常挑戰嗎?
→ 算,而且很常見。看情況,這時候模型要更依賴上下文。
常見問題
槽位填充和意圖識別有什麼區別?
意圖識別旨在理解使用者輸入的整體目的,例如“預訂餐廳”。槽位填充則負責提取完成該目的所需的具體資訊,例如餐廳名稱、日期、時間和人數。兩者通常一起使用,意圖識別確定目的,槽位填充提取細節。
槽位填充有哪些常見的技術方法?
常見的技術方法包括基於規則的方法、基於統計的方法(如HMM和CRF)以及基於深度學習的方法(如RNN和Transformer)。基於深度學習的方法,尤其是Transformer模型,目前在槽位填充任務中表現最佳。
如何提高槽位填充的準確性?
提高槽位填充準確性的方法包括:使用高質量的訓練資料、考慮上下文資訊、處理歧義、處理口語化表達、引入領域知識以及使用更先進的深度學習模型。此外,模型微調和資料增強技術也有助於提高性能。