文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用 ChatterBot 库制作一个聊天机器人

2024-12-02 15:29

关注

我们学习一些如何使用 ChatterBot 库在 Python 中创建聊天机器人,该库实现了各种机器学习算法来生成响应对话,还是挺不错的

1. 什么是聊天机器人

聊天机器人也称为聊天机器人、机器人、人工代理等,基本上是由人工智能驱动的软件程序,其目的是通过文本或语音与用户进行对话。我们日常接触的比较著名的例子包括 Siri、Alexa 等

这些聊天机器人倾向于为用户执行特定任务,聊天机器人经常执行诸如进行交易、预订酒店、提交表格等任务。随着人工智能领域的技术进步,聊天机器人的可能性也是无穷无尽的

当然了,在当前技术下,聊天机器人还是有很多局限性的

我们可以将聊天机器人定义为两类

好了,高大上的聊天机器人知识就先介绍到这里,下面我们就通过 chatterbot 来构建一个简单的在线聊天机器人

2. ChatterBot 库简介

ChatterBot 是 Python 中的一个库,它生成对用户输入的响应,使用多种机器学习算法来产生各种响应。用户可以更轻松地使用 ChatterBot 库制作具有更准确响应的聊天机器人

ChatterBot 的设计允许机器人接受多种语言的训练,最重要的是,机器学习算法使机器人更容易使用用户的输入自行改进

ChatterBot 可以轻松创建参与对话的软件,每次聊天机器人从用户那里获得输入时,它都会保存输入和响应,这有助于没有初始知识的聊天机器人使用收集到的响应进行自我进化

随着响应的增加,聊天机器人的准确性也会提高。程序从与输入匹配的最接近匹配语句中选择最接近匹配的响应,然后从该响应的已知语句选择中选择响应

安装 ChatterBot 也非常简单 

  1. pip install chatterbot 

下面我们就正式进入 Chatterbot 的世界吧

3. 构建聊天机器人

机器人训练

Chatterbot 带有一个数据实用程序模块,可用于训练聊天机器人。目前该模块中有十多种语言的训练数据,我们可以拿来直接使用

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

下面是在 python 中开始使用 ChatterBot 的简单示例 

  1. from chatterbot import chatbot  
  2. from chatterbot.trainers import ListTrainer  
  3. chatbot = Chatbot('Edureka')  
  4. trainer = ListTrainer(chatbot)  
  5. trainer.train([ 'hi, can I help you find a course', 'sure I'd love to find you a course', 'your course have been selected'])  
  6. response = chatbot.get_response("I want a course")  
  7. print(response) 

在例子中,我们根据提供的输入从聊天机器人获得响应

构建 flask app

对于基本的 flask 结构,我们直接使用 GitHub 上的一个脚手架,这个是专门用来开发 ChatterBot 应用的

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

我们直接克隆项目就好

把项目下载到本地之后,我们进行一些修改

我们需要为 HTML 和 CSS 文件添加另外两个目录 static 和模板

修改 App.py 文件 

  1. from flask import Flask, render_template, request  
  2. from chatterbot import ChatBot  
  3. from chatterbot.trainers import ChatterBotCorpusTrainer  
  4.  app = Flask(__name__)  
  5.  english_bot = ChatBot("Chatterbot", storage_adapter="chatterbot.storage.SQLStorageAdapter" 
  6. trainer = ChatterBotCorpusTrainer(english_bot)  
  7. trainer.train("chatterbot.corpus.english")  
  8. @app.route("/")  
  9. def home():  
  10.     return render_template("index.html")  
  11. @app.route("/get")  
  12. def get_bot_response():  
  13.     userText = request.args.get('msg')  
  14.     return str(english_bot.get_response(userText)) 
  15.  if __name__ == "__main__":  
  16.     app.run() 

index.html 文件 

  1. >  
  2. <html>  
  3. <head>  
  4. <link rel="stylesheet" type="text/css" href="/static/style.css">  
  5. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js">script>  
  6. head>  
  7. <body>  
  8. <h1>Flask Chatterbot Exampleh1>  
  9. <div>  
  10. <div id="chatbox">  
  11. <p class="botText"><span>Hi! I'm Chatterbot.span>p>  
  12. div>  
  13. <div id="userInput">  
  14. <input id="textInput" type="text" name="msg" placeholder="Message">  
  15. <input id="buttonInput" type="submit" value="Send">  
  16. div>  
  17. <script>  
  18. function getBotResponse() {  
  19. var rawText = $("#textInput").val();  
  20. var userHtml = '' + 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 = '' + data + 'span>p>';  
  26. $("#chatbox").append(botHtml);  
  27. document.getElementById('userInput').scrollIntoView({block: 'start', behavior: 'smooth'});  
  28. });  
  29.  
  30. $("#textInput").keypress(function(e) {  
  31. if(e.which == 13) {  
  32. getBotResponse();  
  33.  
  34. });  
  35. $("#buttonInput").click(function() {  
  36. getBotResponse();  
  37. })  
  38. script>  
  39. div>  
  40. body>  
  41. html> 

index.html 文件将包含应用程序的模板,而 style.css 将包含带有 CSS 代码的样式表。执行上述程序后,我们将得到如下图所示的输出

Style.css 文件 

  1. body  
  2.  
  3. font-family: Garamond;  
  4. background-color: black;  
  5.  
  6. h1  
  7.  
  8. color: black;  
  9. margin-bottom: 0;  
  10. margin-top: 0;  
  11. text-align: center;  
  12. font-size: 40px;  
  13.  
  14. h3  
  15.  
  16. color: black;  
  17. font-size: 20px;  
  18. margin-top: 3px;  
  19. text-align: center;  
  20.  
  21. #chatbox  
  22.  
  23. background-color: black;  
  24. margin-left: auto;  
  25. margin-right: auto;  
  26. width: 40%;  
  27. margin-top: 60px;  
  28.  
  29. #userInput {  
  30. margin-left: auto;  
  31. margin-right: auto;  
  32. width: 40%;  
  33. margin-top: 60px;  
  34.  
  35. #textInput {  
  36. width: 87%;  
  37. border: none;  
  38. border-bottom: 3px solid #009688;  
  39. font-family: monospace;  
  40. font-size: 17px;  
  41.  
  42. #buttonInput {  
  43. padding: 3px;  
  44. font-family: monospace;  
  45. font-size: 17px;  
  46.  
  47. .userText {  
  48. color: white;  
  49. font-family: monospace;  
  50. font-size: 17px;  
  51. text-align: right;  
  52. line-height: 30px;  
  53.  
  54. .userText span {  
  55. background-color: #009688;  
  56. padding: 10px;  
  57. border-radius: 2px;  
  58.  
  59. .botText {  
  60. color: white;  
  61. font-family: monospace;  
  62. font-size: 17px;  
  63. text-align: left;  
  64. line-height: 30px;  
  65.  
  66. .botText span {  
  67. background-color: #EF5350;  
  68. padding: 10px;  
  69. border-radius: 2px;  
  70.  
  71. #tidbit {  
  72. position:absolute;  
  73. bottom:0;  
  74. right:0;  
  75. width: 300px;  

接下来我们打开网页,就可以看到聊天页面啦!

有一个文本框,我们可以在其中提供用户输入,机器人将为该语句生成相应的响应消息,当我们输入的消息越多,机器人就会越智能!

好了,今天的分享就到这里,我们下次见!

 

 

来源:菜鸟学Python内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