当前位置:   article > 正文

个人笔记:chatterbot聊天机器人(二)——chatterbot与Web设计_chatter bot

chatter bot

目录

前言

文件结构

代码文件

一、Python脚本部分(html_chatter.py)

二、HTML部分(index.html)

运行与展示

主要代码解释

python部分:

HTML部分


前言

        前文:个人笔记:chatterbot聊天机器人(一)——chatterbot安装与训练-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/Charming_Cheng/article/details/133973283?spm=1001.2014.3001.5502

       另外需要安装的库:flask(pip install flask)

文件结构

chatterbot(floder)
templates(folder)html_chatter.py
index.html

代码文件

一、Python脚本部分(html_chatter.py)

  1. from flask import Flask, render_template, request, jsonify
  2. from chatterbot import ChatBot
  3. from chatterbot.trainers import ListTrainer
  4. # import nltk
  5. # 下载必要的NLTK数据(如果尚未下载)
  6. # nltk.download('averaged_perceptron_tagger')
  7. # nltk.download('punkt')
  8. # nltk.download('stopwords')
  9. app = Flask(__name__)
  10. # 创建一个新的ChatBot实例
  11. chatterbot = ChatBot("Training Example")
  12. trainer = ListTrainer(chatterbot)
  13. trainer.train(["早上好!", "你好"])
  14. trainer.train(["中午好!", "午安!"])
  15. @app.route("/")
  16. def home():
  17. return render_template("index.html") # 您的HTML文件名
  18. @app.route("/get")
  19. def get_bot_response():
  20. user_input = request.args.get('msg') # 获取从网页传来的用户消息
  21. return str(chatterbot.get_response(user_input)) # 返回聊天机器人的响应
  22. if __name__ == "__main__":
  23. app.run(debug=True)

二、HTML部分(index.html)

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>Chatbot</title>
  5. <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  6. <style>
  7. body {
  8. background-image: url('https://ts1.cn.mm.bing.net/th/id/R-C.55be8a43def725035afb006bc9688da2?rik=ggcaQsrgXvpGyQ&riu=http%3a%2f%2fpic.bizhi360.com%2fbbpic%2f7%2f6107.jpg&ehk=BmF5KiA3SNRYj%2fh6ptcCYZ6EUUfkxvcsr13cRy4cXpQ%3d&risl=&pid=ImgRaw&r=0'); /* 替换为你的图片URL */
  9. background-size: cover; /* 图片尺寸为覆盖整个元素 */
  10. background-repeat: no-repeat; /* 防止图片重复 */
  11. background-position: center; /* 图片定位在元素中间 */
  12. font-family: 'Helvetica Neue', Arial, sans-serif;
  13. }
  14. #chatbox {
  15. max-width: 600px;
  16. margin: 0 auto;
  17. border: 1px solid #ccc;
  18. background-color: #fff;
  19. padding: 20px;
  20. border-radius: 5px;
  21. margin-top: 5%;
  22. overflow-y: auto;
  23. height: 500px;
  24. }
  25. #user_input {
  26. bottom: 0;
  27. width: 80%;
  28. margin: 1em;
  29. padding: 8px;
  30. border-radius: 4px;
  31. border: 1px solid #ccc;
  32. font-size: 14px;
  33. }
  34. button {
  35. background-color: #07c160;
  36. border: none;
  37. color: white;
  38. padding: 8px 16px;
  39. text-align: center;
  40. text-decoration: none;
  41. display: inline-block;
  42. font-size: 14px;
  43. margin: 1em;
  44. cursor: pointer;
  45. border-radius: 4px;
  46. }
  47. p {
  48. padding:5px;
  49. border-radius:10px;
  50. line-height:20px;
  51. position:relative;
  52. margin:10px 0;
  53. }
  54. </style>
  55. <script>
  56. function getResponse() {
  57. var user_input = $('#user_input').val(); // 获取用户输入
  58. $.get('/get', { msg: user_input }).done(function(data) {
  59. // 将机器人的回复添加到页面上
  60. $('#chatbox').append('<p>You: ' + user_input + '</p>');
  61. $('#chatbox').append('<p>Bot: ' + data + '</p>');
  62. $('#user_input').val(''); // 清空输入框
  63. $('#chatbox').animate({scrollTop:$('#chatbox').prop('scrollHeight')}, 500); // 自动滚动到底部
  64. });
  65. }
  66. // 监听输入框的回车事件
  67. $(document).ready(function() {
  68. $('#user_input').keypress(function(e) {
  69. if(e.which == 13) { // 回车键的键值为13
  70. getResponse();
  71. return false; // 确保表单不会提交
  72. }
  73. });
  74. });
  75. </script>
  76. </head>
  77. <body>
  78. <div id="chatbox">
  79. <!-- 在这里显示对话 -->
  80. </div>
  81. <div style="position: fixed; width: 100%; bottom: 0; background-color: #fff; padding: 10px;">
  82. <input type="text" id="user_input" placeholder="Say something...">
  83. <button onclick="getResponse()">Send</button>
  84. </div>
  85. </body>
  86. </html>

运行与展示

首先运行Python脚本(html_chatter.py)

运行结果:

然后打开浏览器进入http://127.0.0.1:5000

然后就可以在对话框中对话了

主要代码解释

python部分:

app = Flask(__name__)

创建一个Flask应用实例,命名为app。这将是整个Web应用的核心。

@app.route("/")

这是一个Flask路由装饰器,定义了根URL(/)的处理函数。当用户访问应用的根URL时,将调用home函数。

def home()

这是/路由的处理函数。它返回一个HTML模板,用于呈现用户界面。具体的HTML模板文件的名称在render_template函数中指定。

@app.route("/get")

这是另一个Flask路由装饰器,定义了/get URL的处理函数。它用于处理用户通过Web界面输入的消息。

def get_bot_response()

这是/get路由的处理函数。它首先从HTTP请求中获取名为msg的参数,该参数包含了用户的消息。然后,它调用聊天机器人的get_response方法来获取聊天机器人对用户消息的响应。最后,将聊天机器人的响应以字符串的形式返回给Web界面。

if __name__ == "__main__":

这是Python的约定,用于检查是否运行的是当前脚本而不是被导入的模块。如果当前脚本被直接运行(而不是被导入到其他脚本中),则执行以下内容。

app.run(debug=True)

这一行代码启动Flask应用,使其开始监听HTTP请求。debug=True将启用调试模式,这意味着在应用运行期间会显示详细的错误信息。

HTML部分

function getResponse() { ... }

这是一个名为getResponse的JavaScript函数,它用于获取用户输入并向服务器发送GET请求以获取聊天机器人的回复。

var user_input = $('#user_input').val();

这行代码使用jQuery选择器$('#user_input')获取id为user_input的输入框,然后使用.val()方法获取用户输入的内容,并将其存储在user_input变量中。

$.get('/get', { msg: user_input }).done(function(data) { ... });

这行代码使用jQuery的$.get()方法向服务器发送GET请求。请求的目标URL是/get,并传递一个JS对象{ msg: user_input }作为请求的参数,参数名为msg,值为用户输入的内容。当请求完成后,执行一个回调函数。

$('#chatbox').append('<p>You: ' + user_input + '</p>');

这行代码使用jQuery选择器$('#chatbox')选择具有id为chatbox的元素,然后使用.append()方法将一个带有用户输入内容的<p>元素添加到该元素中,显示用户的输入。

$('#chatbox').append('<p>Bot: ' + data + '</p>');

这行代码使用jQuery选择器$('#chatbox')选择具有id为chatbox的元素,然后使用.append()方法将一个带有聊天机器人回复内容的<p>元素添加到该元素中,显示聊天机器人的回复。data是从服务器获取的回复数据。

$('#user_input').val('');

这行代码使用jQuery选择器$('#user_input')选择具有id为user_input的输入框,然后使用.val('')方法将输入框的值清空,以便用户可以输入下一条消息。

$('#chatbox').animate({scrollTop:$('#chatbox').prop('scrollHeight')}, 500);

这行代码使用jQuery选择器$('#chatbox')选择具有id为chatbox的元素,然后使用.animate()方法在500毫秒内将元素的滚动条滚动到底部,以便用户可以看到最新的聊天消息。

$(document).ready(function() { ... });

这是一个在文档加载完成后执行的jQuery事件处理程序。它确保在文档准备就绪时绑定了回车键的监听器。

$('#user_input').keypress(function(e) { ... });

这行代码使用jQuery选择器$('#user_input')选择具有id为user_input的输入框,然后使用.keypress()方法绑定一个按键事件处理程序。

if(e.which == 13) { ... }

这行代码检查按下的按键是否是回车键(键值为13)。

getResponse();

当用户按下回车键时,调用getResponse()函数来处理用户的输入。

return false;

这行代码确保表单不会提交,以避免页面刷新。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号