メンタルヘルスのためのチャットボット
更新(2024)
- Pythonスクリプトに関連する問題は、古くなったライブラリバージョンと方法のために機能しない
- 依存関係を簡単にインストールするための要件を追加しました
スクリプトを実行する前に、Pythonバージョン<= 3.8がインストールされていることを確認してください(できればPython 3.8; Tensorflowなどのライブラリをインストールするために必要です)。
このプロジェクトは、私の大学の教授の下で、自立したデータセットを持つ研究プロジェクトのために行われました。使用したデータセットは機密です。したがって、サンプルKaggleデータセットを使用しました。私は、研究中にそのようなリソースに苦労していたので、Pythonでゼロから異なるチャットボットを編集するためにスクリプトをオープンソースにすることにしました。
このプロジェクトの背後にある動機
2017年、全国メンタルヘルス調査は、インドの7人に1人がうつ病や不安を含む精神障害に苦しんでいると報告しました。メンタルヘルスに対する意識の高まりにより、開発の主な関心が高まっています。インドのほぼ1億5,000万人が介入を必要としていました。そこでは、低中流階級と中流階級が裕福な人々よりも多くの負担に直面していました。このプロジェクトは、メンタルヘルスをよりアクセスしやすくする試みです。この会話エージェントは、臨床医を補完して、より効果的で実り多いものにすることができます。
チャットボットの分類
チャットボットは、さまざまな属性に基づいて分類できます -

私の研究は、設計アプローチ、すなわちルールベース、検索ベース、および生成ベースに関連していました。
- ルールベースのチャットボット:ルールベースのチャットボットは、シンプルなルールベースのマッピングまたはパターンマッチングを使用して、事前定義された応答のセットから応答を選択します。これらのシステムは新しいテキストを作成しません。代わりに、彼らは所定のリストから答えを選択します。
- 検索ベースのチャットボット:検索ベースのチャットボットは、評価のためにヒューリスティックとして機械学習アンサンブルを使用します。ルールベースのチャットボットと同様に、新しいテキストは生成されません。
- 生成ベースのチャットボット:生成モデルは、事前定義された応答に依存しません。彼らはゼロから新しい返信を思いつきます。機械翻訳技術は通常、生成モデルで使用されますが、ある言語から別の言語に翻訳する代わりに、入力から出力(応答)に「翻訳」します。生成モデルは、ゼロから学習するため、作成に使用されます。
トレーニングされたボットの概要
データセットは、Kaggle -Mental Health FAQからピックアップされました。このデータセットは、メンタルヘルスに関する98のFAQで構成されています。質問、質問、回答の3つの列で構成されています。
検索チャットボットをトレーニングするために、CSVファイルはJSONファイルに手動で変換されたことに注意してください。これは研究に使用される元のデータセットではないため(イントロを読む)、モデルのトレーニングに最初の20行のみを使用しました。
リポジトリは、3種類のチャットボット用の3つのノートブックで構成されています。
ルールベースの場合、 TF-IDFは、データ処理のためにNLTKのトークンザーとともに使用されました。処理されたデータは、予想される結果に対してテストされ、コサインの類似性が評価に使用されました。
検索ベースのために、いくつかの機械学習と深い学習モデルが訓練されました、
- バニラRNN
- LSTM
- bi -lstm
- Gru
- CNN検索モデルはJSONファイルでトレーニングされています。上記のすべてのモデルで、正則化が使用され、トレーニングと検証の精度と損失に基づいて、最終的な比較のために最適なモデルが保持されました。 CNNアーキテクチャが最良の結果をもたらしたことが観察されました。このモデルは、3層の畳み込みニューラルネットワーク(CNN) +埋め込み層 +と完全に接続された層で構成されていました。
生成ベースのチャットボットの場合、 NLPはチャットボットが人間の会話のパターンとスタイルを学習して模倣できるため、NLPが使用されました。それはあなたがロボットではなく、人間と話しているという感覚をあなたに与えます。適切な事前定義された可能な応答のためにメッセージを分類することを目的として、ユーザーの入力を意図にマッピングします。
- エンコーダーデコーダーモデルがCSVファイルでトレーニングされました。 Endoder-DecoderはSEQ2SEQモデルであり、エンコーダデコーダーモデルとも呼ばれます。トレーニングコーパスからのテキスト生成に長期の長期メモリ-LSTMを使用します。
- Seq2SeqまたはEncoder-Decoderモデルは簡単な言葉で何をしますか?ユーザーの入力に与えられた単語を予測し、次の単語のそれぞれが、その単語が発生する可能性の確率を使用して予測されます。
JSON対CSV
このプロジェクト中、私が持っていた最大の混乱は、Chatbotが検索ベースのモデルにCSVの代わりにJSONファイルを使用した理由です。 2つのファイルタイプを比較するいくつかのポイントをリストアップしました -
- JSONはデータを階層的な方法で保存します。これは、チャットボットにタグとコンテキストが必要になることを考えると、検索ベースのチャットボットに適しています。
- 検索ベースのチャットボットは、事前定義された回答のプールに基づいて最良の応答を提供するように訓練されています。これらの事前定義された応答の数は有限です。入力から出力マッピングのためにタグを提供する必要があります。簡単に言えば、ユーザー(コンテキスト)によって指定された入力は、提供されたタグによって識別されます。予測される最高のタグに基づいて、ユーザーは事前定義された応答の1つに表示されます。したがって、この種のデータをJSONファイルに保存することは、そのコンパクトさと階層構造のために簡単です。
- CSVファイルは、生成チャットボットのデータを保存するために使用されています。生成チャットボットは、予測を行うためにタグを必要としません。これらのデータは、入力テキストと出力テキストの2つの列だけが必要なため、CSVファイルに保存しやすいです。この場合、JSONファイルと比較して、データを追加または削除する方が簡単です。
将来の目標
生成ベースのチャットボットの可能性をさらに調査したいと思います。現在のエンコーダーデコーダーモデルは、LSTMのコンパクトな性質のため、デコーダーレイヤーのすべての依存関係をキャプチャできません。 LSTMレイヤーの後に注意レイヤーを追加して、各出力を動的にデコードできます。