Kaggle word2vec NLP 教程 第三部分:词向量的更多乐趣

  • 时间:
  • 浏览:2

结果很有意思:

让让我们 都发现与第 1 每段中的词袋相比,后边的代码给出了相同(或略差)的结果。

其次,在已发表的文献中,分布式单词向量技术已被证明优于词袋模型。在本文中,在 IMDB 数据集上使用了五种名为段落向量的算法,来生成迄今为止最先进的其他结果。在五种程度上,它比让让我们 都在这里尝试的法律法律依据更好,机会向量平均和聚类会丢失单词顺序,而段落向量会保留单词顺序信息。

Word2Vec 创建语义相关单词的簇,已经 另五种机会的法律法律依据是利用簇中单词的类似性。 以你你这个 法律法律依据来分组向量称为“向量量化”。 为了实现它,让让我们 都首先需用找到单词簇的中心,让让我们 都还才能通过使用聚类算法(如 K-Means)来完成。

以下代码基于第 2 每段的代码构建了行态向量的平均值。

你机会会问:为那些词袋更好?

第三每段的代码在这里。

现在,每个单词的聚类分布都存储在idx中,而原始 Word2Vec 模型中的词汇表仍存储在model.index2word中。 为方便起见,让让我们 都将它们压缩成有三个 多多字典,如下所示:

译者:飞龙

其他要尝试的事情:

无论如保,现在让让我们 都为每个单词分配了有三个 多多簇(或“质心”),让让我们 都还才能定义有三个 多多函数将评论转换为质心袋。 这就像词袋一样,但使用语义相关的簇而都在单个单词:

自豪地采用谷歌翻译

…返回有三个 多多 1x100 的numpy数组。

原文:Bag of Words Meets Bags of Popcorn

具有较大 K 的 K-Means 聚类机会非常慢;以下代码在我的计算机上花了 40 多分钟。 下面,让让我们 都给 K-Means 函数设置有三个 多多计时器,看看它需用多长时间。

现在让让我们 都在了训练好的模型,对单词有其他语义理解,让让我们 都应该如保使用它? 机会你看它的身前,第 2 每段训练的 Word2Vec 模型由词汇表中每个单词的行态向量组成,存储在有三个 多多名为syn0numpy数组中:

让让我们 都发现这产生了比偶然更好的结果,已经 表现比词袋低了好多个百分点。

接下来,使用平均段落向量来训练随机森林。 请注意,与第 1 每段一样,让让我们 都只有使用标记的训练评论来训练模型。

让让我们 都还才能看了那些簇的质量各不相同。 其他是有道理的 - 簇 3 主要含高 名称,而簇 6- 8含高 相关的形容词(簇 6 是我最喜欢的)。 其他人面,簇 5 有点儿神秘:龙虾和鹿有那些一起去之处(除了是两只动物)? 簇 0 更糟糕:阁楼和套房似乎属于有三个 多多东西,但它们似乎不属于苹果手机手机手机6手机手机和护照。 簇 2 含高 …机会与战争有关的词? 我说让让我们 都的算法在形容词上效果最好。

在 K-Means 中,让让我们 都需用设置的有三个 多多参数是“K”,机会是簇的数量。 让让我们 都应该如保决定要创建好多个个簇? 试错法表明,每个簇平均只有三个 单词左右的小簇,比具有多个词的大簇产生更好的结果。 聚类代码如下。 让让我们 都使用 scikit-learn 来执行让让我们 都的 K-Means。

最大的因为是,在让让我们 都的教程中,平均向量和使用质心会选择选择离开单词的顺序,这使得它与词袋的概念非常类似。性能类似(在标准误差范围内)的事实使得所有五种法律法律依据实际上相同。

机会每个单词都在 100 维空间中的向量,让让我们 都还才能使用向量运算来组合每个评论中的单词。 让让我们 都尝试的五种法律法律依据是简单地平均给定的评论中的单词向量(为此,让让我们 都删除了停止词,这只会增加噪音)。

机会向量的元素平均值这么 产生惊人的结果,或许让让我们 都还才能以更聪明的法律法律依据实现? 加权单词向量的标准法律法律依据是应用“tf-idf”权重,它衡量给定单词在给定文档集中的重要程度。 在 Python 中提取 tf-idf 权重的五种法律法律依据,是使用 scikit-learn 的TfidfVectorizer,它具有类似让让我们 都在第 1 每段中使用的CountVectorizer的接口。已经 ,让让我们 歌词 都尝试以你你这个 法律法律依据加权让让我们 都的单词向量时,让让我们 都发现这么 实质的性能改善。

首先,在更多文本上训练 Word2Vec 应该会大大提高性能。谷歌的结果基于从超过十亿字的语料库中学到的单词向量;让让我们 都标记和未标记的训练集合在一起去只有 1100 万字左右。方便的是,Word2Vec 提供了加载由谷歌原始 C 工具输出的任何预训练模型的函数,已经 也还才能用 C 训练模型已经 将其导入 Python。

这有点儿抽象,其他其他让让我们 歌词 都仔细看看让让我们 都的簇含高 那些。 你的簇机会会有所不同,机会 Word2Vec 依赖于随机数种子。 这是有三个 多多循环,打印出簇 0 到 9 的单词:

协议:CC BY-NC-SA 4.0

syn0中的行数是模型词汇表中的单词数,列数对应于让让我们 都在第 2 每段中设置的行态向量的大小。将最小单词计数设置为 40 ,总词汇量为 16,492 个单词,每个词有 100 个行态。 还才能通过以下法律法律依据访问单个单词向量:

IMDB 数据集的有三个 多多挑战是可变长度评论。 让让我们 都需用找到五种法律法律依据来获取单个单词向量并将它们转换为每个评论的长度相同的行态集。

现在,让让我们 都还才能调用那些函数来为每个段落创建平均向量。 以下操作将需用几分钟:

后边的函数将为每个评论提供有三个 多多numpy数组,每个数组的行态都与簇数相等。 最后,让让我们 都为训练和测试集创建了质心袋,已经 训练随机森林并提取结果: