首页 > 解决方案 > 在固定长度向量中表示文档集合的最佳方法是什么?

问题描述

我正在尝试构建一个深度神经网络,该网络接收一组文档并预测它所属的类别。

由于每个集合中的文档数量不固定,我的第一次尝试是从 doc2vec 获取文档映射并使用平均值。

训练的准确率高达 90%,但测试的准确率低至 60%。

有没有更好的方法将文档集合表示为固定长度的向量,以便捕获它们共同的单词?

标签: deep-learningsimilarityinformation-retrievaldoc2vecdocument-classification

解决方案


到目前为止,对您的流程的描述有点模糊和不清楚——您可能想为您的问题添加更多细节。

通常,Doc2Vec会将每个文档转换为向量,而不是“文档集合”。

如果您确实尝试将集合折叠为单个向量——例如,通过对多个 doc-vecs 进行平均,或者为包含所有子文档的单词的合成文档计算向量——您可能会丢失有价值的高维结构。

“预测类别”将是一个典型的“分类”问题,并且使用一堆文档(由它们的每个文档向量表示)和已知标签,您可以尝试各种分类器。

我从您的描述中怀疑,您可能只是将一个类别折叠为一个向量,然后通过检查它们最接近哪个现有类别向量来对新文档进行分类。这可以工作——它模糊地是一种 K-Nearest-Neighbors 方法,但是每个类别都减少到一个汇总向量而不是完整的已知示例集,并且每个分类都是通过查看一个最近邻居来进行的。这迫使过程变得简单,这可能与真实类别的“形状”以及真正的 KNN 分类器或其他分类器可以实现的不匹配。

如果测试数据的准确度远低于训练期间观察到的准确度,这可能表明正在发生显着的“过度拟合”:模型本质上是在记忆训练数据的特质,以根据任意相关性“欺骗”答案,而不是学习可概括的规则。让你的模型更小——例如通过减少你的文档向量的维度——在这种情况下可能会有所帮助,因为它可以减少让模型记住训练数据特性的额外状态。更多数据也可以提供帮助——因为更多不同示例中的“噪音”往往会自行抵消,而不是实现可以在较小数据集中学习的那种被误导的重要性。

还有其他方法可以将可变长度的文本转换为固定长度的向量,包括许多基于深度学习算法的方法。但是,这些可能更需要训练数据,而且在尝试替代Doc2Vec.


推荐阅读