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: 機械学習の物理的発見 - 隣にあるもう一つの機会の道

ブログ    
ブログ    

推薦する

定量評価、アルゴリズム拡張:強化学習研究の10原則

[[252430]]ビッグデータダイジェスト制作編纂者:江宝尚今年 9 月に開催された Deep L...

...

...

パーソナライズされた推奨事項は、馴染みのあるものに偏っていますか?アルゴリズムは公平性を侵害できない

北京日報によると、異なる消費者が同じ電子商取引プラットフォーム上で同じキーワードを使用して商品を検索...

あらゆるビジネスオペレーションに AI を効果的に適用する 10 の方法

企業は、業務に AI を実装するさまざまな方法を分析し、理解する必要があります。 人工知能(AI)は...

AI + リアルタイム監視技術が公共サービスを改善する10の方法

石油やガスの価格変動、運用コストの増加、サイバー/物理的な脅威の増大により、公益事業会社はセキュリテ...

...

...

...

マシンビジョンは人工知能を複数の業界に根付かせる

インターネットと人工知能が2019年全国人民代表大会で最もホットな話題の一つになることは間違いありま...

自動運転トラックはレベル4を達成する可能性が最も高いが、自動運転車は2022年まで待たなければならない

過去10年間、テクノロジーおよび自動車の専門家は、人間の運転手による積極的な監視や入力なしに公道を走...

顔認識技術はスマート建設現場やスマートコミュニティにどのようなメリットをもたらすのでしょうか?

スマートシティ、スマートコミュニティ、スマート交通は絶えず推進され、普及しており、ユーザーの使用習慣...

サプライチェーン管理における AI イノベーションを活用するために従業員を再教育する方法

サプライチェーン管理は最適化ゲームです。 AI の導入により、企業は最適な成果の達成にさらに注力でき...