使用 Keras 进行词嵌入

词嵌入是一种将词汇表中的单词映射到密集实数向量的方法,其中语义相似的单词被映射到附近的点。在此示例中,我们将使用 Keras 为 Amazon Fine Foods Reviews 数据集生成词嵌入。

来源:RStudio AI博客

简介

词嵌入是一种将词汇表中的单词映射到密集实数向量的方法,其中语义相似的单词被映射到附近的点。通过对相似的单词进行分组,在这个向量空间中表示单词有助于算法在自然语言处理任务(如句法解析和情感分析)中实现更好的性能。例如,我们期望在嵌入空间中“猫”和“狗”被映射到附近的点,因为它们都是动物、哺乳动物、宠物等。

在本教程中,我们将使用 keras 包在 R 中实现由 Mikolov 等人创建的 skip-gram 模型。skip-gram 模型是 word2vec 的一种,word2vec 是一类计算效率高的预测模型,用于从原始文本中学习词嵌入。我们不会讨论关于嵌入和 skip-gram 模型的理论细节。如果您想了解更多详细信息,可以阅读上面链接的论文。 TensorFlow 单词向量表示教程包含更多详细信息,使用 R 进行深度学习笔记本中也包含有关嵌入的详细信息。

Mikolov 等人 keras 单词的向量表示 使用 R 进行深度学习 有关嵌入的笔记本

还有其他方法可以创建单词的向量表示。 例如,GloVe 嵌入由 Dmitriy Selivanov 在 text2vec 包中实现。 Julia Silge 的博客文章“具有整洁数据原则的词向量”中还描述了一种整洁方法。

text2vec 具有整洁数据原则的词向量

获取数据

我们将使用亚马逊美食评论数据集。 该数据集包含来自亚马逊的美食评论。数据跨越 10 多年,包括截至 2012 年 10 月的所有约 500,000 条评论。评论包括产品和用户信息、评级和叙述文本。

Amazon Fine Foods 评论数据集

可以通过运行以下命令下载数据(约 116MB):

download.file("https://snap.stanford.edu/data/finefoods.txt.gz", "finefoods.txt.gz")
download.file("https://snap.stanford.edu/data/finefoods.txt.gz", "finefoods.txt.gz") download.file ( )