如何衡量 Doc2vec 模型的准确性?

How to measure the accuracy of a Doc2vec model?

我有一个不同酒店评论的数据集。 我正在尝试使用酒店评论找出类似的酒店。所以,我正在使用 Doc2vec 算法来实现这一点。

有没有什么方法可以使用 Gensim 来衡量 Doc2Vec 模型的准确性,而不是使用 Gensimmost_similar() 函数来评估结果?

由于 Doc2Vec(又名 'Paragraph Vector' 算法)是一种无监督方法,因此没有严格意义上的正确或错误结果——只是经过训练的模型对于某些下游任务来说更好或更差。

就您个人而言,您如何确定结果对您的项目是否有价值?

您必须将一些判断纳入可重复的过程中——例如,一种方法可能是手工制作一对酒店列表,根据您的专家级判断,"ought to be more similar"彼此比其他人,或者可能在彼此的 "top N" 最接近的结果中。然后将 Doc2Vec 模型与其他方法(或 Doc2Vec 的多个可选参数化运行)进行比较。

您可能能够从现有数据源中bootstrap 一些 "ought to be more similar" 对。例如,可能有两家酒店在同一连锁 "ought to be more similar" 中,而不是某个随机的第三家酒店。 (因此,他们品牌名称的外部数据将指导您的评估,理想情况下,如果您确定品牌名称没有泄漏到用于训练模型的文档文本中。)或者,两家酒店在地理上和价格方面彼此接近 "ought to be more similar" 而不是随机的三分之一。

但是对于所有可能的文档和项目目标的域上的这种模糊表示,没有 standard/automatic "accuracy" 的想法。您需要开发自己的自定义评估,以便能够在算法之间进行选择或调整算法。

我使用主题建模(LDA with gensim/mallet)最近邻作为基线来比较 Doc2Vec 的结果。当然这是非常粗略的方式,但至少你可以看到 Doc2Vec 结果是否在某种程度上与主题模型的结果一致。

假设您有 10 个来自 Doc2vec 和主题模型的最近邻居用于输入 query/doc,您可以在这两个集合之间进行 Jaccard 相似度或 NDCG 以查看它们有多接近。这将使您对 doc2vec 结果充满信心。理论上 Doc2Vec 结果应该比主题建模更好,因为主题建模无法找到像 Doc2vec 这样语义相似的文档。因此,如果两者之间的结果差异很大,您可以引入人为判断。