十分钟,如何制作一个聊天机器人?

本文转载自公众号“读芯术”(ID:AI_Discovery)了解聊天机器人。

本文转载自公众号“读芯术”(ID:AI_Discovery)

了解聊天机器人的主要用途很重要,每个行业都不能使用同一个聊天机器人,他们有不同的目的和不同的语料库。虽然消息传递组件可以很好地给予答复,但是可能需要时间作出回应。另一方面,考虑到时间问题,可以应用各种其他方法,甚至可以找到一些以规则为基础的系统,以获得适合回答所提问题的语句。

你曾多少次联系旅行社要求退票,得到一个恰当的答复是远远不够的。

现在让我们制作一个简单的聊天机器人,安装以下软件包:

pipinstallnltkpipinstallnewspaper3k

Package newspaper3k有以下优点:

多线程文章下载框架 可识别新闻URL 可从HTML中提取文本 从HTML中提取顶层图像 可从HTML提取所有图像 可从文本中提取关键词 可从文本中提取摘要 可从文本中提取作者 谷歌趋势术语提取 使用10多种语言(英语、德语、阿拉伯语、中文等)

导入库,如下所示:

#importlibrariesfromnewspaperimportArticleimportrandomimportnltkimportstringfromsklearn.feature_extraction.textimportCountVectorizerfromsklearn.metrics.pairwiseimportcosine_similarity

余弦相似度或余弦核将相似度计算为X和Y的标准化点积:

sklearn.metrics.pairwise.cosine_similarity(X,Y=None,dense_output=True) 参数

X{ndarray, sparse matrix} of shape (n_samples_X, n_features) 输入数据。

Y{ndarray,sparse matrix} of shape (n_samples_Y, n_features), default=None 输入数据。

如果没有,输出将是X. dense_outputbool中所有样本之间的成对相似性,default =True是否返回密集输出,即使输入是稀疏的。如果为False,则如果两个输入数组都是稀疏的,则输出是稀疏的。

返回

核矩阵:ndarray of shape(n_samples_X, n_samples_Y)

importnumpyasnpimportwarningswarnings.filterwarnings(\’ignore\’)

这里从一个医疗保健网站获取数据:

article=Article(\”https://www.mayoclinic.org/diseases-conditions/chronic-kidney-disease/symptoms-causes/syc-20354521\”)article.download()article.parse()article.nlp()corpus=article.textprint(corpus)#tokenizationtext=corpussentence_list=nltk.sent_tokenize(text)#Alistofsentences#Printthelistofsentencesprint(sentence_list)

准备好了语料库之后,你需要考虑用户或客户可能会问或说的问题,这与我们的内容无关。它可以是问候语、感谢语,也可以是拜拜之类的信息。团队需要就这些信息和他们的反应进行考量。

问候机器人响应:

#Randomresponsetogreetingdefgreeting_response(text):text=text.lower()#Botsgreetingbot_greetings=[\”howdy\”,\”hi\”,\”hola\”,\”hey\”,\”hello\”]#UserGreetingsuser_greetings=[\”wassup\”,\”howdy\”,\”hi\”,\”hola\”,\”hey\”,\”hello\”]forwordintext.split():ifwordinuser_greetings:returnrandom.choice(bot_greetings)#Randomresponsetogreetingdefgratitude_response(text):text=text.lower()

感谢机器人响应:

#Botsgratitudebot_gratitude=[\”Gladtohelp\”,\”Youaremostwelcome\”,\”Pleasuretobeofhelp\”]#UserGratitudeuser_gratitude=[\”Thankyousomuch\”,\”grateful\”,\”Thankyou\”,\”thankyou\”,\”thankyou\”]forwordintext.split():ifwordinuser_gratitude:returnrandom.choice(bot_gratitude)

种类列表:

#Defaulttitletextdefindex_sort(list_var):length=len(list_var)list_index=list(range(0,length))x=list_varforiinrange(length):forjinrange(length):ifx[list_index[i]]>x[list_index[j]]:#swaptemp=list_index[i]list_index[i]=list_index[j]list_index[j]=tempreturnlist_index

聊天机器人响应功能来自于对预定义文本的余弦相似性的响应。

#CreatBotsResponsedefbot_response(user_input):user_input=user_input.lower()sentence_list.append(user_input)bot_response=\”\”cm=CountVectorizer().fit_transform(sentence_list)similarity_scores=cosine_similarity(cm[-1],cm)similarity_scores_list=similarity_scores.flatten()index=index_sort(similarity_scores_list)index=index[1:]response_flag=0j=0foriinrange(len(index)):ifsimilarity_scores_list[index[i]]>0.0:bot_response=bot_response+\’\’+sentence_list[index[i]]response_flag=1j=j+1ifj>2:breakifresponse_flag==0:bot_response=bot_response+\”\”+\”Iapologize,Idontunderstand\”sentence_list.remove(user_input)returnbot_response

对于退出聊天,退出列表中的单词写为“退出”,“再见”,“再见”,“退出”。

响应这些话,聊天机器人将退出聊天。

启动聊天机器人,尽情享受吧!

#StartChatprint(\”DocBot:IamDOcbotandIwillansweryourqueriesaboutchronickidneydisease,ifyouwanttoexittype,bye\”)exit_list=[\’exit\’,\’bye\’,\’seeyoulater\’,\’quit\’]while(True):user_input=input()ifuser_input.lower()inexit_list:print(\”DocBot:ByeByeSeeyoulater\”)breakelifgreeting_response(user_input)!=None:print(\”DocBot:\”+greeting_response(user_input))elifgratitude_response(user_input)!=None:print(\”DocBot:\”+gratitude_response(user_input))else:print(\”DocBot:\”+bot_response(user_input))

请参见下面聊天机器人的回复:

十分钟,如何制作一个聊天机器人?

“谢谢”并不在我们的机器人感谢程序中,因此我们要传达这样的信息。随着时间的推移,你可以扩大这样的词汇表,或者使用正则表达式对其进行微调。

举个小例子,与聊天机器人开始聊天,应该是快速和简单的。你需要针对不同行业对聊天机器人进行微调,这些行业的语料库来自实时数据或云端的一些储存。

此外,需要注意的是,实时数据要面对挑战,聊天必须基于最新的数据作出回应,例如在旅行社订票。

给TA打赏
共{{data.count}}人
人已打赏
云计算

亚马逊工会投票结束:历史性一刻可能即将到来

2021-3-31 9:21:34

云计算

亚马逊收购印度电商Perpule:帮助海量“夫妻店”支持移动支付

2021-3-31 9:24:29

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索