d2l机器翻译数据集

着重讲解一下机器翻译数据集的文件处理,以及最终返回了什么

目录

1.载入文件

2.文本预处理

3.词表

 4.集成封装

5.总结返回值


1.载入文件

#@save
d2l.DATA_HUB['fra-eng'] = (d2l.DATA_URL + 'fra-eng.zip',
        '94646ad1522d915e7b0f9296181140edcf86a4f5')
#@save
def read_data_nmt():
    """载⼊“英语-法语”数据集"""
    data_dir = d2l.download_extract('fra-eng')
    with open(os.path.join(data_dir, 'fra.txt'), 'r',
            encoding='utf-8') as f:
        return f.read()
    
raw_text = read_data_nmt()
print(raw_text[:75])

'''
Go.	Va !
Hi.	Salut !
Run!	Cours !
Run!	Courez !
Who?	Qui ?
Wow!	Ça alors !
'''

  注意,文本操作中:f.read()会返回整个文档作为字符串表;f.readlines()会返回每一行作为字符串表。

2.文本预处理

  no_space那里是一个判断函数写法,char in set(',.!?') and prev_char != ' '是一体的,最终return的是True或False。如果char是',.!?'的其中一种,并且prev_char不是空格,则返回True,反之返回False。
  \u202f和\xa0是Unicode编码中的窄空格和不间断空格,替换为空格更方便处理这些字符。
  注意out中列表推导式的写法
  ''.join(out)表示将out中的所有字符串连接起来,每个字符串之间不添加任何字符,因为连接的字符串为空字符''.

#@save
def preprocess_nmt(text):
    """预处理“英语-法语”数据集"""
    def no_space(char, prev_char):
        return char in set(',.!?') and prev_char != ' '
    
    # 使⽤空格替换不间断空格
    # 使⽤⼩写字⺟替换⼤写字⺟
    text = text.replace('\u202f', ' ').replace('\xa0', ' ').lower()
    # 在单词和标点符号之间插⼊空格
    out = [' ' + char if i > 0 and n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值