【发布时间】:2023-03-19 03:47:01
【问题描述】:
我在 100 万个摘要数据集(20 亿字)上使用 word2vec。要查找最相似的文档,我使用 gensim.similarities.WmdSimilarity 类。当尝试使用wmd_similarity_index[query] 检索最佳匹配时,计算花费了大部分时间来构建字典。这是一段日志:
2017-08-25 09:45:39,441 : INFO : built Dictionary(127 unique tokens: ['empirical', 'model', 'estimating', 'vertical', 'concentration']...) from 2 documents (total 175 corpus positions)
2017-08-25 09:45:39,445 : INFO : adding document #0 to Dictionary(0 unique tokens: [])
这部分是做什么的?它取决于查询吗?有没有办法一次性完成这些计算?
编辑:我的代码中的训练和评分阶段:
训练并保存到磁盘:
w2v_size = 300
word2vec = gensim.models.Word2Vec(texts, size=w2v_size, window=9, min_count=5, workers=1, sg=1, hs=1, iter=20) # sg=1 means skip gram is used
word2vec.save(utils.paths.PATH_DATA_GENSIM_WORD2VEC)
corpus_w2v_wmd_index = gensim.similarities.WmdSimilarity(texts, word2vec.wv)
corpus_w2v_wmd_index.save(utils.paths.PATH_DATA_GENSIM_CORPUS_WORD2VEC_WMD_INDEX)
加载和评分:
w2v = gensim.models.Word2Vec.load(utils.paths.PATH_DATA_GENSIM_WORD2VEC)
words = [t for t in proc_text if t in w2v.wv]
corpus_w2v_wmd_index = gensim.similarities.docsim.Similarity.load(utils.paths.PATH_DATA_GENSIM_CORPUS_WORD2VEC_WMD_INDEX)
scores_w2v = np.array(corpus_w2v_wmd_index[words])
【问题讨论】:
-
您能添加代码的相关部分吗?
-
@Cedias 完成,训练和评分阶段
标签: python nlp word gensim word2vec