- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一种算法,该算法能够显示与特定文档相似的前 n 个文档。为此,我使用了 gensim doc2vec。代码如下:
model = gensim.models.doc2vec.Doc2Vec(size=400, window=8, min_count=5, workers = 11,
dm=0,alpha = 0.025, min_alpha = 0.025, dbow_words = 1)
model.build_vocab(train_corpus)
for x in xrange(10):
model.train(train_corpus)
model.alpha -= 0.002
model.min_alpha = model.alpha
model.train(train_corpus)
model.save('model_EN_BigTrain')
sims = model.docvecs.most_similar([408], topn=10)
sims var 应该给我 10 个元组,第一个元素是文档的 ID,第二个元素是分数。问题是某些 ID 与我的训练数据中的任何文档都不对应。
一段时间以来,我一直在尝试理解不在我的训练数据中的 ID,但我没有看到任何逻辑。
Ps: 这是我用来创建我的 train_corpus 的代码
def readData(train_corpus, jData):
print("The response contains {0} properties".format(len(jData)))
print("\n")
for i in xrange(len(jData)):
print "> Reading offers from Aux array"
if i % 10 == 0:
print ">>", i, "offers processed..."
train_corpus.append(gensim.models.doc2vec.TaggedDocument(gensim.utils.simple_preprocess(jData[i][1]), tags=[jData[i][0]]))
print "> Finished processing offers"
作为 aux 数组的每个位置,一个数组中的位置 0 是一个 int(我想成为 id),位置 1 是一个描述
提前致谢。
最佳答案
您是否使用纯整数 ID 作为您的 标签
,但没有完全使用从 0 到您的 MAX_DOC_ID
的所有整数?
如果是这样,那就可以解释该范围内标签的出现。当您使用纯整数时,gensim Doc2Vec 避免创建字典映射提供的标签到其内部向量数组中的索引位置——并且只使用整数本身。
因此必须分配内部向量数组以包含 MAX_DOC_ID + 1
行。与所有位置一样,与未使用的 ID 对应的任何行仍被初始化为随机向量,但不会接受来自实际文本示例的任何训练以将它们插入有意义的相对位置。因此,这些随机初始化但未经训练的向量可能会出现在以后的 most_similar()
结果中。
为避免这种情况,要么仅使用从 0 到您需要的最后一个 ID 的连续整数。或者,如果您能负担得起字符串到索引映射的内存成本,请使用字符串标签而不是普通整数。或者,保留有效 ID 的额外记录并从结果中手动过滤不需要的 ID。
另外:通过在 Doc2Vec 模型初始化中不指定 iter=1
,默认的 iter=5
将生效,这意味着每次调用 train ()
对您的数据进行 5 次迭代。奇怪的是,你的 xrange(10)
for-loop 包括两次单独调用 train()
每次迭代(第一个只是使用已经在的 alpha/min_alpha地方)。所以你实际上对数据进行了 10 * 2 * 5 = 100 次传递,学习率计划很奇怪。
我建议,如果你想要 10 遍只设置 iter=10
,保持默认的 alpha
/min_alpha
不变,然后调用 train()
只有一次。该模型将进行 10 次传递,从其起始值到结束值平滑地管理 alpha。
关于python - Gensim docvecs.most_similar 返回不存在的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051902/
在 Python 3.7 中实现 Word2Vec 时,我遇到了与折旧相关的意外情况。我的问题是 word2vec gensim python 中关于“most_similar”的折旧警告到底是什么?
我正在与 Doc2Vec 作斗争,我看不出我做错了什么。我有一个带有句子的文本文件。我想知道,对于给定的句子,我们可以在该文件中找到的最接近的句子是什么。 下面是创建模型的代码: sentences
我正在使用 most_similar()获取与给定单词相似的所有单词的方法如下: word,score= model.most_similar('apple',topn=sizeofdict) AFA
我正在尝试创建一种算法,该算法能够显示与特定文档相似的前 n 个文档。为此,我使用了 gensim doc2vec。代码如下: model = gensim.models.doc2vec.Doc2Ve
我正在阅读 this answer关于 Gensim most_similar 的说法: it performs vector arithmetic: adding the positive vect
gensim 的 wv.most_similar 返回语音上接近的词(相似的声音)而不是语义上相似的词。这是正常的吗?为什么会发生这种情况? 这是关于 most_similar 的文档:https:/
一段时间以来,我一直在试验 doc2vec 模块。我可以训练我的模型并让训练后的模型为给定文档输出类似的文档,如下所示: import re modelloaded=Doc2Vec.load("mod
我以不同的方式使用 3 个单词“1”、“2”、“3”构建句子,并观察到每个单词的单词向量都没有变化。 以下是不同的句子 类型 1:[["1", "2"], ["1", "3"]] 类型 2:[["1"
我是一名优秀的程序员,十分优秀!