該存儲庫包含代碼來開發聊天機器人,該聊天機器人可以採用16種Myers-Briggs個性類型之一。
聊天機器人使用屬於相應的子reddit的帖子和評論對每個個性進行微調(例如, INFJ類型的R/INFJ)。
reddit_scraper.py包含腳本以刮擦給定的子reddit。要執行它,您首先需要一個MySQL數據庫的實例。您還需要與Reddit帳戶和MySQL數據庫關聯的一些參數:按照config.example.py的架構,所有這些都需要插入config.py文件中。
該腳本將首先將所有帖子加載在名為posts的表中,然後將其註釋在稱為comments的表中加載。儘管已應用並行化,但第二部分將需要數小時。這就是為什麼,一旦您下載了通過主腳本(〜20分鐘)感興趣的帖子,則可以使用腳本comments_scraper.py下載關聯的註釋。如果您中斷它,下次運行它時,腳本將從您離開的位置開始。
為了訓練該模型,我首先將數據報告為conversational dataset format ,即具有以下結構的CSV表。
| ID | 回覆 | 情境 | 上下文/0 | ... | 上下文/n |
|---|---|---|---|---|---|
| S892NN | 我很好 | 沒關係。你呢? | 生活怎麼樣? | ... | 你好! |
在這裡,上下文/n代表對話的開頭,轉到最近的交流(在上下文/0 ,上下文和響應中顯示,這是對話中的最新句子)。可以通過覆蓋config.py文件中的NUMBER_OF_CONTEXTS參數來更改上下文的基數。
腳本create_conversational_dataset.py從在刮擦階段創建的SQL表開始生成CSV,將其保存到數據文件夾中的泡菜文件中。對話是由帖子和其直接評論之一或帖子,評論及其評論鏈進行的。
腳本的執行是並行化的,因此它在n個不同的csvs上寫入 - n,具體取決於NUMBER_OF_PROCESSES參數 - 最終被串聯以創建所得的泡菜文件。
筆記本training.py包含對話數據上對話DialoGPT-medium語言模型的微調,並且主要是您在this notebook中可以找到的代碼的改編。
執行demo.py將開始對話。
要在呼吸道中運行所有代碼,您可以創建一個虛擬環境並運行以下命令。
virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt