文档详情

深度学习案例教程 教案7.5文本翻译-准备数据.docx

发布:2025-02-28约2.52千字共5页下载文档
文本预览下载声明

05文本翻译-准备数据

(p29)我们本节来开始学习实践任务,对于文本的翻译。首先我们需要去准备数据,就是准备我们文本翻译的数据集。这个项目我们就是准备英文与中文的翻译的相关数据。

我们的数据来自于Tatoeba网站,我们去可以去他的上面去下载对应的数据集。他的这个数据以制表符斜杠T的风格区分每一个样本。

我们看一下下面这个样本,有这样的一个英文hello,然后对应一个中文,你好。

然后后面是它对应的版本号。这是数据集的一个样本。

我们准备数据的一个任务就是对每个单词构建唯一索引,以便后面网络中能够识别每个单词,因为网络只能做数值计算,对于文字,我们可以给每个词语标记一个序号,网络可以通过这些序号来对应到文字。另外,我们也需要把中文英文这样的词语成对整理起来。

怎么去做这样的一个翻译对列表呢。

接来下我们就从代码角度来一步一步讲解数据准备的过程

(p30)首先我们导相关模块。

前两行几个包用来配置环境以及用来对文件进行操作。

接下来3个包用来对字符进行操作,比如这里的re模块,我们可以用它来做正则匹配,用来解析样本数据。。。。。。。

接下来两个包用来对数据进行处理,其中random包用来对数据进行打乱等随机操作,numpy可以用来对数据进行数值上的一些处理计算。

接下来4行都是从torch中加载需要用到的模块。其中nn模块包含网络搭建所需要的各种层的函数,opitm中包含来各类优化器,F模块包含了一些基础的计算函数。

最后两行加载了可视化的模块。用来展示数据处理过程中的一些统计信息。

(p31)接下来这一句,设置好模型的运行设备,是在CPU还是在GPU上面运行计算,这里用过torch.cuda.is_available()来识别是否有GPU计算资源。如果计算机有GPU,并且已经安装好驱动,那么就会被torch自动识别到,于是device变量就是GPU否则就是CPU。对于我们的数据来说,加载的时候,也是需要放到对应的GPU还是CPU中。

接下来两句,配置好SOS_token以及EOS_token他们分别表示序列的开始和结束。也就是说,模型如果识别到这两个token那就知道当前的文本位置是否是开始或者结束了。

(p32)接下来Lang的类就是用来处理数据的类。这里面写了3个方法,__init__:初始化,第二个addSentence方法:就是加入一句话,第三个方法addWord:就是加入一个词语。接下来我们看一下他们具体是怎么实现的。

首先我们看下面初始化函数,第一个属性,定义一个name名字,下面word2index是一个字典,用来记录每个词语的下标,比如说“我”这个词语,在字典中是第几个词语,做一个这样的对应。接下来word2count也是一个字典,用来记录每个词语出现的次数,index2word字典则是和word2index字典的功能相反,这里是记录每个序号对应的词语是什么,也就是说word2index是通过文字查序号,index2word是通过序号查文字,这里已经标记了两个词语的序号,就是刚才说的开始0“SOS”,结束1“EOS”,这两个特殊的字。下面n_words用来记录当前字典里面一共有几个词语,初始已经有两个了,所以这里是2.

(p33)下面addSentence,他的功能是向数据类中添加一个句子,他输进去的一个句子分解完以后,再调用下面addWord方法一个一个词语添加。这里对输入的句子按照空格切分。

下面addWord,他的功能就是添加一个词,第一句ifwordnotinself.word2index,就是如果这个词没出现过,那么接下来我们就往字典里面添加这个词,下面4句作用分别是,1、向word2index字典里面新增这个单词,以及给这个词语标号为n_words,因为后面n_words会不断自增,所以每个词语的标号都会不一样。2、在word2count中新建这个词,并且个数为1个,因为之前没有出现过这个词语,3、在index2word字典中,新建一个序号,让这个序号对应的词为当前这个词,4、让总的词数量+1。接下来else,也就是如果这个词本来就在词库中了,我们只需要更新word2count,记录这个词出现的次数+1就可以了。

(p34)下面我们还需要定义3个函数,分别是:unicodeToAscii:用来文本编码格式转换;normalizeString:用来对文本进行标准化,以及readLangs:读取文本。我们一一解释一下。

下面unicodeToAscii方法就是文字编码转化,我们数据集是unicode编码,这里需要转化为ascii编码。再下面normalizeString就是对文本进行标准化,比如,大小写统一,这里都是转化为小写,一般而言,英文大小写对于其含义没有太大的差别,反而如

显示全部
相似文档