聊天機器人的心理健康
更新(2024)
- 固定問題與Python腳本有關,由於過時的庫版本和方法無法使用
- 添加的要求.txt以容易安裝依賴項
在運行腳本之前,請確保安裝了Python版本<= 3.8(最好是Python 3.8;安裝某些庫(例如TensorFlow)所需的必需)。
該項目是為我的大學教授帶有自綁數據集的研究項目完成的。我們使用的數據集是機密的;因此,我使用了示例Kaggle數據集。我決定將腳本開源,以製作Python中從頭開始的不同聊天機器人的彙編,因為我在研究過程中為這種資源而苦苦掙扎。
這個項目背後的動機
2017年,《國家心理健康調查》報告說,印度七分之一的人患有精神障礙,包括抑鬱症和焦慮。人們對心理健康的認識越來越大,這使其成為發展的主要關注點。印度近1.5億人需要干預措施,那裡的低矮和中產階級面臨的負擔比富裕的人更負擔。該項目試圖使心理健康更容易獲得。這種對話劑可以與臨床醫生相輔相成,使其更有效和富有成果。
聊天機器人的分類
聊天機器人可以根據不同屬性進行分類 -

我的研究與設計方法有關,即基於規則,基於檢索和基於生成的方法。
- 基於規則的聊天機器人:基於規則的聊天機器人使用簡單的基於規則的映射或模式匹配來從一組預定義的響應中選擇響應。這些系統不會產生任何新文本。相反,他們從預定的列表中選擇答案。
- 基於檢索的聊天機器人:基於檢索的聊天機器人使用機器學習集合作為啟發式方法進行評估。與基於規則的聊天機器人類似,它們不會生成新文本。
- 基於生成的聊天機器人:生成模型不依賴於預定義的響應。他們提出了從頭開始的新答复。機器翻譯技術通常用於生成模型中,但是我們不是從一種語言轉換為另一種語言,而是從輸入轉換為輸出(響應)。生成模型用於創建,因為它們從頭開始學習。
機器人訓練的概述
該數據集是從Kaggle拾取的 - 心理健康常見問題解答。該數據集由98個關於心理健康的常見問題解答。它由3列組成 - 問題,問題和答案。
請注意,要訓練檢索聊天機器人,將CSV文件手動轉換為JSON文件。由於這不是用於研究的原始數據集(閱讀介紹),因此我僅使用了前20行來訓練模型。
存儲庫由三種類型的聊天機器人組成的三個筆記本。
對於基於規則的,將TF-IDF與NLTK的令牌使用,以進行數據進行處理。針對預期結果測試了處理後的數據,並使用餘弦相似性進行評估。
對於基於檢索的,幾種機器學習和深度學習模型進行了培訓,
- 香草RNN
- LSTM
- BI -LSTM
- gru
- CNN檢索模型對JSON文件進行了培訓。對於所有上述模型,都使用正規化,並基於培訓和驗證精度和損失,保留了最佳模型以進行最終比較。據觀察, CNN體系結構給出了最好的結果。該模型由3層 - 卷積神經網絡(CNN) +嵌入層 +和完全連接的層組成。
對於基於生成的聊天機器人,使用NLP,因為NLP使聊天機器人可以學習和模仿人類對話的模式和样式。它使您感到自己正在與人交談,而不是機器人。它將用戶輸入映射到意圖,目的是將消息分類為適當的預定義響應。
- 在CSV文件上訓練了編碼器模型。 endoder-decoder是一個SEQ2SEQ模型,也稱為編碼器模型使用長期內存-LSTM用於訓練語料庫的文本生成。
- SEQ2SEQ或編碼器模型用簡單的單詞做什麼?它預測了用戶輸入中給出的單詞,然後使用該單詞可能發生的可能性進行預測的每個單詞。
JSON vs. CSV
在這個項目中,我遇到的最大混亂是為什麼聊天機器人使用JSON文件而不是CSV進行基於檢索的模型。我已經列出了一些點,以使兩種文件類型之間的比較 -
- JSON以層次結構的方式存儲數據,這對於基於檢索的聊天機器人來說更好,鑑於聊天機器人需要標籤和上下文。
- 基於檢索的聊天機器人經過培訓,可以根據預定義的答案提供最佳答案。這些預定義的響應的數量是有限的。需要為輸入到輸出映射提供標籤。簡而言之,用戶給出的輸入(上下文)由提供的標籤標識。根據預測的最佳標籤,向用戶顯示了預定義的響應之一。因此,由於其緊湊性和分層結構,將這種數據存儲在JSON文件中更容易。
- CSV文件已用於存儲生成聊天機器人的數據。生成的聊天機器人不需要標籤來做出預測。這些數據更容易存儲在CSV文件中,因為我們只需要兩列 - 輸入文本和輸出文本。與JSON文件相比,在這種情況下,添加或刪除數據將更容易。
未來目標
我想進一步研究基於生成的聊天機器人的可能性。由於LSTM的緊湊性,當前的編碼器模型無法捕獲解碼器層中的所有依賴項。可以在LSTM層之後添加註意圖層以動態解碼每個輸出。