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

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

MITは線虫Caenorhabditis elegansにヒントを得て、19個のニューロンを使って自動運転制御を実現

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

ChatGPT Enterprise Editionが登場: 史上最強のバージョン、無制限の使用と32kコンテキストを備えた2倍のGPT-4

ChatGPTはリリースされてから9か月が経ちました。この 9 か月間、この驚異的なアプリケーショ...

Googleが独自のAIチップを開発することを選択した6つの理由

[51CTO.com クイック翻訳] 長い間、Google などのクラウドベンダーは、自社のデータセ...

ベクトルデータベースが生成AIを強化する方法

ベクトル データベースは、LLM と外部情報の間のブリッジとして機能し、生成 AI システムの基本機...

キングス・カレッジ・ロンドンとグラクソ・スミスクラインが人工知能技術に基づくがん研究で協力

海外メディアの報道によると、9月30日、キングス・カレッジ・ロンドンと世界的な製薬会社グラクソ・スミ...

...

機械学習モデルは株式市場を正確に予測できるのでしょうか?

[51CTO.com クイック翻訳] 人工知能は今や魔法の技術と見なされています。人類が直面してい...

文字列マッチングのためのKMPアルゴリズム

文字列の照合は、コンピューターの基本的なタスクの 1 つです。たとえば、「BBC ABCDAB AB...

ディープラーニングを使用してコンピュータービジョンのすべての作業を完了するにはどうすればよいですか?

コンピュータービジョンをやってみたいですか?最近では、ディープラーニングが主流となっています。大規模...

...

インテリジェントビル通信システムの構成と要件

1. インテリジェントビル通信システムの構成インテリジェントビル通信システムは、主に以下の部分で構成...

ドローンの応用シナリオに関する簡単な説明

技術の発展に伴い、ドローンの応用シナリオは絶えず拡大しています。ドローンが様々な業界で活用されている...

ディープラーニングを使って背景を除去し、切り抜きを実現する方法の詳細な説明

上記のコースで、経験豊富な Web 開発者である Alon Burg と出会い、偶然にも同じような興...

音声認識が検索ボックスに取って代わり、人工知能が3つの主要な応用分野で主導権を握る

マイクロソフトのレドモンド研究所の副社長であるデュメイス氏は、ディープラーニング技術が2017年にオ...

Nature: AI はなぜいつも差別的なのか?

[[241142]]ビッグデータダイジェスト制作編集者: Hu Jia、Wang Yiding、X...