本指南的目標是建立一個能夠像您 如何創造一個像你 一樣聊天的系統,使用您自己的 WhatsApp 和 Telegram 聊天作為 ML 資料集。
我們要做的事情可以概括為以下步驟:
- 取得您的 WhatsApp 和 Telegram 數據
- 解析它以建立 ML 就緒資料集
- 訓練GPT-2模型
- 與模特兒聊天
那麼,讓我們開始我們的冒險吧!您想看到一些結果嗎?查看官方網頁,請注意,它們是意大利語,因為它基於我的個人聊天記錄。
⚠ 警告:
最好不要對個人資訊(例如個人聊天訊息)運行隨機腳本。
我保證沒有問題,但您始終可以檢查正在 紐西蘭電報數據 使用的本機程式碼:messaging-chat-parser 和pistoBot,所有原始程式碼都是github 上的開源程式碼。
1. 獲取數據
首先,我們需要從聊天應用程式收集資料。我們現在將學習如何從兩個最常用的即時通訊應用程式匯出資料:WhatsApp和Telegram。
1.1 WhatsApp 導出
我們必須為要包含在最終資料集中的每個聊天匯出一個.txt檔案。因此,正如WhatsApp 官方網站所述:
- 打開您的 WhatsApp 行動應用程式
- 選擇一個單獨的聊天 一個單獨的聊天(例如與一位朋友聊天)> 點擊“更多選項” (三個垂直點)
- 選擇更多語音 >匯出聊天語音
- 在彈出視窗中選擇無媒體
- 選擇電子郵件服務(例如 Gmail 應用程式)並將您的電子郵件地址新增為收件人
- 等待接收帶有聊天記錄作為txt檔案附件的郵件
- 下載txt附件並儲存在電腦上
- 對您想要包含的每個單獨聊天重複這些步驟
請注意,只允許1對1的聊天(即個人),我們建議導出訊息數量最多的聊天,以獲得更大的資料集並獲得更好的最終結果。
現在您應該有更多文件,每個文件的結構如下所示:
記下您在匯出的聊天記錄中<YourName>佔位符下找到的文字。此參數是您的 WhatsApp 應用程式名稱,我們稍後將使用此值。
1.2 電報
這裡的過程將比 WhatsApp 更快,因為 Telegram 將匯出單一.json檔案中的所有內容,而沒有一次匯出一個聊天記錄的限制。
因此,如Telegram 官方網站所述:
- 打開Telegram 桌面應用程式
- 打開螢幕左上方的選單(三橫線)
- 前往設定語音 > 點選進階 >選擇匯出電報數據
- 僅應選擇以下欄位:
帳戶資訊、聯絡人清單、個人聊天、機器可讀 JSON - 確保媒體匯出設定下未選擇任何內容,並將大小限制設為最大
- 啟動導出並等待
- 將輸出檔重新命名為“ telegram_dump.json ”
現在您應該有一個名為telegram_dump.json的文件,其結構如下:
2. 解析數據
為了訓練 GPT-2 神經網絡,首先我們需要對資 零售電子郵件行銷策略:2024 年成功的關鍵 料進行預處理,以獲得具有機器學習相容結構的單一.txt 檔案。
2.1 谷歌協作實驗室
為了簡單起見,並且由於我們將使用的 ML 模型需要 GPU 才能運作,因此下一步我們將使用 Google Colab。
如果您不知道 Google Colab 是什麼,請查看另一篇文章:
開始使用 Google Colab
給沮喪和困惑的人的基本教程
邁向資料科學網
2.2 啟動筆記本
開啟此Colab 筆記本並按照以下步驟操作:
- 運行“Init”章節下調用的第一個單元格
- 在彈出視窗中按“仍然運行”
- 確保第一個指令!nvidia-smi顯示 GPU 已連線(建議使用 p100)
- 如果未連接 GPU,請前往執行時間 > 變更執行時間類型 > 硬體加速器 > GPU
2.3 載入數據
要處理數據,我們需要將它們上傳到 Colab 上的正確資料夾中。
WhatsApp 聊天
選擇所有 .txt 檔案並將所有內容上傳到以下筆記本資料夾:
Telegram JSON
取得檔案telegram_dump.json並將其上傳到以下筆記本資料夾:
2.4 解析數據
現在,運行所有單元格,直到「解析資料」區塊。
這裡我們需要將變數「whatsapp_user_name」替換為您的 WhatsApp 名稱,在 1.1 章節中稱為<YourName> 。
如果某些匯出的資料因本機時間格式而顯示不同的格式,您也可以變更日期格式解析系統。
例如,如果我的名字是“Bob”並且我來自美國,那麼我應該使用的代碼如下:
3. 訓練 GPT-2 模型
現在執行「 訓練 GTP2 模型」筆記本章節 兄弟數據 下的單元,它將使用您提供的資料運行新的訓練。
將顯示進度條,訓練可能需要長達 10 個小時,這主要取決於 Colab 正在運行的 GPU 類型以及提供的訊息數量。
等待該過程結束。
4. 與模特兒聊天
訓練完成後,運行所有剩餘的筆記本單元:最後一個單元將顯示左側帶有 符號的文字區塊。
您可以使用此文字方塊插入要「傳送」到 ML 模型的訊息。因此,請寫下您的訊息,然後按 Enter 鍵。
4.1 如何讀取結果
第一則訊息發送後,系統會提示一些對話的訊息。
現在您將看到最有趣的結果作為訊息清單:
- 以標籤[others]開頭的訊息:您傳送給模型的
訊息 - 以標籤[me]開頭的訊息:由模型產生的
訊息。
回覆訊息產生後,您可以繼續聊天總共 5 則訊息。之後,您可以重新運行單元以開始與模型的新對話。
5. 結論
因此,在本指南中,我們看到了從頭開始訓練 GPT-2 模型是多麼簡單,任務很簡單(但並非微不足道!),這要歸功於在pistoBot引擎蓋下運行的aitextgen包。
請注意,如果您的聊天訊息是英文的,您可以輕鬆獲得比我們使用此標準方法獲得的結果更好的結果,因為您可以使用來自 GPT-2 預訓練模型的遷移學習。
pistoBot 儲存庫可讓您訓練(或微調)不同的模型,包括從 GPT-2 預訓練模型開始的機會:檢查儲存庫資料夾以獲取更多資訊。
我們選擇了標準的、未經訓練的 GPT-2 模型,這樣即使非英語使用者也可以使用這個人工智慧。