自然语言处理: 第四章Seq2Seq
理论基础
开始之前,首先提出一个问题,电脑是怎么识别人类的命令的,首先人们通过输入代码(编码) ,带入输入给计算机然后再经过处理(解码)得到最终的命令。所以可以看到这其实是一个编码 + 解码的过程。可以看到首先我们将初始的信息通过编码,得到涵盖全局的信息的特征然后再经过解码器去解码从而最终得到需要得到的信息,所以借鉴于Seq2Seq模型就借鉴于这个结构出现了。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3JuQu7iH-1691329327977)(image/seq2seq/1686905754869.png)]](https://i-blog.csdnimg.cn/blog_migrate/52603ff84d316b820f3afc5cfc83db3d.png)
Seq2Seq 是2014年由Llya 大神在 Sequence to Sequence Learning with Neural Networks 一文中提出的,其由几个重要的优势:
- 实现了端到端的学习(神经网络)
- 处理可变长度序列,Seq2Seq可以接受可变长度的序列的输入也可以生成可变长度的输出序列
- 信息的压缩和抽象表示,编码器将上下文的信息整合到一个向量里,然后解码器通过这个向量输出序列
- 可扩展性,很容易与其他神经网络做结合,可以处理很多复杂的问题和常见
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CcK26mpB-1691329327981)(image/seq2seq/1686907307646.png)]](https://i-blog.csdnimg.cn/blog_migrate/4d3306843a64ab72d5c4891d0e5558ec.png)
适合处理的问题, 一些生成的问题:
- 机器翻译
- 文本摘要
- 对话系统
- 问答系统
- 语音识别
- 语音合成
不适合的问题:
- 序列标注,命名实体识别,关系抽取,词性标注
- 文本分类
- 文本相似性
局限性:
- 无法储存长序列的信息,缺少局部的信息
- lstm训练效率比较低下
代码实现
本次代码使用的是中英翻译的数据集,一共有40000多个数据中英互译对。本次任务需要完成的是中 -> 英任务。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6mzRhFXR-1691329327982)(image/seq2seq/1691315436691.png)]](https://i-blog.csdnimg.cn/blog_migrate/6e0dcac539d1af17a2b5e4dd6e3dd2ee.png)
1. 数据预处理
# Step 1: 数据预处理
import jieba # 使用jieba进行中文分词
import re # 使用正则表达式对英文句子进行分词
# 读取句子
with open('all_sentences.txt', 'r', encoding='utf-8') as f:
all_sentences = f.readlines()
# 创建用于存储中英文句子对的列表
sentences = []
# 对每个句子进行处理
for i in r

文章介绍了Seq2Seq模型的理论基础,包括端到端学习和信息的压缩抽象表示。它常用于机器翻译、文本摘要等生成任务,但不适合序列标注等问题。文中还提供了中英翻译数据集的预处理、词汇表构建、数据集构建以及RNN和LSTM版本的Seq2Seq模型的构建和训练过程。
最低0.47元/天 解锁文章
1283

被折叠的 条评论
为什么被折叠?



