您有看過或使用過 Google 智慧回應嗎?它是一項為用戶訊息提供自動回覆建議的服務。見下文。
這是基於檢索的聊天機器人的一個有用應用。想一想。我們有多少次發短信,例如“謝謝” 、 “嘿”或“稍後見” ?在這個專案中,我們建立了一個簡單的訊息回覆建議系統。
奎平公園
Yj Choe 進行程式碼審查
我們需要設定要顯示的建議清單。自然,首先考慮頻率。但是那些意思相似的片語又如何呢?例如,是否應該非常感謝您並希望得到獨立對待?我們不這麼認為。我們想將它們分組並保存我們的位置。如何?我們使用平行語料庫。 「非常感謝」和「謝謝」很可能被翻譯成相同的文字。基於這個假設,我們建構了具有相同翻譯的英語同義詞組。
我們微調 Huggingface 的 Bert 預訓練模型以進行序列分類。其中,一個特殊的起始標記[CLS]儲存了句子的全部資訊。附加額外層將壓縮資訊投射到分類單元(此處為 100)。
我們使用 OpenSubtitles 2018 西班牙語-英語平行語料庫來建立同義詞組。 OpenSubtitles 是翻譯電影字幕的大型集合。 en-es 資料由超過 61M 的對齊行組成。
理想情況下,訓練需要一個(非常)大的對話語料庫,但我們未能找到。我們使用康乃爾大學電影對話語料庫。它由 83,097 個對話或 304,713 行台詞組成。
蟒蛇>=3.6
tqdm>=4.30.0
火炬>=1.0
pytorch_pretrained_bert>=0.6.1
nltk>=3.4
步驟 0. 下載 OpenSubtitles 2018 西班牙文-英文平行資料。
bash download.sh
步驟 1. 從語料庫建立同義詞組。
python construct_sg.py
步驟 2. 製作 phr2sg_id 和 sg_id2phr 字典。
python make_phr2sg_id.py
步驟 3. 將單語英語文字轉換為 ids。
python encode.py
步驟 4. 建立訓練資料並儲存為 pickle。
python prepro.py
第 5 步:訓練。
python train.py
下載並提取預訓練模型並執行以下命令。
python test.py --ckpt log/9500_ACC0.1.pt
訓練損失緩慢但穩定地減少。
評估數據的 Accuracy@5 為 10% 至 20%。
對於實際應用,需要更大的語料庫。
不確定電影劇本與訊息對話有多少相似之處。
需要更好的建構同義詞組的策略。
基於檢索的聊天機器人是一種現實的應用程序,因為它比基於生成的聊天機器人更安全、更容易。