如何寫訓練句?

這篇會教你

寫出好的訓練句,讓機器人更聽懂人話

優拓運用自然語意理解技術,使用少量資料(訓練句)就可讓機器學習更多人話。而我們要教你怎麼提供機器人好的訓練句。

訓練這件事

舉例給機器人

想像一下,要讓機器人能學會、聽懂,就像小孩子學習,要提供對的教材,才能學到正確的東西。而給機器人的教材,就是訓練句。

小提醒:在開始寫訓練句前,你應該已完成意圖分類(PS:加上意圖分類文章連結)。接下來要對每個意圖寫訓練句。(去看意圖怎麼分類)

訓練句怎麼寫

STEP 1: 觀察 >> 使用者會怎麼問,就怎麼寫

假設我們是一個飲料店家,其中一個意圖是 飲料外送
顧客可能會這樣問:

STEP 2: 歸納 >> 找出最常見、具代表性的問法

歸納出幾種最常見,也就是最具代表性的用法。我們發現顧客有幾種外送的問題:

STEP 3: 撰寫 >> 歸納的結果 + 句型問法變化搭配

利用剛剛歸納出的幾個用法來寫。搭配上句型的變化,可能是主動句、問句、短語等方式。

寫出好訓練句,哪些事你不該做

不符合實際用法的句子

維持大原則,使用者怎麼問就怎麼寫,大部分的人都會這樣問、具代表性的問法。

喝飲料
口很渴
外送辛苦嗎

像這樣很少見、或是目的不明確的問法,應該避免。

句型過度單一

根據你的意圖內涵,使用不同的句型,直述的、問句的、問法比較長的、比較短的,搭配一些用詞(禮貌用語、語氣詞等等)。

問句:可以外送嗎、能不能外送、有沒有送
直述句:我要外送、我想要外送
長句:想請問一下外送的規定、請問多少錢可以提供外送

不同意圖卻有相似的句子

不同的意圖中,應該要有明確屬於這個意圖的訓練句,內容不應重疊。例如不應該在「查詢分店資訊」中詢問「如何外送」的問題。要確保每個意圖的例子都很明確、機器人才有信心做判斷。

那,怎麼樣算是好的訓練句呢

判斷意圖的準度越高,訓練句越好

訓練完成後,可以在平台上輸入一些句子來測試機器人是否有學習到相關的問題。答對越多,表示訓練句的成果越好。

剛剛訓練了「飲料外送」相關的內容,可以利用意思相近,但是沒有教過機器人的例子來測試看看是否判斷正確,例如:

你們有做外送嗎
有沒有提供外送呢
外送相關規定的查詢

這些預期是在「飲料外送」意圖希望能答對的內容,測試的結果正確率越高,表示訓練的效果越好。

另一方面,也可以測試與訓練句意思不相近的句子,可以知道機器人能答對的範圍在哪裡:

有幾間分店?
加盟要多少錢
有沒有在徵店員

這些沒有被訓練過的句子,理論上機器人就不會回答,可知道機器人處理問題的範圍。

若發現測試結果不理想,可以嘗試以下步驟修正訓練內容:

  1. 檢視訓練句的內容是否符合該意圖的範圍
  2. 意圖之間的訓練具有明確的區分
  3. 每個意圖的訓練句比例(數量)是否差異過大,讓機器人容易把句字判斷到內容較多的意圖中
訓練優化

你可以在測試時,發現機器人是否有答對根據你的意圖建好的問答範圍。答錯的有幾種可能:

1.機器人還沒學到類似的內容

這種情況,可能是機器人學到的內容不夠,可以把這個句子加到訓練句當中再進行一次訓練。

2.意圖分類相近因此判斷錯誤

舉例來說:如果有「飲料外送」以及「分店查詢」兩個意圖,當有類似的問句:

東門分店有外送嗎
查詢分店的外送規定

這類兩個意圖的內容都符合的問題,就可能會判斷錯誤,這時需要檢視這樣的意圖分類是否恰當,內容相近常常一起詢問到,可以將他們合併成一個意圖。反之,若是一個意圖常常有不同的內容,就要考慮拆分。