ChatterBotライブラリを使用してチャットボットを作成する

ChatterBotライブラリを使用してチャットボットを作成する

[[437576]]

さまざまな機械学習アルゴリズムを実装して応答性の高い会話を生成する ChatterBot ライブラリを使用して、Python でチャットボットを作成する方法を学習します。

1. チャットボットとは何ですか?

チャットボットは、チャットボット、ロボット、人工エージェントなどとも呼ばれ、基本的には、テキストまたは音声を通じてユーザーと会話することを目的とした人工知能を搭載したソフトウェア プログラムです。私たちが日常生活で接する有名な例としては、Siri、Alexaなどが挙げられます。

これらのチャットボットは、ユーザーのために特定のタスクを実行する傾向があります。チャットボットは、取引の実行、ホテルの予約、フォームの送信などのタスクを実行することがよくあります。人工知能の分野で技術が進歩するにつれ、チャットボットの可能性は無限大です

もちろん、現在のテクノロジーでは、チャットボットにはまだ多くの制限があります。

  • ドメイン知識 - 真のAIはまだ手の届かないところにあるため、チャットボットが人間と会話しているときに会話を完全に理解することは困難です。
  • 個性 — 正しく応答できなかったり、理解が不十分だったりすることは、どのチャットボットよりもよくある間違いであり、チャットボットに個性を加えることは、まだ遠い、困難な作業です。

チャットボットは2つのカテゴリーに分けられます

  • 特定のルールベース - このアプローチでは、ロボットはルールに従ってトレーニングされます。これに基づいて、ボットは簡単なクエリには答えることができますが、複雑な会話には答えられない場合があります。
  • 自己学習型 – これらのロボットは機械学習のアプローチを採用しており、より効率的で、さらに2つのカテゴリに分類されます。
    • 検索ベースのモデル – このアプローチでは、ボットはユーザーの入力に基づいて応答リストから最適な応答を取得します。
    • 生成モデル — これらのモデルは通常、回答セットから検索するのではなく、回答を生成するため、インテリジェントロボットにもなります。

さて、ここまでで、私たちが紹介した高度なチャットボットの知識はすべて終わりました。では、chatterbot を使用して、シンプルなオンライン チャットボットを構築してみましょう。

2. ChatterBotライブラリの紹介

ChatterBot は、複数の機械学習アルゴリズムを使用してさまざまな応答を生成し、ユーザー入力に対する応答を生成する Python ライブラリです。 ChatterBotライブラリを使用すると、ユーザーはより正確な応答を持つチャットボットを簡単に作成できます。

ChatterBot の設計により、ボットを複数の言語でトレーニングすることができ、最も重要なのは、機械学習アルゴリズムにより、ボットがユーザーの入力を使用して簡単に自己改善できることです。

ChatterBot を使用すると、会話に参加するソフトウェアを簡単に作成できます。チャットボットは、ユーザーから入力を受け取るたびに、その入力と応答を保存します。これにより、初期知識を持たないチャットボットは、収集された応答を使用して進化することができます。

応答が増えるにつれて、チャットボットの精度が向上します。プログラムは、入力に最も近い文から最も近い応答を選択し、その応答に対する既知の文の選択から応答を選択します。

ChatterBotのインストールも非常に簡単です

  1. pip でチャッターボットをインストール

さあ、Chatterbotの世界に足を踏み入れましょう

3. チャットボットを構築する

ロボットトレーニング

Chatterbot には、チャットボットのトレーニングに使用できるデータ ユーティリティ モジュールが付属しています。現在、このモジュールには10以上の言語のトレーニングデータがあり、直接使用することができます。

https://github.com/gunthercox/chatterbot-corpus

PythonでChatterBotを使い始めるための簡単な例です

  1. チャットボットからチャットボットをインポート 
  2. chatterbot.trainers から ListTrainer をインポートします 
  3. チャットボット=チャットボット('Edureka')  
  4. トレーナー= ListTrainer (チャットボット)  
  5. trainer.train([ 'こんにちは、コースを探すのをお手伝いしましょうか', 'もちろん、コースを探します', 'あなたのコースが選択されました'])  
  6. response = chatbot .get_response("コースを希望")  
  7. 印刷(応答)

この例では、入力に基づいてチャットボットから応答を受け取ります。

Flaskアプリを構築する

基本的な Flask 構造については、ChatterBot アプリケーションの開発に特化した GitHub 上の scaffold を直接使用します。

