为 word2vec 模型准备数据
我们将使用流行的 PTB 和 text8 数据集进行演示。
Penn Treebank ( PTB )数据集是在 UPenn 进行的 Penn Treebank 项目的副产品( https://catalog.ldc.upenn.edu/ldc99t42 )。 PTB 项目团队在华尔街日报三年的故事中提取了大约一百万字,并以 Treebank II 风格对其进行了注释。 PTB 数据集有两种形式: 基本示例,大小约为 35 MB, 高级示例,大小约为 235 MB。我们将使用由 929K 字组成的简单数据集进行训练,73K 字用于验证,82K 字用于测试。建议您浏览高级数据集。有关 PTB 数据集的更多详细信息,请访问以下链接: http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz 。
可以从以下链接下载 PTB 数据集:http://www.fit.vutbr.cz/~imikolov/rnnlm/rnn-rt07-example.tar.gz.
text8 数据集是一个较短的清理版本的大型维基百科数据转储,大小约为 1 GB。有关如何创建 text8 数据集的过程,请参见以下链接: http://mattmahoney.net/dc/textdata.html 。
text8 数据集可以从以下链接下载:http://mattmahoney.net/dc/text8.zip.
使用我们的自定义库datasetslib
中的load_data
代码加载数据集:
load_data()
函数执行以下操作:
- 如果数据集的 URL 在本地不可用,它将从数据集的 URL 下载数据存档。
- 由于
PTB
数据有三个文件,它首先从训练文件中读取文本,而对于text8
,它从归档中读取第一个文件。 它将训练文件中的单词转换为词汇表,并为每个词汇单词分配一个唯一的数字,word-id,将其存储在集合
word2id
中,并准备反向词典,这样我们就可以从 ID 中查找单词,并将其存储在集合id2word
中。它使用集合
word2id
将文本文件转换为 ID 序列。- 因此,在
load_data
的末尾,我们在训练数据集中有一系列数字,在集合id2word
中有一个 ID 到字的映射。
让我们看一下从 text8 和 PTB 数据集加载的数据: