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

  • 时间:
  • 浏览:4
  • 来源:大发彩神UU快三_大发神彩UU快三官方

其他要尝试的事情:

亲戚亲戚朋友发现与第 1 每种中的词袋相比,上边的代码给出了相同(或略差)的结果。

可能性每个单词也有 200 维空间中的向量,亲戚亲戚朋友需用使用向量运算来组合每个评论中的单词。 亲戚亲戚朋友尝试的本身生活法律法律措施是简单地平均给定的评论中的单词向量(为此,亲戚亲戚朋友删除了停止词,这只会增加噪音)。

亲戚亲戚朋友需用看多哪此簇的质量各不相同。 其他是有道理的 - 簇 3 主要蕴含名称,而簇 6- 8蕴含相关的形容词(簇 6 是我最喜欢的)。 我本人面,簇 5 有点痛 神秘:龙虾和鹿有哪此同时之处(除了是两只动物)? 簇 0 更糟糕:阁楼和套房似乎属于一个多 东西,但它们似乎不属于苹果56手机手机5苹果56手机手机5和护照。 簇 2 蕴含…可能性与战争有关的词? 你说亲戚亲戚朋友的算法在形容词上效果最好。

现在亲戚亲戚朋友有了训练好的模型,对单词有其他语义理解,亲戚亲戚朋友应该怎样使用它? 可能性你看它的头上,第 2 每种训练的 Word2Vec 模型由词汇表中每个单词的结构向量组成,存储在一个多 名为syn0numpy数组中:

具有较大 K 的 K-Means 聚类可能性非常慢;以下代码在我的计算机上花了 40 多分钟。 下面,亲戚亲戚朋友给 K-Means 函数设置一个多 计时器,看看它需用多长时间。

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

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

现在,亲戚亲戚朋友需用调用哪此函数来为每个段落创建平均向量。 以下操作将需用几分钟:

原文:Bag of Words Meets Bags of Popcorn

最大的原困是,在亲戚亲戚朋友的教程中,平均向量和使用质心会失去单词的顺序,这使得它与词袋的概念非常这名 。性能这名 (在标准误差范围内)的事实使得所有本身生活法律法律措施实际上相同。

接下来,使用平均段落向量来训练随机森林。 请注意,与第 1 每种一样,亲戚亲戚朋友都能能 了使用标记的训练评论来训练模型。

可能性向量的元素平均值没了产生惊人的结果,或许亲戚亲戚朋友需用以更聪明的法律法律措施实现? 加权单词向量的标准法律法律措施是应用“tf-idf”权重,它衡量给定单词在给定文档集中的重要程度。 在 Python 中提取 tf-idf 权重的本身生活法律法律措施,是使用 scikit-learn 的TfidfVectorizer,它具有这名 于亲戚亲戚朋友在第 1 每种中使用的CountVectorizer的接口。之后,当亲戚亲戚朋友尝试以这名 法律法律措施加权亲戚亲戚朋友的单词向量时,亲戚亲戚朋友发现没了实质的性能改善。

协议:CC BY-NC-SA 4.0

第三每种的代码在这里。

你可能性会问:为哪此词袋更好?

…返回一个多 1x200 的numpy数组。

这有点痛 抽象,全都让亲戚亲戚朋友仔细看看亲戚亲戚朋友的簇蕴含哪此。 你的簇可能性会有所不同,可能性 Word2Vec 依赖于随机数种子。 这是一个多 循环,打印出簇 0 到 9 的单词:

自豪地采用谷歌翻译

Word2Vec 创建语义相关单词的簇,之后另本身生活可能性的法律法律措施是利用簇中单词的这名 性。 以这名 法律法律措施来分组向量称为“向量量化”。 为了实现它,亲戚亲戚朋友首先需用找到单词簇的中心,亲戚亲戚朋友需用通过使用聚类算法(如 K-Means)来完成。

结果很有意思:

亲戚亲戚朋友发现这产生了比偶然更好的结果,之后表现比词袋低了好多个百分点。

syn0中的行数是模型词汇表中的单词数,列数对应于亲戚亲戚朋友在第 2 每种中设置的结构向量的大小。将最小单词计数设置为 40 ,总词汇量为 16,492 个单词,每个词有 200 个结构。 需用通过以下法律法律措施访问单个单词向量:

在 K-Means 中,亲戚亲戚朋友需用设置的一个多 参数是“K”,可能性是簇的数量。 亲戚亲戚朋友应该怎样决定要创建好多个个簇? 试错法表明,每个簇平均都能能 了二个单词左右的小簇,比具有多个词的大簇产生更好的结果。 聚类代码如下。 亲戚亲戚朋友使用 scikit-learn 来执行亲戚亲戚朋友的 K-Means。

译者:飞龙

以下代码基于第 2 每种的代码构建了结构向量的平均值。

首先,在更多文本上训练 Word2Vec 应该会大大提高性能。谷歌的结果基于从超过十亿字的语料库中学到的单词向量;亲戚亲戚朋友标记和未标记的训练集合在同时都能能 了 12000 万字左右。方便的是,Word2Vec 提供了加载由谷歌原始 C 工具输出的任何预训练模型的函数,之后也需用用 C 训练模型之后将其导入 Python。

上边的函数将为每个评论提供一个多 numpy数组,每个数组的结构都与簇数相等。 最后,亲戚亲戚朋友为训练和测试集创建了质心袋,之后训练随机森林并提取结果:

无论怎样,现在亲戚亲戚朋友为每个单词分配了一个多 簇(或“质心”),亲戚亲戚朋友需用定义一个多 函数将评论转换为质心袋。 这就像词袋一样,但使用语义相关的簇而也有单个单词:

IMDB 数据集的一个多 挑战是可变长度评论。 亲戚亲戚朋友需用找到本身生活法律法律措施来获取单个单词向量并将它们转换为每个评论的长度相同的结构集。