本文转载自公众号《读书芯》(ID:AI_Discovery)了解聊天机器人的主要用途非常重要。每个行业都不能使用相同的聊天机器人。他们有不同的目的和不同的语料库。虽然消息组件可以很好地响应,但可能需要一些时间才能响应。另一方面,考虑到时间问题,可以应用各种其他方法,甚至可以找到一些基于规则的系统来获得适合回答所提出问题的句子。您联系过多少次旅行社要求退款,而得到正确的答复是远远不够的。现在让我们做一个简单的聊天机器人,安装以下包:pipinstallnltkpipinstallnewspaper3kPackagenewspaper3k具有以下优点:多线程文章下载框架识别新闻URLs从HTML中提取文本从HTML中提取顶级图像从HTML中提取所有图像可用从Extractkeywordsfromtext摘要可以从文本中提取作者谷歌趋势术语提取使用10多种语言(英语、德语、阿拉伯语、中文等)导入库如下:#importlibrariesfromnewspaperimportArticleimportrandomimportnltkimportstringfromsklearn。.metrics.pairwiseimportcosine_similaritycosine_similarity或cosine_kernel计算X和Y的归一化点积的相似度:shape(n_samples_X,n_features)输入数据。形状为(n_samples_Y,n_features)的Y{ndarray,sparsematrix},默认=无输入数据。如果不是,则输出将是X中所有样本之间的成对相似度。dense_outputbool,即使输入是稀疏的,default=True也会返回密集输出。如果为False,则如果两个输入数组都是稀疏的,则输出是稀疏的。返回内核矩阵:ndarrayofshape(n_samples_X,n_samples_Y)importnumpyasnpiimportwarningwarnings.filterwarnings('ignore')此处从医疗保健网站获取数据:article=Article("https://www.mayoclinic.org/diseases-条件/慢性肾病/症状原因/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:选择(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_s=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[索引[i]]response_flag=1j=j+1ifj>2:breakifresponse_flag==0:bot_response=bot_response+""+"Iapologize,Idon'tunderstand"sentence_list.remove(user_input)returnbot_response对于退出聊天,退出列表中的单词写为"退出”、“再见”、“再见”、“退出”。作为对这些话的回应,聊天机器人将退出聊天。启动聊天机器人并享受吧!#StartChatprint(“DocBot:IamDOcbotandIwillansweryourqueriesaboutchronickidneydisease,ifyouwanttoexittype,bye”)("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))查看下面的聊天机器人响应:“谢谢”不是我们机器人感谢计划的一部分,所以我们想传达这一点。随着时间的推移,您可以扩展这样的词汇表,或者使用正则表达式对其进行微调。举个小例子,开始与聊天机器人聊天应该既快速又简单。您需要针对语料库来自实时数据或云中的某些存储的不同行业微调聊天机器人。此外,需要注意的是,实时数据是一项挑战,聊天必须根据最新数据做出响应,例如在旅行社预订机票。
