構建機器人時的一個常見步驟是定義“意圖”。
目的可能是「重置密碼」、「預訂航班」或「聯繫支持人員」。機器人開發人員需要在軟體中輸入多個短語,這些短語都具有與意圖相同的含義。例如,“我想飛往巴黎”將是“預訂航班”意圖的一個短語。
通常, 機器人開發平臺 要求使用者為給定的意圖輸入許多短語。這些短語是自然語言處理 (NLP) 演算法的訓練數據。
NLP 演算法是一種機器學習演算法,它根據數據訓練自身,以便能夠識別具有相同含義但不同單詞的短語(相對於訓練數據)。
NLP 演算法使用機器人開發人員提供的意圖數據以及有關語言的大量數據(之前已經訓練過)來校準其內部模型,以便能夠識別新短語。
聊天機器人開發人員向 NLP 演算法提供的範例越多,它就越能準確地識別具有不同措辭的其他短語中的相同含義。至少這是給機器人開發人員的資訊。
問題在於並非所有訓練數據都是平等的。數據的質量與數量一樣重要。
例如,假設我想創建一個名為“重置密碼”的意圖。
機器人作者可能會開始創建以下短語:
重置我的密碼
我忘記了密碼
我的密碼無效
請新密碼
密碼問題
等。
上述問題在於所有短語都使用相同的單詞「密碼」。這意味著,當演算法根據這些數據進行自我訓練時,它會識別出這樣的規則:如果短語中有“密碼”一詞,那麼意圖是“重置我的密碼”。這當然是錯誤的。人們可以說許多其他沒有「密碼」一詞的短語,這些短語與“重置我的密碼”具有相同的含義。其中還有許多帶有「密碼」一詞的短語並不意味著「重置我的密碼」。
在演算法領域,這個問題稱為對訓練數據的過度擬合。該演算法過度擬合了「密碼」一詞,因此“相信”每個帶有“密碼”一詞的短語都意味著“重置我的密碼”。
對於相同的意圖,還有其他類似的例子。例如,機器人開發人員可以輸入以下短語:
我的憑據不起作用
我的登錄不起作用
我的密碼無效
我的使用者名不起作用。
等。
當然,這是一個更極端的問題示例,但在創建訓練數據時,這種模式很常見。這將再次導致演算法過度擬合數據,但這次是短語“不起作用”。
希望解決方案現在已經很明顯了。訓練數據中的每個短語都需要盡可能與數據集中的其他短語不同。例如:
我的憑據不起作用。
我需要重置密碼。
如何解決我的登錄問題?
誰可以説明我登錄系統。
等。
當然,創建上述數據集需要付出更多的努力。打開一個同義詞庫以查找同義詞以激發短語的想法甚至可能會有所説明。
機器人開發人員克服此問題的另一種方法是訪問客戶服務聊天數據,該數據提供了真實客戶提出相同問題的所有方式的許多範例。這些數據可能非常有價值。
有一個問題是 NLP演算法 何時能夠在一個小的訓練數據集上表現良好。讓機器人僅使用一個小數據集完美工作肯定會更好。這絕對是研究人員正在研究的事情,因為它不僅可以減少所需的時間和精力 創造 chatbots,這將大大提高它們的品質。
NLP 演算法對大多數機器人開發人員來說是一個黑匣子。然而,重要的是,他們要了解演算法如何工作的基礎知識,以便他們知道他們需要向演算法提供什麼樣的訓練數據(意圖數據)以產生最佳結果。