https://github.com/chamkank/flask-chatterbot

プロジェクトを複製するだけです。

プロジェクトをローカルにダウンロードした後、いくつかの変更を加えます

HTMLとCSSファイル用にstaticとtemplatesという2つのディレクトリを追加する必要があります。

App.pyファイルを変更する

  1. FlaskからインポートFlask、render_template、リクエスト 
  2. チャットボットからChatBotをインポート 
  3. chatterbot.trainers から ChatterBotCorpusTrainer をインポートします 
  4. アプリ= Flask (__name__)  
  5. english_bot = ChatBot ("Chatterbot", storage_adapter = "chatterbot.storage.SQLStorageAdapter" )  
  6. トレーナー= ChatterBotCorpusTrainer (英語ボット)  
  7. trainer.train("chatterbot.corpus.english")  
  8. @app.route("/")  
  9. デフホーム():  
  10. render_template("index.html") を返します 
  11. @app.route("/get")  
  12. get_bot_response() を定義します:  
  13. userText =リクエスト.args.get('msg')  
  14. str を返します(english_bot.get_response(userText))
  15.   __name__ == "__main__" の場合:  
  16. アプリの実行()

index.html ファイル

  1. <!DOCTYPE html >    
  2. <html>    
  3. <ヘッド>    
  4. <リンク  rel = "スタイルシート"  タイプ= "テキスト/css"   href = "/static/style.css" >    
  5. <スクリプト  src = "https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js" > </スクリプト>    
  6. </ヘッド>    
  7. <本文>    
  8. < h1 > Flask チャッターボットの例</ h1 >    
  9. <div>    
  10. < div   id = "チャットボックス" >    
  11. < 10 ...   class = "botText" > < span >こんにちは!私は Chatterbot です。 </ span > </ p >    
  12. </div>    
  13. < div   id = "ユーザー入力" >    
  14. <入力  id = "テキスト入力"  タイプ= "テキスト"  名前= "メッセージ"  プレースホルダー= "メッセージ" >    
  15. <入力  id = "ボタン入力"  タイプ= "送信"  = "送信" >    
  16. </div>    
  17. <スクリプト>    
  18. 関数 getBotResponse() {  
  19. var rawText = $("#textInput").val();  
  20. var userHtml = '<p class="userText"><span>' + rawText + ' </ span > </ p > ';  
  21. $("#textInput").val("");  
  22. $("#chatbox").append(userHtml);  
  23. document.getElementById('userInput').scrollIntoView({block: 'start', behavior: 'smooth'});  
  24. $.get("/get", { msg: rawText }).done(function(data) {  
  25. var botHtml = '<p class="botText"><span>' + データ + ' </ span > </ p > ';  
  26. $("#chatbox").append(botHtml);  
  27. document.getElementById('userInput').scrollIntoView({block: 'start', behavior: 'smooth'});  
  28. });  
  29. }  
  30. $("#textInput").keypress(関数(e) {  
  31. e.which == 13 の場合 
  32. BotResponse を取得します。  
  33. }  
  34. });  
  35. $("#buttonInput").click(関数() {  
  36. BotResponse を取得します。  
  37. })  
  38. </スクリプト>    
  39. </div>    
  40. </本文>    
  41. </html>  

index.html ファイルにはアプリケーションのテンプレートが含まれ、style.css には CSS コードを含むスタイルシートが含まれます。上記のプログラムを実行すると、以下のような出力が得られます。

