machine-learning - 使用词向量进行文档分类

标签 machine-learning nlp vectorization word2vec doc2vec

当我对用自然语言编写的文档进行分类和聚类时,我提出了一个问题......

由于word2vec和glove等在分布式空间中对单词进行向量化,我想知道是否有任何推荐或常用的文档向量化方法使用单词向量。

例如,

Document1: "If you chase two rabbits, you will lose them both."

可以向量化为,

[0.1425, 0.2718, 0.8187, .... , 0.1011]

我知道也称为 doc2vec,该文档有 n 维,就像 word2vec 一样。但这是 1 x n 维度,我一直在测试以找出使用 doc2vec 的限制。

所以,我想知道其他人如何将词向量应用于具有稳定大小的应用程序。

只需将 m 个单词的向量堆叠起来即可形成 m x n 维向量。在这种情况下,向量维度将不统一,因为维度 m 将取决于文档中的单词数量

If: [0.1018, ... , 0.8717]

you: [0.5182, ... , 0.8981]

..: [...]

m th word: [...]

而且这种形式不利于运行某些机器学习算法(例如 CNN)。使用词向量生成稳定形式的文档向量的建议方法是什么?

如果能附上论文就太好了。

谢谢!

最佳答案

当您拥有的只是词向量时,从文本中获取固定大小向量的最简单方法是将所有词向量平均在一起。 (向量可以被加权,但如果它们没有被单位长度归一化,那么它们来自训练的原始大小在某种程度上是其单一含义强度的指标——多义/模糊单词往往具有较小量级的向量。)它可以用于多种用途。

如果训练文本已经与已知类别相关联,则可以对词向量进行专门训练,以更好地进行这样的组合。 Facebook 的 FastText 在其“分类”模式下就做到了这一点;词向量在预测它们出现的文本的输出类别时进行了尽可能多的优化,就像它们在预测其上下文窗口邻居(经典的 word2vec)一样。

“段落向量”技术,通常称为“doc2vec”,为每个训练文本提供一种 float 伪词,这对每个预测都有贡献,因此最终得到一个类似词向量的位置,可以代表完整的文本。文本,而不是单个单词/上下文。

还有许多进一步的变体,包括一些基于更深层次的预测网络(例如“Skip-thought Vectors”),或稍微不同的预测目标(例如“fastSent”中的相邻句子),或其他甚至可以包括混合的泛化训练期间的符号和数字输入/目标(Facebook StarSpace 中的一个选项,它探索与词向量和类似 FastText 的分类需求相关的其他实体向量化可能性)。

如果您不需要将文本折叠为固定大小的向量,而只是比较文本,则还可以使用诸如“Word Mover's Distance”之类的技术,该技术将一个文本的“词向量袋”和另一个文本,并给出相似度分数。

关于machine-learning - 使用词向量进行文档分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50225323/

相关文章:

python - 将 spaCy 模型与 AllenNLP Interpret 或 Textattack 结合使用

r - 使用mapply并保留原始列表的结构

python - 创建在 2D numpy 数组中充当分组样式查找的字典的最快方法?

r - Rpart包生成的测试规则

java - 从 treebank 标签转换为 Java 中的 wordnet 兼容标签?

machine-learning - 输入为 0 的神经网络

命名实体的 Python 自然语言处理

python - 在 Python 中将 32 位整数转换为四个 8 位整数的数组

machine-learning - K-均值 : Only two optimal clusters

python - 机器学习中识别非训练项目的可能性