聊天机器人技术解析

在当今数字化时代,聊天机器人已经成为日常生活中不可或缺的一部分。无论是在教育门户网站还是电子商务网站上,总能看到“与聊天”的选项。点击后,便进入了一个对话界面。聊天机器人是一种模拟器,用于与人类(特别是客户)互动,以了解他们的疑问或特定查询。由于不能总是有客服支持,有时,会有聊天机器人来理解客户的查询,并专业地回应他们。这个概念并不是最近才出现的;它最早出现在20世纪50年代。艾伦·图灵提出了一个想法:如果一台计算机能够与人交流而不让人意识到是计算机(聊天机器人)在回应,会怎样?这个想法后来被称为“图灵测试”,也就是聊天机器人的起源。1966年,约瑟夫·魏岑鲍姆引入了第一个聊天机器人,并将其命名为E.L.I.Z.A.。总之,聊天机器人可以与以下等式联系起来:

聊天机器人 =人工智能+ 人机交互

为了更好地理解,大多数使用苹果手机的人都有一个叫做S.I.R.I的术语……,称之为聊天机器人,而微软用户有Cortana,谷歌助手等。聊天机器人是这些数字助手的技术术语。

虽然存在许多聊天机器人,但仍有一些形式在其他形式中脱颖而出,这些聊天机器人如下:

  • 1966年的Eliza
  • 1972年的Parry
  • 1995年的A.L.I.C.E.
  • 2001年的Smart Child
  • 2010年的S.I.R.I.
  • 2012年的Google Now
  • 2018年的Alexa

聊天机器人的类型

根据应用,聊天机器人被分类为:

  • 基于文本的聊天机器人
  • 基于语音的聊天机器人

根据设计,聊天机器人再次被分类为:

  • 基于规则的聊天机器人
  • 自学习聊天机器人

聊天机器人的应用

聊天机器人在全球范围内有多种用途,但以下是一些关键应用领域,聊天机器人可以被使用:

  • 帮助台助理
  • 电子邮件分发器
  • 家庭助理
  • 操作助理
  • 电话助理
  • 娱乐助理
  • 医疗保健
  • 教育
  • 零售和市场营销

聊天机器人的技术架构

对于所有概念,核心思想是技术架构,因此将在本主题中查看聊天机器人概念背后的技术架构。让从前端开始,逐步深入到后端以澄清。

在忙碌日程中,大多数人使用Swiggy、Zomato,甚至A.C.T……互联网,或任何其他基本的日常应用程序来满足需求。在这里,考虑的是A.C.T……互联网连接,以便更好地理解,因为这是大流行时期,都知道互联网在生活中有多重要。如果互联网在高峰时段中断,会打开A.C.T……应用程序并提交投诉,看起来像这样。

聊天机器人的工作原理

以下是聊天机器人从零开始工作的最关键步骤:

  1. 语料库导入:这是需要首先处理的确切步骤,因此需要为机器人提供一些基本的短语、陈述或单词,以学习客户发送的查询,因此没有语料库或数据,聊天机器人概念将毫无意义,因为无法通过理解语料库(数据)并用适当的解决方案或回复回应客户询问的查询。例如,如果客户询问一些信息或问题,系统必须理解,并应该合理地回答;否则,聊天或客户服务就没有用处了,对吧!这几乎就像一个对Python、机器学习或任何与数据科学相关的技术一无所知的人参加工作面试。他们会入选吗?不,对吧,因为有关人员没有回答面试官提出的问题。
  2. 预处理数据(文本大小写处理):在导入语料库之后,即使有大量数据或信息(原始数据),如果不进行清理,模型的输出将不准确,因为不洗泥巴衣服就不能穿得适合办公室,对吧?同样,不能在不清理的情况下处理原始数据。因此,在聊天机器人过程中,收到的任何信息或数据,无论是转换为小写还是大写,以避免误解或误表示,因为收到许多数据,为了使其有助于系统理解,需要进行这种转换。
  3. 分词:将句子或段落转换为单个单词集合。将转换为术语的主要目的是聊天机器人不会像人类那样理解术语;它将重视单词而不是句子或任何东西。因此,正在将它们转换为单个单词。
  4. 词干提取:将屈折变化(特定单词可以是任何时态形式)的单词减少到它们的词干(基本形式)。这几乎就像所有的昵称;名字是实体,类似于词干提取。
  5. 词袋模型(BoW):在将句子转换为单词之后,进行词干提取过程。这种特定的BoW通过向量嵌入将单词转换为数字。这简单地意味着特定单词或单词重复了多少次,并且它们以层次模式放置,如下所示。
  6. 独热编码:这是聊天机器人过程中的最后一个。在这里,所有分类变量都被转换为机器学习用于进一步处理的形式(向量到数字/机器级别)。

