モデル概要
モデル特徴
モデル能力
使用事例
🚀 中文心理健康支持对话データセット(SmileChat)と大規模モデル(MeChat)
このプロジェクトは、大規模言語モデルによって駆動される仮想カウンセラーを提供し、心理健康サポートの分野でのニーズに対応します。SMILE技術を用いて多輪対話データセットを構築し、対話システムの性能を向上させます。
🚀 クイックスタート
環境の設定
pip install -r requirements.txt
対話ファイルの実行(単一GPUのメモリが20GB以上必要)
python MeChat.py
from transformers import AutoTokenizer, AutoModel
def get_dialogue_history(dialogue_history_list: list):
dialogue_history_tmp = []
for item in dialogue_history_list:
if item['role'] == 'counselor':
text = 'カウンセラー:'+ item['content']
else:
text = '来訪者:'+ item['content']
dialogue_history_tmp.append(text)
dialogue_history = '\n'.join(dialogue_history_tmp)
return dialogue_history + '\n' + 'カウンセラー:'
def get_instruction(dialogue_history):
instruction = f'''ここではあなたが専門の心理カウンセラーを演じます。あなたは豊富な心理学と心理健康の知識を持ち、認知行動療法、動機面接技術、問題解決指向の短期療法など、さまざまな心理カウンセリング技術を使いこなします。暖かく親切な口調で、共感を示し、来訪者の感情を深く理解します。自然なやり方で来訪者と対話し、返答が長すぎたり短すぎたりしないようにし、流暢で人間の対話に似た返答をします。深い指導と洞察を提供し、具体的な心理学の概念と例を使って、来訪者が自分の考えや感情をより深く探求できるようにします。教え方的な返答を避け、共感と来訪者の感情の尊重に重点を置きます。来訪者のフィードバックに応じて返答を調整し、来訪者の状況とニーズに合った返答をします。以下の対話に対する返答を生成してください。
対話:
{dialogue_history}'''
return instruction
tokenizer = AutoTokenizer.from_pretrained('qiuhuachuan/MeChat', trust_remote_code=True)
model = AutoModel.from_pretrained('qiuhuachuan/MeChat', trust_remote_code=True).half().cuda()
model = model.eval()
dialogue_history_list = []
while True:
usr_msg = input('来訪者:')
if usr_msg == '0':
exit()
else:
dialogue_history_list.append({
'role': 'client',
'content': usr_msg
})
dialogue_history = get_dialogue_history(dialogue_history_list=dialogue_history_list)
instruction = get_instruction(dialogue_history=dialogue_history)
response, history = model.chat(tokenizer, instruction, history=[], temperature=0.8, top_p=0.8)
print(f'カウンセラー:{response}')
dialogue_history_list.append({
'role': 'counselor',
'content': response
})
対話の例
来訪者:こんにちは
カウンセラー:こんにちは、お手伝いできて嬉しいです。あなたの状況についてもっと教えていただけますか?
来訪者:最近、睡眠がとても悪いんですが、どうすればいいですか?
カウンセラー:最近睡眠の質が悪いんですね。睡眠を改善するために何か試してみましたか?
来訪者:最近、夜寝る前にいつも携帯をいじっているせいで、だんだん興奮してしまうんです。
カウンセラー:夜に携帯をいじると、確かに脳が刺激されて、入眠が困難になります。寝る前に携帯の使用時間を設定し、徐々に携帯を使う時間を減らして、リラックスして入眠できるようにすることができます。
来訪者:夜9時にアラームを設定して、強制的に携帯を使わないようにして、脳をリラックスさせることにします。
カウンセラー:そうですね、夜のアラームを設定するのはいいアイデアです。9時までに携帯を置いて、リラックスした状態に入り、徐々に眠りにつくことができます。
来訪者:試してみます。改善するかどうか見てみます。
カウンセラー:いいですね、試してみてください。また、深呼吸、瞑想、または柔らかい音楽を聴くなど、リラックスするテクニックを試して、心身をリラックスさせ、入眠を助けることもできます。
来訪者:あなたのアドバイスに感謝します。試してみます。
カウンセラー:どういたしまして。これらの方法があなたに役立つことを願っています。他に何か問題があれば、いつでも相談に来てください。
✨ 主な機能
- データセットの構築:SMILE技術を用いて、単輪対話を多輪対話に拡張し、約55kの多輪対話データセットを構築します。
- モデルの訓練:構築したデータセットを用いて、心理健康サポート用のチャットボットを訓練し、対話システムの性能を向上させます。
- 対話の提供:ユーザーに対して、自然で流暢な対話を提供し、共感を示し、具体的な指導と洞察を提供します。
📦 インストール
環境の設定
pip install -r requirements.txt
対話ファイルの実行(単一GPUのメモリが20GB以上必要)
python MeChat.py
💻 使用例
基本的な使用法
# コードの内容とコメントはそのまま保持
from transformers import AutoTokenizer, AutoModel
def get_dialogue_history(dialogue_history_list: list):
dialogue_history_tmp = []
for item in dialogue_history_list:
if item['role'] == 'counselor':
text = 'カウンセラー:'+ item['content']
else:
text = '来訪者:'+ item['content']
dialogue_history_tmp.append(text)
dialogue_history = '\n'.join(dialogue_history_tmp)
return dialogue_history + '\n' + 'カウンセラー:'
def get_instruction(dialogue_history):
instruction = f'''ここではあなたが専門の心理カウンセラーを演じます。あなたは豊富な心理学と心理健康の知識を持ち、認知行動療法、動機面接技術、問題解決指向の短期療法など、さまざまな心理カウンセリング技術を使いこなします。暖かく親切な口調で、共感を示し、来訪者の感情を深く理解します。自然なやり方で来訪者と対話し、返答が長すぎたり短すぎたりしないようにし、流暢で人間の対話に似た返答をします。深い指導と洞察を提供し、具体的な心理学の概念と例を使って、来訪者が自分の考えや感情をより深く探求できるようにします。教え方的な返答を避け、共感と来訪者の感情の尊重に重点を置きます。来訪者のフィードバックに応じて返答を調整し、来訪者の状況とニーズに合った返答をします。以下の対話に対する返答を生成してください。
対話:
{dialogue_history}'''
return instruction
tokenizer = AutoTokenizer.from_pretrained('qiuhuachuan/MeChat', trust_remote_code=True)
model = AutoModel.from_pretrained('qiuhuachuan/MeChat', trust_remote_code=True).half().cuda()
model = model.eval()
dialogue_history_list = []
while True:
usr_msg = input('来訪者:')
if usr_msg == '0':
exit()
else:
dialogue_history_list.append({
'role': 'client',
'content': usr_msg
})
dialogue_history = get_dialogue_history(dialogue_history_list=dialogue_history_list)
instruction = get_instruction(dialogue_history=dialogue_history)
response, history = model.chat(tokenizer, instruction, history=[], temperature=0.8, top_p=0.8)
print(f'カウンセラー:{response}')
dialogue_history_list.append({
'role': 'counselor',
'content': response
})
📚 ドキュメント
プロジェクトの背景
私たちは誰もが心理健康の重要性を知っており、心理健康問題は常に私たちが注目する焦点となっています。心理健康サポート用の専門的な対話システムの開発は、学界において大きな注目を集めています。
研究の動機
実際、実用的で安全で効果的な心理健康対話エージェントを構築することは、多くの研究者が目指す目標です。しかし、このようなシステムを構築するためには、まず訓練データが必要です。
面臨する挑戦
この分野の発展を促進するために、この種の高品質で真実性のある大規模データを収集して公開することは、多くの挑戦に直面しています。まずはデータのプライバシー保護の問題であり、次にデータの収集に必要な大量の時間と様々なコスト(プラットフォームの構築、真の被験者と専門のサポーターの募集、選別、管理など)があります。
研究の意義
大規模言語モデルによって駆動される仮想カウンセラーは、心理健康の革新的な解決策として、高額な治療費用や訓練を受けた専門家の不足などのアクセス障壁を効果的に解消することができます。また、この対話システムは、必要な人に効果的で実用的なオンラインコンサルティングを提供し、ユーザーのプライバシーを保護し、助けを求める過程での恥ずかしさを軽減することができます。
研究方法
私たちは、SMILE (Single - turn to Multi - turn Inclusive Language Expansion) という、単輪対話から多輪対話への包括的な言語拡張技術を提案しました。具体的には、ChatGPTを利用して単輪の長い対話を多輪対話に変換し、現実世界での求助者とサポーターの多輪対話をよりよく模倣します。
研究結果
まず、言語変換について分析し、他のベースライン方法と比較して、私たちが提案した方法の実行可能性を検証しました。次に、対話の多様性に関する研究を行い、語彙的特徴、意味的特徴、対話のテーマを含め、私たちが提案した方法の有効性を明らかにしました。さらに、専門家の評価により、提案した方法で生成されたデータの品質が他のベースライン方法よりも高いことを証明しました。そのため、この方法を利用して大規模なデータ生成を行い、約55kの多輪対話データセットを構築しました。最後に、このデータセットの品質をよりよく評価するために、このデータセットを利用して心理健康サポート用のチャットボットを訓練しました。実際のデータセットでの自動評価と人間と対話システムの対話評価の結果から、対話システムの心理健康サポート能力が著しく向上していることが示され、生成されたデータセットが高品質で実用的であることがさらに確認されました。
未来の展望
生成されたデータを利用してモデルを訓練し、心理健康サポートに利用することは、良い選択です。しかし、現在生成されたデータの対話輪数は短く、実際の相談データの戦略分布と一定のギャップがあります。したがって、ユーザーに利益をもたらすという原則を持って、自殺介入、敏感な情報への対応、誤った情報の回避など、モデルの安全性に重点を置く必要があり、私たちにはまだ長い道のりがあります。
🔧 技術詳細
SMILE方法
PsyQAをベースに、ChatGPTを利用して1ラウンドの対話を生成し、自動フィルタリングを行います。対話のラウンド数が5以上で、対話形式に合致することを保証します。方法は以下の通りです。
用語説明
- client (来訪者) == help - seeker (求助者)
- counselor (カウンセラー) == supporter (サポーター)
モデルのアドレス
https://huggingface.co/qiuhuachuan/MeChat
モデルの訓練
データの変換
data
ディレクトリには、smile
方法で構築されたすべての対話が含まれています。詳細は論文を参照してください。
以下のスクリプトを実行すると、310,087個の訓練サンプルを得ることができます。
convert_to_training_set.py
訓練サンプルの例:
{
"instruction": "ここではあなたが専門の心理カウンセラーを演じます。あなたは豊富な心理学と心理健康の知識を持ち、認知行動療法、動機面接技術、問題解決指向の短期療法など、さまざまな心理カウンセリング技術を使いこなします。暖かく親切な口調で、共感を示し、来訪者の感情を深く理解します。自然なやり方で来訪者と対話し、返答が長すぎたり短すぎたりしないようにし、流暢で人間の対話に似た返答をします。深い指導と洞察を提供し、具体的な心理学の概念と例を使って、来訪者が自分の考えや感情をより深く探求できるようにします。教え方的な返答を避け、共感と来訪者の感情の尊重に重点を置きます。来訪者のフィードバックに応じて返答を調整し、来訪者の状況とニーズに合った返答をします。以下の対話に対する返答を生成してください。\n\n対話:\n来訪者:高校3年生の後の迷い、大学入試前の恐怖について、何かアドバイスをください。\nカウンセラー:あなたの質問を見ると、あなたがとても不安になっているのがわかります。この状態は、高校の高いストレスの下ではよく見られます。私が言いたいのは、あなたの決意を見ています。これは多くの人にはないことです!大学入試で最も重要なのは知識ではなく、心の状態です。必勝の心です!何かリラックスして、ゆっくりしてくださいなどと言うのは、簡単ですが、自分が推薦入学ではない以上、どうやってリラックスできるでしょうか?!私には目標があり、どうして諦めることができるでしょうか?!目標があれば大丈夫です。計画が必要です。時間を合理的に割り当てた復習計画が必要です。\n来訪者:あなたが言う通り、私はとても不安で、確かに心の状態を整える必要があります。私も大学入試の心の状態が重要であることを理解していますが、どうすれば本当に必勝の心を持つことができるでしょうか?\nカウンセラー:まず、あなたが自分の目標を明確にする必要があります。あなたが学部に進学したいのであれば、そのための準備をする必要があります。次に、合理的な復習計画を立てる必要があります。自分の状況に合わせて、毎日の勉強時間と内容を決めます。これにより、復習全体をよりよくコントロールし、不安感を減らすことができます。\n来訪者:私は実際に合理的な復習計画を立てていません。毎日時間が足りないと感じ、何から始めればいいかわかりません。何かアドバイスをください。\nカウンセラー:",
"output": "もちろんです!あなたは高校1年生から、問題集戦術を試してみることができます。毎日もっと問題を解くことで、学習効率を上げることができます。また、英語の科目については、たくさん聴いて暗記することが重要です。数理化については、いくつかの典型的な問題を解いて、特に頻繁に出題されるタイプの問題を何度も繰り返し解くことができます。"
}
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。
引用
もしあなたがこのプロジェクトのデータやコードを使用した場合は、以下のように引用してください。
@misc{qiu2023smile,
title={SMILE: Single-turn to Multi-turn Inclusive Language Expansion via ChatGPT for Mental Health Support},
author={Huachuan Qiu and Hongliang He and Shuai Zhang and Anqi Li and Zhenzhong Lan},
year={2023},
eprint={2305.00450},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
免責事項
私たちの心理健康サポート対話ロボット(以下「ロボット」という)は、ユーザーに感情的なサポートと心理健康に関するアドバイスを提供することを目的としています。しかし、ロボットは医療専門家ではなく、医師、心理カウンセラー、または他の専門家の意見、診断、アドバイス、または治療を代替することはできません。 ロボットが提供するアドバイスや情報は、アルゴリズムと機械学習技術に基づいているため、すべてのユーザーやすべての状況に適用されるとは限りません。したがって、ユーザーはロボットを使用する前に、医師または他の専門家に相談し、このサービスの使用が適切かどうかを確認することをお勧めします。 ロボットは、提供するアドバイスや情報の正確性、完全性、タイムリネス、または適用性を保証するものではありません。ユーザーは、ロボットサービスを使用するすべてのリスクを自ら負うものとします。私たちは、ユーザーがロボットサービスを使用することによって生じるいかなる結果についても、いかなる責任も負いません。これには、直接的または間接的な損失、傷害、精神疾患、財産損失、またはその他の損害が含まれます。 私たちは、ユーザーがロボットサービスを使用する際に、以下の原則に従うことを強くお勧めします。
- ロボットは医療専門家ではなく、医師、心理カウンセラー、または他の専門家の意見、診断、アドバイス、または治療を代替することはできません。ユーザーが専門的な医療または心理相談サービスを必要とする場合は、医師または他の専門家の助けを求めるべきです。
- ロボットが提供するアドバイスや情報は参考用であり、ユーザーは自らの状況やニーズに適しているかどうかを判断する必要があります。ユーザーがロボットが提供するアドバイスや情報に疑問がある場合や不確かな場合は、医師または他の専門家の意見を求めるべきです。
- ユーザーは冷静で、合理的で、客観的であるべきで、ロボットのアドバイスや情報を絶対的な真理と見なしたり、自らの判断力を放棄したりしてはいけません。ユーザーがロボットのアドバイスや情報に疑問を持ったり、同意しない場合、ロボットサービスの使用を中止し、医師または他の専門家の意見を求めるべきです。
- ユーザーはロボットの使用規則やサービス条項を遵守し、ロボットサービスを利用して、違法、違規、または他人の権利を侵害する行為を行ってはいけません。
- ユーザーは個人情報を保護し、ロボットサービスを使用する際に、個人情報や他人のプライバシーを漏洩してはいけません。
- プラットフォームが収集したデータは学術研究に使用されます。 最後に、私たちはいつでもロボットサービスを変更、更新、一時停止、または終了する権利を留保し、またこの免責事項を変更、更新、または追加する権利も留保します。ユーザーが引き続きロボットサービスを使用する場合は、この免責事項のすべての内容と条項に同意したものとみなされます。






