智能聊天功能——生活指南篇
智能电视的投屏功能使用指南 #生活技巧# #数码产品使用技巧# #智能家居控制指南#
智能聊天功能 生活指南在生活中,人们往往会遇到各种各样的问题,常常面临着“怎么做”的抉择。尤其是第一次尝试去做某件事情的时候,但因为没有经验而无从下手。大部分人可能会拿出手机搜索答案,或者电话询问有相关经验的人,即浪费时间,又浪费精力。
本系统提供生活指南这一功能,用户无需拿出手机打开APP去搜索,只需要唤醒“依米”,提出问题,它便会搜索答案然后通过语音的形式播放出来,用户只用听,而不需要停下手中的事情便能知道问题的答案。具体实现流程如图所示。
wikiHow是一个高质量的指导手册类型网站,该网站上包含了56000篇文章,旨在帮助用户学做任何事。类似我们生活指南,你不会做的事在上面总能找到答案。图是wikihow网站的首页。
https://zh.wikihow.com
从图中不难看出它包含了各个方面的生活指南,并且没有植入任何广告,内容质量相对较高,所以,我将选取这个网站爬取其内容,此功能开发参考了《python爬虫开发,从入门到实践》一书。获取与关键词有关的所有超链的代码如下:
1.def get_url(keyword): 2. ul=u'https://zh.wikihow.com/wikiHowTo?search='+keyword+'' 3. print(ul) 4. res=requests.get(ul) 5. res.encoding='utf-8' 6. r=res.text 7. soup = BeautifulSoup(r,"html.parser") 8. o_urls = re.findall(r'<a href="([a-zA-Z]+://[^\s]*)"',r) 9. print(o_urls[0]) 10. return o_urls[0] 1234567891011
用户提出问题后,通过上述的requests模块获取网页,利用正则表达式获取该网页下的超链,并保存到列表o_urls中。
将网页搜索到的结果写入文件的关键代码如下:
1.def analyze_url(url): 2. url = url 3. res = requests.get(url) 4. res.encoding='utf8' 5. soup = BeautifulSoup(res.text,"html.parser") 6. print(soup.select('html>head>meta')) 7. f=open("./result/question_result.txt","a+") 8. f.seek(0) 9. f.truncate() 10. a=re.findall('>(.*?)<',str(soup.find('title'))) 11. f.write("依米为您找到了"+str(a)) 12. fsize= 0 13. for step in soup.find_all(attrs={'class':'step'}): 14. s=step.get_text() 15. pattern=re.compile('[0-9_\u4e00-\u9fa5]+') 16. s=pattern.findall(s) 17. s=str(s) 18. s=s.replace("\n","") 19. f.write(s) 20. print(s) 21. fsize=fsize+len(s.encode('utf-8')) 22. print(fsize) 23. if fsize>5000: 24. break 25. f.close()
1234567891011121314151617181920212223242526接着再通过requests默认访问列表o_urls中的第一个超链,再利用BeautifulSoup工具解析该网页,结合正则表达式获取有效结果,由于百度语音合成有文件大小限制,我这里设置将结果写入文件的字数不超过5000个字。
用户通过说出关键词“如何”+问题,如“如何煮饭”,系统将识别成功的字符串进行处理后赋给name变量,由于BeautifulSoup只支持python3,而本系统是在python2的环境下运行的,若是通过函数传参会出现不能导入BeautifulSoup的问题,因此,我利用Python语言中os、system、sys.argv模块通过命令行的方式传参,使得在python2的环境下可通过os.system去执行携带参数的python3的文件。该功能关键代码如下:
1.if "如何" in recognition_result: 2. name=recognition_result.replace('。','') 3. name=recognition_result.replace('?','') 4. name=name.replace('如何','') 5. try: 6. os.system('python3 wiki.py %s'% name) 7. weather.tts("./result/question_result.txt") 8. #print("!!!!!!!!!!!!!!!!!!!!") 9. os.system('mpg123 ase.mp3') 10. except Exception: 11. url = baiduAPI.voiceSynthesis("抱歉主人,您问的问题无搜索结果") 12. voice.playVoice(url) 13. break 1234567891011121314
wiki.py的全部代码:
# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup import re import sys import os def get_url(keyword):ul=u'https://zh.wikihow.com/wikiHowTo?search='+keyword+''print(ul)res=requests.get(ul)res.encoding='utf-8'r=res.textsoup = BeautifulSoup(r,"html.parser")print(soup.prettify())print("_________________________________")h=soup.find(attrs={'class':'result_link'})a=re.findall('href="(.*?)"',str(h))print(a)return a[0] def analyze_url(url):url = urlprint(url)res = requests.get(url)res.encoding='utf8'soup = BeautifulSoup(res.text,"html.parser")print("_________________________________")print(soup.select('html>head>meta'))print("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")f=open("./result/question_result.txt","a+")f.seek(0)f.truncate()a=re.findall('>(.*?)<',str(soup.find('title')))f.write("依米为您找到了"+str(a))fsize= 0for step in soup.find_all(attrs={'class':'step'}):s=step.get_text()pattern=re.compile('[0-9_\u4e00-\u9fa5]+')s=pattern.findall(s)s=str(s)s=s.replace("\n","")f.write(s)print(s)fsize=fsize+len(s.encode('utf-8'))print(fsize)if fsize>5000:breakf.close() if __name__ == '__main__':keyword=sys.argv[1]url=get_url(str(keyword))analyze_url(url)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455例如我想知道怎么“学习”,只需把wiki.py文件中的keyword=sys.argv[1]改为keyword="学习",然后单独运行它,它就会返回在网站搜索到的答案。
网址:智能聊天功能——生活指南篇 https://www.yuejiaxmz.com/news/view/642206
相关内容
智能对话新篇章:哪些聊天工具软件能进行高效分享与互动掌握AI智能助手使用技巧:轻松驾驭智能对话助手功能指南
智能机器人聊天软件:人工智能走进生活的新时代
这4款智能聊天app,来看看!
《智能生活新体验:好太太AI智能门锁深度种草指南》
高科技功能打造健康生活 智能空调选购指南
AI小助理智能聊天
华为手机AI语音助手全方位关闭指南:一键解除智能语音播报及唤醒功能
城市通:智能出行,城市生活的便捷指南
人工智能助手核心功能与操作详解:AI机器人全方位应用指南