【发布时间】:2020-07-16 15:56:20
【问题描述】:
我有一个不同酒店的评论数据集。
我正在尝试使用酒店评论找出类似的酒店。所以,我使用Doc2vec 算法来实现这一点。
有没有什么方法可以使用Gensim 测量Doc2Vec 模型的准确性,而不是使用Gensim 的most_similar() 函数评估结果?
【问题讨论】:
标签: gensim unsupervised-learning doc2vec
我有一个不同酒店的评论数据集。
我正在尝试使用酒店评论找出类似的酒店。所以,我使用Doc2vec 算法来实现这一点。
有没有什么方法可以使用Gensim 测量Doc2Vec 模型的准确性,而不是使用Gensim 的most_similar() 函数评估结果?
【问题讨论】:
标签: gensim unsupervised-learning doc2vec
由于Doc2Vec(又名“段落向量”算法)是一种无监督方法,因此没有严格的正确或错误结果 - 只是经过训练的模型对某些下游任务更好或更差。
您个人如何根据自己的想法确定结果是否对您的项目有价值?
您必须将其中的一些判断纳入一个可重复的过程中——例如,一种方法可能是手工制作一组酒店列表,根据您的专业人类判断,这些酒店“应该更相似”彼此比其他人,或者可能在彼此的“前 N”个最接近的结果中。然后将Doc2Vec 模型与其他方法(或Doc2Vec 的多个替代参数化运行)相比,根据该理想进行评分。
您也许可以从现有数据源中引导一些“应该更相似”的对。例如,也许同一连锁店中的两家酒店“应该更相似”,而不是随机的第三家酒店。 (因此,他们的品牌名称的外部数据将指导您的评估,理想情况下,如果您确定品牌名称没有泄漏到用于训练模型的文档文本中。)或者也许,两家酒店在地理上和在价格方面,彼此之间“应该更相似”而不是随机的三分之一。
但是对于所有可能的文档和项目目标的域上的这种模糊表示,没有标准/自动的“准确性”概念。您需要开发自己的自定义评估,以便能够在算法之间进行选择,或调整算法。
【讨论】:
我使用主题建模(LDA 与 gensim/mallet)最近邻作为基线来比较 Doc2Vec 的结果。诚然这是一种非常粗略的方式,但至少你可以看到 Doc2Vec 的结果在某种程度上与主题模型的结果是否一致。
假设您有 10 个来自 Doc2vec 和主题模型的最近邻用于输入查询/文档,您可以在这两个集合之间进行 Jaccard 相似性或 NDCG 以查看它们的接近程度。这将使您对 doc2vec 结果充满信心。理论上,Doc2Vec 结果应该比主题建模更好,因为主题建模无法找到语义相似的文档,如 Doc2vec。因此,如果两者之间的结果差异很大,您可以引入人工判断。
【讨论】: