ParlAIで英会話を楽しみませんか？

# １、概要
　Facebook AI Researchは、2021年7月中旬に会話の内容を知識として蓄えつつ、同時にネット検索をして知識をアップデートする機能を備えたAIチャットボット「BlenderBot 2.0」をオープンソースで公開したことを発表しました。（[リンクはこちら](https://ai.facebook.com/blog/blender-bot-2-an-open-source-chatbot-that-builds-long-term-memory-and-searches-the-internet/)）　残念ながら、私の環境ではまだ「BlenderBot 2.0」は動作していませんが、前身である「BlenderBot 1.0」および新しい「BlenderBot 3.0」を利用したAIチャットボットを作成してみましたので、紹介します。　作成したものは、Browser上でキーボード入力あるいは音声入力で英会話（音声出力も有り）を楽しむことが出来ます。

# ２、動作環境
　本チャットボットは、「Python Script」と「HTML」、「Javascript」で作られており、動作環境は次の通りです。

- Windows10 64-bit
- Visual Studio Code (VS Code)
- Python 3.9.4 64-bit
- Browser: Microsoft Edge or Google Chrome

# ３、デモ画面
![ChatBot_000.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408707/94c34c95-c7f6-39a0-a987-5d549210c46f.gif)

# ４、動作方法
　VS Code上でPythonを動作させたい方は、「[Visual Studio CodeでPythonプログラミングを始める（Windows編）](https://dianxnao.com/visual-studio-code%E3%81%A7python%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%92%E5%A7%8B%E3%82%81%E3%82%8B%EF%BC%88windows%E7%B7%A8%EF%BC%89/)」や「[Visual Studio CodeにPython環境を](https://ayax.jp/z_blog/997_202011/visual-studio-code_python)」を参考に導入して下さい。　なお、私は上記の環境でしか動作確認をしておりませんので悪しからず！

## ４－１、準備

### (1) ファイルのDownloadとUnzip  
　次のURLでそれぞれの緑ボタン「Code」からZipファイルをダウンロードし、解凍して下さい。　次に解凍したフォルダーをシステム・パスが通った場所に移動させて下さい。（VS CodeでPython Scriptファイルを開き、「ターミナル(T)」から「新しいターミナル」を開くとパスが通っている場所が分かると思います。）

- [https://github.com/facebookresearch/ParlAI](https://github.com/facebookresearch/ParlAI): facebookresearch/ParlAI
- [https://github.com/To-Fujita/ChatBot_with_ParlAI](https://github.com/To-Fujita/ChatBot_with_ParlAI): Chat bot with ParlAI

これら２つのフォルダーは、同じディレクトリにある必要があります。

### (2) Pythonへのライブラリ・インストール  
　次のPythonライブラリをインストールして下さい。 なお、「Pytorch」をインストールしていない方は「Pytorch」と「Microsoft Visual C++ 再頒布可能パッケージ」もインストールしておいて下さい。

- ParlAI: pip install parlai
- Python-Aiml: pip install python-aiml
- Flask: pip install Flask

また、次の「４－２、いくつかのParlAI_Agent/Modelの動作確認」を実行すると、ライブラリ不足の方にはその旨通知されますので不足分のライブラリをインストールして下さい。

## ４－２、いくつかのParlAI_Agent/Modelの動作確認
　ダウンロードした「ChatBot_with_ParlAI-main」フォルダーを開き、次のファイルをVS Codeで開いて下さい。　VS Codeで「実行(R)」⇒「デバックの開始」あるいは「デバックなしで実行」を選択すると、ターミナルに「Enter Your Message: 」と表示されますので、それぞれのAgent/Modelとターミナル上での会話が出来ると思います。

- confirm_Alice.py: The ALICE bot is a strong rule-based bot uing AIML.
- confirm_All_Tasks_mt.py: One of Dodeca models in Zoo, please refer to [Model Zoo](https://www.parl.ai/docs/zoo.html)
- confirm_Blender_90M.py: Blended Skill Talk models in Zoo, please refer to [Model Zoo](https://www.parl.ai/docs/zoo.html)
- confirm_Blender_400M.py: Large size of Blended Skill Talk models in Zoo.
- confirm_Blender3_3B.py: Large size of BlenderBot 3 in Zoo.

　上記Python Scriptが上手く動作しない場合には、パス設定を確認して下さい。　なお、それぞれのScriptファイル内でもパス設定の追加が可能です。　また、「Alice」以外の動作では数百メガから数ギガの容量のファイルをダウンロードしますので、時間を要します。　もちろん、それなりのCPUパワーも必要なようです。なお、「BlenderBot 3」では、数十ギガの容量のファイルをダウンロードする上、レスポンスも非常に遅い状態です。（一般のノートパソコンでは返答に１０分程度かかりました）もちろん使用するAI-modelの容量が半端ないのでしょうがありませんが。

## ４－３、ChatBotでの英会話
　上記と同様に次のファイルをVS Codeで開き、「実行(R)」⇒「デバックの開始」あるいは「デバックなしで実行」を選択して下さい。　その後、しばらくするとターミナルに「* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)」と表示されますので、ブラウザを開き「http://127.0.0.1:5000」 と入力することで、チャットボットとの会話が出来ます。

- main_Alice.py
- main_All_Tasks_mt.py
- main_Blender_90M.py
- main_Blender_400M.py
- main_Blender3_3B.py

　このチャットボットは、マン／マシン・インターフェースをHTML/Javascriptで、会話の内容をPythonで作成する構成にしています。　HTMLでは、「Dialog Element」を使用していますので、まだ「Dialog Element」に対応していない「Safari」や「Firefox」では上手く動作しないと思います。  
　上記の Agents/Models は、それなりに嚙み合った会話をしてくれます。　また、英会話初心者でも聞き取りが苦手な方でも文字表示もしてくれますので、英会話を楽しめると思います。こちらでも、BlenderBot 3のレスポンスは非常に遅くなります。

# ５、おまけ
　おまけとして、GPT-2 Rinnaを使用した日本語のチャットボットを紹介します。基本はこの記事のチャットボットと同じですが、検索、天気予報、ニュース、占い等を小ウインドウに表示することも出来ます。
　また、日本語の音声変換器についても紹介します。キー入力や音声入力されたテキストを指定したキャラクターの音声で出力することが出来ます。
　これらのリンク先は次の通りです。
- [ChatBot_with_GPT-2_Rinna](https://github.com/To-Fujita/ChatBot_with_GPT-2_Rinna)
- [VOICEVOXで音声変換器を作成してみた](https://qiita.com/halboujp/items/6d9abb47fd045d417250)

# ６，履歴
- 2021/8/2: 初校。
- 2022/11/21: BlenderBot 3用ファイル「confirm_Blender3_3B.py」と「main_Blender3_3B.py」を追加した旨記述。

# ７，Reference
- [Facebookresearch/ParlAI]開始https://github.com/facebookresearch/ParlAI): A framework for training and evaluating AI models on a variety of openly available dialogue datasets.
- [ChatBot_with_ParlAI](https://github.com/To-Fujita/ChatBot_with_ParlAI): Chat bot based on the ParlAI by Facebook.
- [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/): コードを Azure に簡単にデプロイできる統合ツールを備えた強力で軽量な無料コード エディター
- [Welcome to Python.org](https://www.python.org/): Python is a programming language that lets you work more quickly and integrate your systems more effectively.
- [無料の音声合成・音声認識を使用して簡易人工無脳と会話する](https://qiita.com/halboujp/items/a3c81e40539c4b8042e9)