小熊科技|PyTorch文本:01.聊天机器人教程
在本教程中 , 我们探索一个好玩有趣的循环的序列到序列(sequence-to-sequence)的模型用例 。 我们将用Cornell Movie-Dialogs Corpus 处的电影剧本来训练一个简单的聊天机器人 。
在人工智能研究领域中 , 对话模型是一个非常热门的话题 。 聊天机器人可以在各种设置中找到 , 包括客户服务应用和在线帮助 。 这些机器人通常 由基于检索的模型提供支持 , 这些模型的输出是某些形式问题预先定义的响应 。 在像公司IT服务台这样高度受限制的领域中 , 这些模型可能足够了 ,但是 , 对于更一般的用例它们还不够健壮 。 让一台机器与多领域的人进行有意义的对话是一个远未解决的研究问题 。 最近 , 深度学习热潮已经允许 强大的生成模型 , 如谷歌的神经对话模型Neural Conversational Model , 这标志着向多领域生成对话模型迈出了一大步 。在本教程中 , 我们将在PyTorch中实现这种模型 。
> hello?Bot: hello .> where am I?Bot: you re in a hospital .> who are you?Bot: i m a lawyer .> how are you doing?Bot: i m fine .> are you my friend?Bot: no .> you're under arrestBot: i m trying to help you !> i'm just kiddingBot: i m sorry .> where are you from?Bot: san francisco .> it's time for me to leaveBot: i know .> goodbyeBot: goodbye .教程要点
对Cornell Movie-Dialogs Corpus数据集的加载和预处理
用Luong attention mechanism(s)实现一个sequence-to-sequence模型
使用小批量数据联合训练解码器和编码器模型
实现贪婪搜索解码模块
与训练好的聊天机器人互动
鸣谢
本教程借鉴以下源码:
Yuan-Kuei Wu’s pytorch-chatbot implementation:
Sean Robertson’s practical-pytorch seq2seq-translation example:
FloydHub’s Cornell Movie Corpus preprocessing code:
1.下载数据文件下载数据文件点击这里并将其放入到当前目录下的data/ 文件夹下 。 之后我们引入一些必须的包 。
from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionfrom __future__ import unicode_literalsimport torchfrom torch.jit import script, traceimport torch.nn as nnfrom torch import optimimport torch.nn.functional as Fimport csvimport randomimport reimport osimport unicodedataimport codecsfrom io import openimport itertoolsimport mathUSE_CUDA = torch.cuda.is_available()device = torch.device("cuda" if USE_CUDA else "cpu")2.加载和预处理数据下一步就是格式化处理我们的数据文件并将数据加载到我们可以使用的结构中 。Cornell Movie-Dialogs Corpus是一个丰富的电影角色对话数据集:
10,292 对电影角色之间的220,579次对话
617部电影中的9,035个电影角色
总共304,713发言量
这个数据集庞大而多样 , 在语言形式、时间段、情感上等都有很大的变化 。 我们希望这种多样性使我们的模型能够适应多种形式的输入和查询 。
首先 , 我们通过数据文件的某些行来查看原始数据的格式
corpus_name = "cornell movie-dialogs corpus"corpus = os.path.join("data", corpus_name)def printLines(file, n=10):with open(file, 'rb') as datafile:lines = datafile.readlines()for line in lines[:n]:print(line)printLines(os.path.join(corpus, "movie_lines.txt"))输出结果
b'L1045 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ They do not!\n'b'L1044 +++$+++ u2 +++$+++ m0 +++$+++ CAMERON +++$+++ They do to!\n'b'L985 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ I hope so.\n'b'L984 +++$+++ u2 +++$+++ m0 +++$+++ CAMERON +++$+++ She okay?\n'b"L925 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ Let's go.\n"b'L924 +++$+++ u2 +++$+++ m0 +++$+++ CAMERON +++$+++ Wow\n'b"L872 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ Okay -- you're gonna need to learn how to lie.\n"b'L871 +++$+++ u2 +++$+++ m0 +++$+++ CAMERON +++$+++ No\n'b'L870 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ I\'m kidding.You know how sometimes you just become this "persona"?And you don\'t know how to quit?\n'b'L869 +++$+++ u0 +++$+++ m0 +++$+++ BIANCA +++$+++ Like my fear of wearing pastels?\n'
推荐阅读
- 所持股份|万兴科技:公司控股股东、实际控制人吴太兵质押150万股
- 发布公告|数量过半!博创科技:天通股份累计减持约150万股
- 英雄科技聊数码|蔡崇信有实力买下篮网,那身价3200亿的马云,能买下几支NBA球队
- 科技前沿阵地|涨疯了!海思安防芯片遭哄抬“围剿”
- 月影浓|吴亦凡机械造型走秀 垫肩披风搭银框眼镜科技感足
- 中国历史发展过程|中国历史发展过程.中国的科技史界过去半个多世纪
- 天津|桂发祥:不再持有昆汀科技股份
- 消费|减持!天通股份:减持博创科技约32万股
- 处罚|老周侃股:吉鑫科技大股东应补偿踩雷投资者
- 华中科技大学|杯具!超本科线95分,本科有路不走,却梦幻般碰瓷,撞开专科的门
