有没有办法使用预训练的doc2vec模型来评估某些文档数据集

时间:2019-06-04 13:23:49

标签: python numpy gensim

最近我正在做一项研究,目的是对大型文本数据库进行无监督的群集。首先,我尝试了词袋法,然后尝试了几种聚类算法,这些算法给了我很好的结果,但是现在,我正尝试进入doc2vec表示,这似乎对我不起作用,我无法加载准备好的模型并使用它,相反,训练我自己的方法不会证明任何结果。

我试图在1万个文本上训练我的模型

model = gensim.models.doc2vec.Doc2Vec(vector_size=500, min_count=2, epochs=100,workers=8)

(每个大约20-50个字),但是gensim提出的相似度得分

sims = model.docvecs.most_similar([inferred_vector], topn=len(model.docvecs))

的工作效果比我的模型中的词袋测试差很多。 更糟糕的是,我的意思是相同或几乎相同的文本具有与我没有任何联系的文本兼容的相似度分数。因此,我决定使用Is there pre-trained doc2vec model?中的模型来使用一些可能在单词之间具有更多联系的预训练模型。抱歉,前驱有点漫长,但问题是我该如何插入?有人可以提供一些想法吗,如何使用https://github.com/jhlau/doc2vec中加载的gensim模型将我自己的文本数据集转换为相同长度的向量?我的数据是经过预处理的(有梗,无标点,小写,无nlst.corpus停用词),如果需要,我可以从列表,数据框或文件中传递数据,代码问题是如何将我自己的数据传递给经过训练的模型?任何帮助将不胜感激。

UPD:输出让我感到难过

  

培训文件(6134):“使用中级纸质考试中型一   周必须记录日常使用中型广播电视报纸杂志   电影录像等唤醒收音机警报听交通报告通勤获取   新闻看体育肥皂剧看电视使用互联网工作家庭阅读书   看电影使用数据收集日记基础分析检查   信息使用我们满足模式讨论教科书我们   满足的文章提供了也许携带小笔记本的日子   输入重要的夜晚帮助保持井井有条的智能手机使用说明应用程序   追踪媒体是否需要日记信任告诉马上告诉纸是否   实际上保留了一本中型日记不久可能的命令给充足   时间完成日记写论文完成日记需要写页面   论文使用媒介功能分析理论说最好的话   理解理解使用我们的满足模式   框架个人使用媒介基础分析特别是类别   讨论过发布的dominick文章适用概念预期的媒体使用量   中等认知社会效用归属退出   在讨论的框架思想中得出结论使用分析习惯   文字文章概念必须清楚地包含铰接纸通用   错误学生做作业告诉中等习惯失败分析习惯   在上下文中,我们的满足模型必须包含想法文件»

     

类似文件(6130,0.6926988363265991):«使用中型纸质考试中型习惯一周必须绘制日用型中型收音机   电视报纸杂志电影视频等唤醒广播警报听   交通报告通勤获取新闻观看体育肥皂剧观看电视使用   互联网工作家庭看书看电影使用数据收集期刊依据   使用我们讨论的满足模型分析检查信息   教科书我们满足的文章提供的也许携带小   笔记本日输入材料晚上帮助保持井井有条   使用便笺应用追踪媒体需要打开日记信任立即告诉   纸是否实际上保存了一本初中日记即将可能的命令   给充足的时间完成日记写论文完成日记的需要   写页面论文使用媒介功能分析理论说些什么   最好的理解,用于我们的满足模型提供   框架个人使用媒介基础分析特别是类别   讨论过发布的dominick文章适用概念预期的媒体使用量   中等认知社会效用归属退出   在讨论的框架思想中得出结论使用分析习惯   文字文章概念必须清楚地包含铰接纸通用   错误学生做作业告诉中等习惯失败分析习惯   在上下文中,我们的满足模型必须包含想法文件»

这看起来完全可以,但是要看其他输出

  

培训文件(1185):«摄影加里·温诺格兰德想要纸   生活作品加里·威诺格兰德(Garry Winogrand)著名街头摄影师也受到影响   街头摄影旨在考虑周到的想象力处理细节   参考文献研究材料学术论文大学水平»

     

类似文件(3449,0.6901006698608398):«唐朝写页面   散文唐代散文佛教唐代姓名文物   唐朝讨论他们历史标题段落信息   唐代杂文»

向我们展示了在系统中最相似的两个完全相同的文本和两个相似的超级不同文本之间的相似性得分几乎相同,这使得对数据做任何事情都成问题。 要获得我使用的最相似的文件

 sims = model.docvecs.most_similar([inferred_vector], topn=len(model.docvecs))

1 个答案:

答案 0 :(得分:1)

https://github.com/jhlau/doc2vec中的模型基于gensim早期版本的自定义派生,因此您必须找到/使用它才能使它们可用。

来自通用数据集(例如Wikipedia)的模型可能无法理解您所需的特定领域单词,即使在共享单词的地方,这些单词的有效含义也可能会有所不同。此外,要使用其他模型来推断数据上的向量,您应确保以与处理训练数据相同的方式对文本进行预处理/标记。

因此,最好在与域相关的数据上使用您自己训练过的模型-以便充分理解它。

与已发布的Doc2Vec作品相比,

每20k单词的10k文档有点小,但也许可以。试图从较小的数据集中获取500维向量可能是一个问题。 (使用较少的数据,可能需要较少的向量维数和更多的训练迭代次数。)

如果在自训练模型上的结果不令人满意,则训练和推理代码中可能还会存在其他问题(问题中尚未显示)。与基线相比(例如您提到的词袋表示法),还可以看到更具体的示例/细节,说明您的结果不令人满意。如果将这些详细信息添加到问题中,则可能会提供其他建议。