聊天机器人的行业背景
为什么学?
1.热门行业(NLP主流方向)
2.技术流,主流Seq2Seq+Attention
3.前沿,行业内缺乏大量人才
4.薪资高,贴近生活
一、聊天机器人综合介绍
具代表性的有;腾讯QQ小冰,天猫精灵等不刻板不生硬
应用场景:自动回复,医疗,旅游,餐饮,财经,新闻等
起源发展:诞生于20世纪80年代,用来模拟人类对话或者聊天的程序。1966年诞生的Eliza和1972年诞生的Parry是早期非常著名的聊天机器人。
分类;
&检索模式:预定义响应 的数据库和某种启发式推理来根据输入和上下文选择适当的响应。换句话说就是构建FAQ,存储问题-答案对,之后用检索的方式从该FAQ中返回句子的答案。
检索模式应用:
&生成模式:这种方法更难一些,它不依赖于预定义的响应,完全从零开始生成新的响应。生成式模型通常基于机器翻译技术,但不是从一种语言翻译到另一种语言,而是从输入到输出(响应)的翻译。
生成模式应用:
如何构建最简单的聊天机器人
***基于规则***rule-base的简单聊天机器人(应用)
//只有我们询问"你好吗"这三个字的时候,聊天机器人才会做出回应
//而我们问“你好吗?”,聊天机器人不作出反应
if "你好吗" in user.query:
chatbot.say("我很好")
if "天气" in user.query:
chatbot.say("今天阳光明媚")
实现方法以及环境:
Python3.7 , Anaconda , jupyter NoteBook , Nltk(Natural Language Toolkit)
import random
#打招呼
greetings=['hi','Hi!','Hi','hello','Hello']
#随机回复
response_greetings=random.choice(greetings)
#问好
questions=['how are you ? ','how are you doing ?']
#随机回复
response=['Okay','fine','just so so']
response_questions=random.choice(response)
#问答机器人跑起来
while True:
userInput=input('>>>')
if userInput in greetings:
print(response_greetings)
elif userInput in questions:
print(response_questions)
elif userInput ='bye':
break
else:
print("I did not understand what you said")
显然上述代码实现的机器人太笨了,我们需要更精准一点的问答。通过关键字来判断这句话的意图(intents)是什么。
import random
from nltk import word_tokenize
#打招呼
greetings=['hi','Hi!','Hi','hello','Hello']
#随机回复
response_greetings=random.choice(greetings)
#假期
questions=['holiday','vacation','weekend']
#随机回复
response=['It was nice','I went to Paris','I just stay at home']
response_questions=random.choice(response)
#问答机器人跑起来
while True:
userInput=input('>>>')
#清理一下输入
cleaned_input=word_tokenize(userInput)
#对比一下关键词,看看具体属于那个问题
if not set(cleaned_input).isdisjoint(greetings):
print(response_greetings)
elif not set(cleaned_input).isdisjoint(questions):
print(response_questions)
elif userInput ='bye':
break
else:
print("I did not understand what you said")
二、NLP基础
三、检索类聊天机器人
四、生成类聊天机器人
五、pytorch基础
六、聊天机器人发展方向
七、基于pytorch聊天机器人代码实战