Doc2Vec.infer_vector每次都会在特定的训练模型上保持不同的结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Doc2Vec.infer_vector每次都会在特定的训练模型上保持不同的结果相关的知识,希望对你有一定的参考价值。

我正在尝试遵循这里提到的官方Doc2Vec Gensim教程 - https://github.com/RaRe-Technologies/gensim/blob/develop/docs/notebooks/doc2vec-lee.ipynb

我修改了第10行中的代码以确定给定查询的最佳匹配文档,每次运行时,我得到一个完全不同的结果集。我在笔记本第10行的新代码是:

inferred_vector = model.infer_vector(['only', 'you', 'can', 'prevent', 'forest', 'fires']) sims = model.docvecs.most_similar([inferred_vector], topn=len(model.docvecs)) rank = [docid for docid, sim in sims] print(rank)

每次运行这段代码时,我都会获得与此查询匹配的不同文档集:“只有您可以防止森林火灾”。差别很明显,似乎并不匹配。

Doc2Vec不适合查询和信息提取吗?还是有bug?

答案

查看代码,在infer_vector中,您使用的算法部分是非确定性的。单词向量的初始化是确定性的 - 参见seeded_vector的代码,但是当我们进一步观察时,即单词的随机采样时,负采样(每次迭代仅更新单词向量的样本)可能导致非确定性输出(感谢@gojomo)。

    def seeded_vector(self, seed_string):
        """Create one 'random' vector (but deterministic by seed_string)"""
        # Note: built-in hash() may vary by Python version or even (in Py3.x) per launch
        once = random.RandomState(self.hashfxn(seed_string) & 0xffffffff)
        return (once.rand(self.vector_size) - 0.5) / self.vector_size

以上是关于Doc2Vec.infer_vector每次都会在特定的训练模型上保持不同的结果的主要内容,如果未能解决你的问题,请参考以下文章

每次我单击自动填充按钮时,它都会在字段中返回“nil”而不是保存的字符串

[每次运行代码时,我都会在python上返回文本IO包装器

每次打开visual studio2019都会在桌面生成一个.vs文件夹?

每次我运行 npx create-react-app my-app 时,它都会在 npm start 后显示这个 html webpack 错误

我用easyui输出的几列数据,做了一个双击事件,但是每次双击之前都会在鼠标的地方选中一点东西,如

为啥eclipse每次新建项目时都会出现一个错误弹窗,并会在src下自动生成module-info.java文档?