文档反馈

问题文档片段

问题文档片段包含公式时,显示为空格。

提交类型
issue

有点复杂...

找人问问吧。

请选择提交类型

问题类型
规范和低错类

- 规范和低错类:

- 错别字或拼写错误,标点符号使用错误、公式错误或显示异常。

- 链接错误、空单元格、格式错误。

- 英文中包含中文字符。

- 界面和描述不一致,但不影响操作。

- 表述不通顺,但不影响理解。

- 版本号不匹配:如软件包名称、界面版本号。

易用性

- 易用性:

- 关键步骤错误或缺失,无法指导用户完成任务。

- 缺少主要功能描述、关键词解释、必要前提条件、注意事项等。

- 描述内容存在歧义指代不明、上下文矛盾。

- 逻辑不清晰,该分类、分项、分步骤的没有给出。

正确性

- 正确性:

- 技术原理、功能、支持平台、参数类型、异常报错等描述和软件实现不一致。

- 原理图、架构图等存在错误。

- 命令、命令参数等错误。

- 代码片段错误。

- 命令无法完成对应功能。

- 界面错误,无法指导操作。

- 代码样例运行报错、运行结果不符。

风险提示

- 风险提示:

- 对重要数据或系统存在风险的操作,缺少安全提示。

内容合规

- 内容合规:

- 违反法律法规,涉及政治、领土主权等敏感词。

- 内容侵权。

请选择问题类型

问题描述

点击输入详细问题描述,以帮助我们快速定位问题。

加载文本数据集

Linux Ascend GPU CPU 数据准备 初级 中级 高级

image0image1image2

概述

MindSpore提供的mindspore.dataset模块可以帮助用户构建数据集对象,分批次地读取文本数据。同时,在各个数据集类中还内置了数据处理和数据分词算子,使得数据在训练过程中能够像经过pipeline管道的水一样源源不断地流向训练系统,提升数据训练效果。

此外,MindSpore还支持分布式场景数据加载,用户可以在加载数据集时指定分片数目,具体用法参见数据并行模式加载数据集

下面,本教程将简要演示如何使用MindSpore加载和处理文本数据。

准备环节

  1. 准备文本数据,内容如下:

    Welcome to Beijing
    北京欢迎您!
    我喜欢English!
    
  1. 创建tokenizer.txt文件并复制文本数据到该文件中,将该文件存放在./datasets路径下。执行如下代码完成本步骤。

[1]:
import os

if not os.path.exists('./datasets'):
    os.mkdir('./datasets')
file_handle=open('./datasets/tokenizer.txt',mode='w')
file_handle.write('Welcome to Beijing \n北京欢迎您! \n我喜欢English! \n')
file_handle.close()
! tree ./datasets
./datasets
└── tokenizer.txt

0 directories, 1 file
  1. 导入mindspore.datasetmindspore.dataset.text模块。

[10]:
import mindspore.dataset as ds
import mindspore.dataset.text as text

加载数据集

MindSpore目前支持加载文本领域常用的经典数据集和多种数据存储格式下的数据集,用户也可以通过构建自定义数据集类实现自定义方式的数据加载。各种数据集的详细加载方法,可参考编程指南中数据集加载章节。

下面演示使用MindSpore.dataset模块中的TextFileDataset类加载数据集。

  1. 配置数据集目录,创建数据集对象。

[3]:
DATA_FILE = './datasets/tokenizer.txt'
dataset = ds.TextFileDataset(DATA_FILE, shuffle=False)
  1. 创建字典迭代器,通过迭代器获取数据,可以获得分词前的数据。

[4]:
for data in dataset.create_dict_iterator(output_numpy=True):
    print(text.to_str(data['text']))
Welcome to Beijing
北京欢迎您!
我喜欢English!

数据处理

MindSpore目前支持的数据处理算子及其详细使用方法,可参考编程指南中数据处理章节。

下面演示构建pipeline,对文本数据集进行混洗和文本替换操作。

  1. 对数据集进行混洗。

[5]:
ds.config.set_seed(58)
dataset = dataset.shuffle(buffer_size=3)

for data in dataset.create_dict_iterator(output_numpy=True):
    print(text.to_str(data['text']))
我喜欢English!
Welcome to Beijing
北京欢迎您!
  1. 对数据集进行文本替换。

[6]:
replace_op1 = text.RegexReplace("Beijing", "Shanghai")
replace_op2 = text.RegexReplace("北京", "上海")

dataset = dataset.map(operations=replace_op1)
dataset = dataset.map(operations=replace_op2)

for data in dataset.create_dict_iterator(output_numpy=True):
    print(text.to_str(data['text']))
我喜欢English!
Welcome to Shanghai
上海欢迎您!

数据分词

MindSpore目前支持的数据分词算子及其详细使用方法,可参考编程指南中分词器章节。

下面演示使用WhitespaceTokenizer分词器来分词,该分词是按照空格来进行分词。

  1. 创建tokenizer

[7]:
tokenizer = text.WhitespaceTokenizer()
  1. 执行操作tokenizer

[8]:
dataset = dataset.map(operations=tokenizer)
  1. 创建字典迭代器,通过迭代器获取数据。

[9]:
for data in dataset.create_dict_iterator(num_epochs=1,output_numpy=True):
    print(text.to_str(data['text']).tolist())
['我喜欢English!']
['Welcome', 'to', 'Shanghai']
['上海欢迎您!']