此項目鏈接爲ParlAI Projects主頁,列出了基於ParlAI框架實現的各類projects。本篇文章則主要介紹Chit-chat任務中,基於ParlAI的模型表現,以及使用方法。
Requirements
- python 3.6
- torchtext
Steps
- clone
git clone https://github.com/facebookresearch/ParlAI.git ~/ParlAI
conda create -n parl python=3.6
source activate parl
tmux new -s parl
tmux attach -t parl
- install
cd ~/ParlAI; python setup.py develop
如遇到"ModuleNotFoundError: No module named 'parlai.zoo.convai2.build",請注意checkout stephenroller支持的convai2最後一版本如下:
git checkout convai2archive
重新python setup.py develop,即安裝成功。
Persona-Chat[project]
Task & models for chitchat with a given persona.
python projects/personachat/scripts/kvmemnn_interactive.py
ModelZoo
這裏再從PartAI的ModelZoo中選取幾個模型示例來試驗下效果。
Self-Feeding Chatbot
Paper: Learning from Dialogue after Deployment:Feed Yourself, Chatbot!
PartAI工程目錄下,交互示例:
python projects/self_feeding/interactive.py --model-file zoo:self_feeding/hh131k_hb60k_fb60k_st1k/model
下面問幾個問題驗證以下chatbot的一致性問題(Enter Your Message是用戶輸入,SelfFeeding是對應的回覆):
可以看出,當問出是否有兄弟姐妹,與是否有家人時,出現了常見的chatbot前後不一致的問題,缺少固定的chatbot個人信息,打破真實性。
在看下面這個示例,當連續提出多個問題(最喜歡的食物?你的名字?)時,此模型只識別到一個問題(你的名字?),並給出對應回答(my name is mia, yours?),同時即便給出了yours?這個問題,也並沒有對用戶的回答(anika)作出對應迴應,在很多類似情況下,也表明模型缺乏"listen to your partners"的會話技巧。
附贈有趣對話片段:
Blended Skill Talk models
Paper:Recipes for building an open-domain chatbot
Projects:Blender
Projects:Blended Skill Talk
接下來看下Blender的表演(注意已切回master):
Blender 90M
python parlai/scripts/safe_interactive.py -mf zoo:blender/blender_90M/model -t blended_skill_talk
不得不說,還真的挺秀的。
一點小缺點吧,還是存在前後回答不一致的問題,譬如前文其回答兩個哥哥和一個妹妹,後文的回答卻出現了early 20’s(20-23)的brother和late 20’s的sister(27-29),年齡描述前後相悖:
Blender 2.7B
python parlai/scripts/safe_interactive.py -mf zoo:blender/blender_3B/model -t blended_skill_talk
“what’s your favorite part in the book"被識別爲offensive,bot不予回覆,提示"Unsafe model reply detected. Clearing agent history. Please try again”…結尾意外收穫飛艇友軍:)
Blender 9.4B
python parlai/scripts/safe_interactive.py -mf zoo:blender/blender_9B/model -t blended_skill_talk