以下是使用Python实现聊天机器人的代码示例:

# 导入库 import numpy as np # 数值计算 import nltk # 自然语言处理库 import string # 字符串用途 import random # 读取语料库 f = open('program.txt','r',errors = 'ignore') raw_doc = f.read() raw_doc = raw_doc.lower() nltk.download('punkt') nltk.download('wordnet') sent_tokens = nltk.sent_tokenize(raw_doc) word_tokens = nltk.word_tokenize(raw_doc) # 句子标记样本 sent_tokens[:5] # 单词标记样本 word_tokens[:5] # 文本预处理 lemmer = nltk.stem.WordNetLemmatizer() def LemTokens(tokens): return [lemmer.lemmatize(token) for token in tokens] remove_punch_dict = dict((ord(punct), None) for punct in string.punctuation) def LemNormalize(text): return LemTokens(nltk.word_tokenize(text.lower().translate(remove_punch_dict))) # 问候 greet_inputs = ("hey", "hello", "welcome", "vanakkam") greet_responses = ["vanakkam", "nandrigal", "thanks for the words", "hey thanks man"] def greet(sentence): for word in sentence.split(): if word.lower() in greet_inputs: return random.choice(greet_responses) # 响应生成 from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity def response(user_response): robo1_response = '' TfidVec = TfidfVectorizer(tokenizer=LemNormalize, stop_words='english') tfidf = TfidVec.fit_transformer(sent_tokens) vals = cosine_similarity(tfidf[-1], tfidf) idx=vals.argsort()[0][-2] flat=vals.flatten() flat.sort() req_tfidf = float if(req_tfidf==0): robo1_response=robo1_response+"I am sorry! I cant understand the query" return robo1_response else: robo1_response = robo1_response+sent_tokens[idx] return robo1_response # 对话 flag = True print("BOT: My name is Premanand. Let's start our conversation!") while(flag==True): user_response=input() user_response=user_response.lower() if(user_response!='bye'): if(user_response=='thanks' or user_response=='nandrigal'): flag = False print("BOT: Hey thanks for the conversation.. Anything else?") else: if(greet(user_response)!=None): print("BOT:" +greet(user_response)) else: sent_tokens.append(user_response) word_tokens=word_tokens+nltk.word_tokenize(user_response) final_words=list(set(word_tokens)) print("BOT:", end="") print(response(user_response)) sent_tokens.remove(user_response) else: flag=False print("BOT: Have a nice day! It's nice talking to you!")

通过本文,可以了解到聊天机器人是什么,它的历史和类型,以及聊天机器人的技术架构。此外,还了解了聊天机器人如何逐步工作,从句子到独热编码过程的每个步骤。请在评论区域留下想法/意见。从错误中学习是最喜欢的名言;如果发现有什么不正确的地方,请指出来;渴望向像这样的学习者学习。

阅读博客上更多关于聊天机器人的文章。

关于,简而言之,是Premanand S,助理教授和数据科学研究员。技术爱好:学习Python、机器学习和深度学习。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485