Jullieサービス概要

 

Jullieはうつ病・不安障害の軽度・または予備軍のユーザーに

心理カウンセリングを行う目的で作られたチャットボットです

とはいえ治療を目的としたものではなく、あくまでセルフヘルプのためのツールという立ち位置で開発されました。

主なユーザーは10代、20代を想定しています。

 

ユーザーの抱える問題としては、うつ病や不安障害のときに抱える様々なストレスや

問題について話し相手がいないということです。

 

話し相手がいない理由としては3つあります。

1,話の内容がシリアスなため聞く側の気持ちがついていかない

2,話したい時間帯が深夜帯などになりがち

3,相談しても欲してもいないアドバイスや偏見を押し付けられる

 

これらの問題を解決する上でチャットボットには以下のメリットがあります。

1,いくらでも話を聞く

2,いつでもどこでも話を聞く

3,傾聴を主としたカウンセリングで勝手な判断をしない

 

このチャットボットにおいて「傾聴」という言葉が重要になっています。

「傾聴」より専門的な言葉を使えば非指示的療法という

カウンセリング手法をJullieで実現することを目指していました。

非指示的療法は、精神科医のカール・ロジャースによって提唱された

来談者中心療法(Client Centered Therapy)とほぼ同義です。そのため、ロジェリアンと言われることもあります。

 

非指示的療法の特徴は、文字通り指示、つまりアドバイスをしないというところにあります。

代わりに患者の話を共感を持って受け止める、

その結果患者は自らの問題に自主的に立ち向かう準備が出来、

自らの抱える問題を受け入れることができます。

 

非指示的療法よりも今多く使われているのは指示的療法です。

こちらはCBT(Cognitive Behavioral Therapy)とも言われます。

これは日本・アメリカなど幅広くうつ病・不安障害の治療に使われています。

このメソッドの特徴は、文字通りアドバイスをしていくということです。

 

患者が抱える典型的なネガティブ思考に関して患者に教育をしていきます。

その過程で患者に自分のどういう思考がそれらの典型的思考にあたるのかを考えさせます。

現在心理カウンセリングのチャットボットは市場にたくさんありますが、

その中でも有名なトップ2のチャットボットはどちらもCBTを主体としています。

実はCBTはチャットボットと相性が良いという面もあります。

CBTは基本的には構造化されており、カウンセリングの流れも固定的です。

そのためカウンセラーの腕前に左右されにくいという利点があります。

それもあって現在の医療現場ではかなりメジャーになっています。

 

逆に非指示的療法では会話は基本的にクライアントに任されており、自由度が高いです。

その分カウンセラーの力量によっては患者に合わないこともあります。

 

私達はこちらの手法を分析し、チャットボットでできるレベルまで構造化することにしました。

主な構造として、チャットボットの返信は以下の4パターンに分類されます。

1,あいづち

2,相手の言ったことを繰り返す

3,感情の描写(それは悲しいですね、など)

4,共感表現(なんでも話してくださいね、など)

 

Jullieではユーザーが送ったメッセージを予め用意した辞書や強調後などに基づき点数化し、

その点数をもとに上記の返信の組み合わせを決定しています。

 

ユーザーが言い渋っている、というようなところも検出するようにし、

そういったときは質問を投げかけたりもします。

 

カウンセリングはセッション制となっており、一回のセッションは30分。

セッション後にはセッション前後の気分の振り返りなどを行います。

 

サービス概要が分かったところで、少しシステム的なところも解説していきます。

 

https://github.com/AvirityInformation/chatbot_Jullie

 

コードはこちらのgithubレポジトリにて公開されています。

 

Jullieはherokuのdyno上で動いています。

3台動かしており、それぞれ

web: メッセージの受信、DBへの保存

clock: DB内の未処理メッセージをキューに詰める。また、DB内で未送信の返信をユーザーへ送信する

worker: キュー内のタスクを監視し、メッセージの分析、返信の生成を行う

といった役割があります。

 

最も重要であるメッセージの分析については以下のインターフェイスで実装されています。

まずUser, Message, TherapySessionクラスのインスタンスを作成し、Botクラスのインスタンスに渡します。

それを受けて、Botインスタンスからreplyメソッドを呼び出すと、メッセージの解析から返信生成までを行います。

その後message.mark_done()でメッセージを処理済みにします。

 

メッセージの解析は基本的に以下のステップで行われています。

1,メッセージの正規化(小文字化、品詞判定など)

2,メッセージのタイプ判定

3,タイプに応じた返信タイプ判定

4,返信タイプ毎に候補を選択

5,返信をDBへ保存

 

以上のように簡単なプロセスで、実装されています。

今後はメッセージのトピック解析の精度を高めたりできると良いかなと考えています。

‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥

 

この度、「Jullie」はオープンソース化いたしました。

一人でも多くの方に使ってもらい、そして広めていただきたいと思っております。

また、「Jullie」が広まることによって、少しでもうつ病・不安障害の方が少なくなる世の中を願っています。