如何創造一個像你一樣聊天的人工智慧

本指南的目標是建立一個能夠像您 如何創造一個像你 一樣聊天的系統,使用您自己的 WhatsApp 和 Telegram 聊天作為 ML 資料集。

我們要做的事情可以概括為以下步驟:

  1. 取得您的 WhatsApp 和 Telegram 數據
  2. 解析它以建立 ML 就緒資料集
  3. 訓練GPT-2模型
  4. 與模特兒聊天

那麼,讓我們開始我們的冒險吧!您想看到一些結果嗎?查看官方網頁,請注意,它們是意大利語,因為它基於我的個人聊天記錄。

GIPHY原始碼

⚠ 警告:

最好不要對個人資訊(例如個人聊天訊息)運行隨機腳本。

我保證沒有問題,但您始終可以檢查正在 紐西蘭電報數據 使用的本機程式碼:messaging-chat-parser 和pistoBot,所有原始程式碼都是github 上的開源程式碼

1. 獲取數據

首先,我們需要從聊天應用程式收集資料。我們現在將學習如何從兩個最常用的即時通訊應用程式匯出資料:WhatsAppTelegram。

1.1 WhatsApp 導出

我們必須為要包含在最終資料集中的每個聊天匯出一個.txt檔案。因此,正如WhatsApp 官方網站所述:

  1. 打開您的 WhatsApp 行動應用程式
  2. 選擇一個單獨的聊天 一個單獨的聊天(例如與一位朋友聊天)> 點擊“更多選項” (三個垂直點)
  3. 選擇更多語音 >匯出聊天語音
  4. 在彈出視窗中選擇無媒體
  5. 選擇電子郵件服務(例如 Gmail 應用程式)並將您的電子郵件地址新增為收件人
  6. 等待接收帶有聊天記錄作為txt檔案附件的郵件
  7. 下載txt附件並儲存在電腦上
  8. 對您想要包含的每個單獨聊天重複這些步驟

請注意,只允許1對1的聊天(即個人),我們建議導出訊息數量最多的聊天,以獲得更大的資料集並獲得更好的最終結果。

現在您應該有更多文件,每個文件的結構如下所示:

記下您在匯出的聊天記錄中<YourName>佔位符下找到的文字。此參數是您的 WhatsApp 應用程式名稱,我們稍後將使用此值。

1.2 電報

這裡的過程將比 WhatsApp 更快,因為 Telegram 將匯出單一.json檔案中的所有內容,而沒有一次匯出一個聊天記錄的限制。

因此,如Telegram 官方網站所述:

  1. 打開Telegram 桌面應用程式
  2. 打開螢幕左上方的選單(三橫線)
  3. 前往設定語音 > 點選進階 >選擇匯出電報數據
  4. 僅應選擇以下欄位:
    帳戶資訊、聯絡人清單、個人聊天、機器可讀 JSON
  5. 確保媒體匯出設定下未選擇任何內容,並將大小限制設為最大
  6. 啟動導出並等待
  7. 將輸出檔重新命名為“ telegram_dump.json ”

現在您應該有一個名為telegram_dump.json的文件,其結構如下:

2. 解析數據

為了訓練 GPT-2 神經網絡,首先我們需要對資 零售電子郵件行銷策略:2024 年成功的關鍵 料進行預處理,以獲得具有機器學習相容結構的單一.txt 檔案。

2.1 谷歌協作實驗室

為了簡單起見,並且由於我們將使用的 ML 模型需要 GPU 才能運作,因此下一步我們將使用 Google Colab。

如果您不知道 Google Colab 是什麼,請查看另一篇文章:

開始使用 Google Colab

給沮喪和困惑的人的基本教程

邁向資料科學網

2.2 啟動筆記本

開啟此Colab 筆記本並按照以下步驟操作:

  1. 運行“Init”章節下調用的第一個單元格
  2. 在彈出視窗中按“仍然運行”
  3. 確保第一個指令!nvidia-smi顯示 GPU 已連線(建議使用 p100)
  4. 如果未連接 GPU,請前往執行時間 > 變更執行時間類型 > 硬體加速器 > GPU
正確連接 Tesla T4 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 類型以及提供的訊息數量。

等待該過程結束。

常見的「我在等待我的神經網路列車」姿勢 | GIPHY原始碼

4. 與模特兒聊天

訓練完成後,運行所有剩餘的筆記本單元:最後一個單元將顯示左側帶有 符號的文字區塊。

您可以使用此文字方塊插入要「傳送」到 ML 模型的訊息。因此,請寫下您的訊息,然後按 Enter 鍵。

在文字方塊中寫入訊息的範例。 |作者提供的圖片

4.1 如何讀取結果

第一則訊息發送後,系統會提示一些對話的訊息。

現在您將看到最有趣的結果作為訊息清單:

  • 以標籤[others]開頭的訊息:傳送給模型的
    訊息
  • 以標籤[me]開頭的訊息:由模型產生的
    訊息。

回覆訊息產生後,您可以繼續聊天總共 5 則訊息。之後,您可以重新運行單元以開始與模型的新對話。

我編寫的一些訊息的範例(帶有標籤[others])並由模型產生(帶有標籤[me])。聊天是意大利語,因為模型是根據我自己的聊天進行訓練的。 |作者提供的圖片

5. 結論

因此,在本指南中,我們看到了從頭開始訓練 GPT-2 模型是多麼簡單,任務很簡單(但並非微不足道!),這要歸功於在pistoBot引擎蓋下運行的aitextgen包。

請注意,如果您的聊天訊息是英文的,您可以輕鬆獲得比我們使用此標準方法獲得的結果更好的結果,因為您可以使用來自 GPT-2 預訓練模型的遷移學習。

pistoBot 儲存庫可讓您訓練(或微調)不同的模型,包括從 GPT-2 預訓練模型開始的機會:檢查儲存庫資料夾以獲取更多資訊。

我們選擇了標準的、未經訓練的 GPT-2 模型,這樣即使非英語使用者也可以使用這個人工智慧。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端