用固定长度向量表示文档集合的最佳方法是什么?

时间:2019-06-12 21:35:42

标签: deep-learning similarity information-retrieval doc2vec document-classification

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

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

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

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

1 个答案:

答案 0 :(得分:0)

到目前为止,您对过程的描述还有些模糊且不清楚-您可能想在问题中添加更多细节。

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

如果您确实尝试将集合折叠为单个矢量-例如,通过平均多个doc-vecs,或为包含所有子文档字词的合成文档计算矢量-您可能会失去价值较高的尺寸结构。

要“预测类别”将是一个典型的“分类”问题,对于一堆文档(以其每文档向量表示)和已知标签,您可以尝试各种分类器。

我从您的描述中怀疑,您可能只是将一个类别折叠为一个矢量,然后通过检查新文档是否与之最接近来对新文档进行分类。这行之有效–大概是一种K-Nearest-Neighbors方法,但是每个类别都简化为一个摘要向量,而不是完整的已知示例集合,并且每个分类仅通过查看一个最近的邻居进行。这迫使过程变得简单,可能与真实类别的“形状”不匹配,并且可能会实现真正的KNN分类器或其他分类器。

如果测试数据的准确性远远低于训练期间观察到的准确性,则表明存在严重的“过度拟合”:模型实质上是将训练数据的特质存储为基于任意相关性的答案“作弊” ,而不是学习通用规则。在这种情况下,通过给模型较少的额外状态来记住训练数据的特殊性,可以使模型更小(例如通过减小文档向量的维数)可能会有所帮助。更多的数据也可以提供帮助-因为更多示例中的“噪声”趋向于抵消自身,而不是达到较小数据集中可以理解的那种误导性重要性。

还有其他将可变长度文本转换为固定长度向量的方法,包括许多基于深度学习算法的方法。但是,这些可能甚至需要更多的训练数据,并且在尝试使用Doc2Vec的这些环境之前,您似乎还需要改善其他因素。