Style.css ファイル

  1.  
  2. {  
  3. フォントファミリー: Garamond;  
  4. 背景色: 黒;  
  5. }  
  6. h1  
  7. {  
  8. 色: 黒;  
  9. 下マージン: 0;  
  10. 上マージン: 0;  
  11. テキスト配置: 中央;  
  12. フォントサイズ: 40px;  
  13. }  
  14. h3  
  15. {  
  16. 色: 黒;  
  17. フォントサイズ: 20px;  
  18. 上マージン: 3px;  
  19. テキスト配置: 中央;  
  20. }  
  21. #チャットボックス 
  22. {  
  23. 背景色: 黒;  
  24. 左マージン: 自動;  
  25. 右マージン: 自動;  
  26. 幅: 40%;  
  27. 上マージン: 60px;  
  28. }  
  29. #ユーザー入力{  
  30. 左マージン: 自動;  
  31. 右マージン: 自動;  
  32. 幅: 40%;  
  33. 上マージン: 60px;  
  34. }  
  35. #テキスト入力{  
  36. 幅: 87%;  
  37. 境界線: なし;  
  38. 下境界線: 3px 実線 #009688;  
  39. フォントファミリ: 等幅;  
  40. フォントサイズ: 17px;  
  41. }  
  42. #ボタン入力{  
  43. パディング: 3px;  
  44. フォントファミリ: 等幅;  
  45. フォントサイズ: 17px;  
  46. }  
  47. .userText{  
  48. 色: 白;  
  49. フォントファミリ: 等幅;  
  50. フォントサイズ: 17px;  
  51. テキスト配置: 右;  
  52. 行の高さ: 30px;  
  53. }  
  54. .userText スパン {  
  55. 背景色: #009688;  
  56. パディング: 10px;  
  57. 境界線の半径: 2px;  
  58. }  
  59. .botText{  
  60. 色: 白;  
  61. フォントファミリ: 等幅;  
  62. フォントサイズ: 17px;  
  63. テキスト配置: 左;  
  64. 行の高さ: 30px;  
  65. }  
  66. .botText スパン {  
  67. 背景色: #EF5350;  
  68. パディング: 10px;  
  69. 境界線の半径: 2px;  
  70. }  
  71. #ちょっとした情報 {  
  72. 位置:絶対;  
  73. 下:0;  
  74. 右:0;  
  75. 幅: 300ピクセル;  
  76. }

次に、Web ページを開くと、チャット ページが表示されます。

ユーザーが入力できるテキスト ボックスがあり、ボットはそのステートメントに対応する応答メッセージを生成します。入力するメッセージが増えるほど、ボットは賢くなります。

さて、今日のシェアはこれで終わりです。また次回お会いしましょう!

<<:  人気の説明: キャッシュ、キャッシュ アルゴリズム、キャッシュ フレームワークの概要

>>:  Nature Review: 機械学習の物理的発見 - 隣にあるもう一つの機会の道

推薦する

27回の機械学習インタビューの後、重要な概念を強調しましょう

機械学習面接のためのハンドブック。これだけあれば十分です。 [[348502]]機械学習やデータサイ...

...

...

スズメバチのように機敏! MITの中国人助教授が「センチメートルサイズ」の昆虫型ロボットを開発

目の前を飛んでいる蚊を手を振って追い払っても、また戻ってきて、とてもイライラします。しかし、蚊が飛び...

商品受け取り時の顔認証システムを小学生が“クラック”!鳳超が緊急オフラインに

[[279460]]最近、「#小学生がアイテム拾いの顔認証のバグを発見#」という話題が注目を集めてい...

アリババの顔認識セキュリティ技術が3Dマスク攻撃を防ぐ特許を取得

[[334032]]顔認識と 3D テクノロジーが融合したとき、最終的な勝者は誰になるでしょうか? ...

...

自然特集:バイオニック群ロボットの登場、工学上の大きな進歩

ネイチャー誌の表紙には、工学上の大きな進歩、つまり生物の細胞コロニーを模倣するロボットの登場が発表さ...

PyTorch がなぜ人気があるのでしょうか?創業者スーミスが成長の秘訣を語る

PyTorch は、ディープラーニング分野で最も人気のあるフレームワークの 1 つです。最初のバージ...

Google に行ったが、ディープラーニングはできなかった。Facebook の Tian Yuandong が人生の課題と選択について語る

初めての15分間のスピーチの準備に2か月を要し、卒業後すぐにGoogleに入社したものの歯車の一部に...

プロセスマイニングを通じて運用の卓越性を達成するための8つのステップ

運用の卓越性は、ビジネスの回復力と収益の成長を向上させる鍵となりますが、今日のプロセス所有者は、急速...

AI を活用したハイパーオートメーションがビジネス効率を向上させる方法

AI とハイパーオートメーションに期待するのには十分な理由があります。AI には、人間の思考や関連す...

生成 AI を構築するか、購入するか?

テキスト、画像、ビデオ、またはおそらく複数のモデルとサービスの組み合わせであっても、生成 AI を活...

データセンターは大量の電力を消費します。しかしAIはエネルギーを大量に消費する必要はない

世界経済フォーラム(AI が地球を救う 8 つの方法)を含む多くの予測では、人工知能 (AI) が「...