当前位置:   article > 正文

Python基于Tkinter、爬虫和AIML写了个小机器人聊天软件_爬虫实现聊天对话自动应答

爬虫实现聊天对话自动应答

开始学习GUI编程了,如果简单写个HELLO  WORLD感觉太简单了,之前在B站翻到老师在讲通过Tkinter、爬虫技术写了个基于有道的翻译小软件,在网上又搜了一下爬虫翻译软件相关的专题,发现还是有很多的大神。本文是参考大神http://www.lanbainan.cn/2018/09/08/2018-09-08/实现了翻译的功能,参考文章https://www.jb51.net/article/143390.htm又加入了机器人ALICE的部分。

因为ALICE只支持英文,所以下想到整合上翻译功能,这样,在输入的时候自动识别中文还是英文,然后翻译成英文提交给ALICE,最后当然把ALICE的返回部分再翻译成中文显示出来。效果如下

                                                       

点击发送之后,输入框自动清空,然后把发送和接收的数据添加到“对话框”中了。

如果了解过爬虫的话,翻译的原理其实挺简单,找到翻译的时候实际的URL和提交的数据就可以了。具体方法就不详细论述了,资料一大堆。

本文的“翻译引擎”是用必应翻译,在源代码中也可以看出来,其实用什么翻译都可以结果也都差不多,只是必应好像不需要AGENT,有道、百度啥的好像需要AGENT。

  1. from tkinter import *
  2. from tkinter import messagebox
  3. import requests
  4. from tkinter import scrolledtext
  5. import tkinter as tk
  6. import aiml
  7. import sys
  8. import os
  9. def get_module_dir(name):
  10. print("module", sys.modules[name])
  11. path = getattr(sys.modules[name], '__file__', None)
  12. print(path)
  13. if not path:
  14. raise AttributeError('module %s has not attribute __file__' % name)
  15. return os.path.dirname(os.path.abspath(path))
  16. def Judge_CH(content):
  17. for ch in content:
  18. if u'\u4e00' <= ch <= u'\u9fff':
  19. return True
  20. return False
  21. def translate(mes):
  22. #pass
  23. url = "https://cn.bing.com/ttranslatev3?isVertical=1&&IG=4A2FC6AC6B474D1AA4650B3473E31411&IID=trans"
  24. data={}
  25. data['text'] = mes
  26. data['fromLang'] = "auto-detect"
  27. #识别输入中是否有中文
  28. if(Judge_CH(mes)):
  29. data['to'] = "en"
  30. else:
  31. data['to'] = "zh-Hans"
  32. result = requests.post(url,data).json()
  33. #字典 列表各种嵌套
  34. result = result[0]['translations'][0]['text']
  35. return result
  36. def sendmes():
  37. content = entry.get()
  38. #当没有输入却点击发送的时候弹出警告
  39. if len(content) == 0:
  40. messagebox.showinfo(title='警告', message='你要输入文字才行哦!')
  41. return
  42. torboot = "我:"+content+"\n"
  43. scr.insert(END, torboot)
  44. entry.delete(0,'end')
  45. sendtoroot = translate(content)
  46. response = alice.respond(sendtoroot)
  47. print(sendtoroot)
  48. print(response)
  49. recvfromroot = "小岳:"+translate(response)+"\n"
  50. scr.insert(END,recvfromroot)
  51. #初始化窗口
  52. root = tk.Tk()
  53. enres = StringVar() #设置变量
  54. root.title("小岳陪你聊") #设置窗口标题
  55. root.minsize(320, 160 )
  56. root.maxsize(320, 160) #固定窗口大小
  57. root.geometry("250x150+800+450") #固定串口位置
  58. lable = Label(root,text="我:",font="微软雅黑")
  59. lable.grid(row=1,column=0)
  60. lable1 = Label(root,text="小岳:",font="微软雅黑")
  61. lable1.grid(row=0,column=0)#固定位置
  62. #设置输入框
  63. entry = Entry(root,font=("微软雅黑",10),width=28)
  64. entry.grid(row=1,column=1)#固定位置
  65. # 对话消息框设置成滚动文本框
  66. scrolW = 25 # 设置文本框的长度
  67. scrolH = 9 # 设置文本框的高度
  68. scr = scrolledtext.ScrolledText(root, width=scrolW, height=scrolH,wrap=tk.WORD)
  69. scr.grid(row=0,column=1)#固定位置
  70. #设置发送按钮,点击的时候去执行sendmes函数
  71. button = Button(root,text="发送",font=("微软雅黑",10),command=sendmes)
  72. button.grid(row=1,column=3,sticky=E)#固定位置
  73. #设置退出按钮,点击的时候退出程序
  74. button1 = Button(root,text="退出",font=("微软雅黑",10),command=root.quit)
  75. button1.grid(row=0,column=3,sticky=E)#固定位置
  76. #加载机器人ALICE
  77. alice_path = get_module_dir('aiml') + '\\botdata\\alice'
  78. os.chdir(alice_path) # 切换到语料库所在工作目录
  79. alice = aiml.Kernel() # 创建机器人alice对象
  80. alice.learn("startup.xml")
  81. alice.respond('LOAD ALICE')
  82. root.mainloop()

已经打包好了,需要的朋友关注公众号向作者索要安装包。

欢迎关注个人微信公众号:小岳杂货店,查看“原来黑科技这么简单”之全息投影。

                                                             

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/343970
推荐阅读
相关标签
  

闽ICP备14008679号