我试图将文档向量对(Doc2Vec,每个文档300个特征)分类为相似/不相似。我尝试了远距离色彩(余弦等)以及文档大小等附加功能,但没有达到完美的效果,特别是因为我怀疑,只有部分功能对我的问题有意义。
将两个向量馈送到分类器(LogisticRegression,SVM等)的简单但有效的方法是什么?
abs(vec1 -vec2)
但这比距离混乱更糟糕是否有最先进的方法来对特征向量之间的相似性或关系进行分类?或者,如果有一个concurent方法,哪一个更喜欢哪个问题/分类器?
通常,您的目标是对文档进行矢量化(例如通过Doc2Vec
),以给出向量,其中向量之间的相似性是有用的连续相似性度量。 (通常这是余弦相似性,但在某些情况下,欧几里德距离也值得尝试。)
如果从Doc2Vec
阶段出来的向量还没有表现出来,那么首先要做的是调试和优化该过程。这可能涉及:
Doc2Vec
元参数和模式,以确保生成的向量对最终目标中重要的相似性敏感。如果没有关于您的数据大小和特征,Doc2Vec
选择/代码以及最终目标的更多详细信息,很难说更多关于改进这一步骤。
你是如何决定两个文件是否“足够相似”?您有多少这样的评估数据可以帮助以可重复的,定量的方式对不同的Doc2Vec
模型进行评分。 (能够进行这样的自动评分将让你测试更多的Doc2Vec
排列。)是否存在doc对的例子,其中简单的doc-vector余弦相似性运行良好,或者效果不好?
到目前为止,我看到你选择的单词中有两个红旗:
Doc2Vec
并不真正找到独立的“300个功能”。它是一个单一的300维“密集”“嵌入”矢量。每个方向 - 不仅仅是300个轴 - 都可能是有意义的。因此,即使某些“方向”对您的需求更为重要,它们也不可能与精确的尺寸轴完全相关。有可能(v1 - v2)
差异的分类器,或(v1 || v2)
连接,可以帮助改进“相似或不相似”的决定,但你需要大量的训练数据,也许是一个非常复杂的分类器。