word2vec将相似_by_vector()结果限制为重新训练的语料库

时间:2019-05-16 22:35:38

标签: nlp gensim word2vec

假设您有一个(wikipedia)预先训练的word2vec模型,并在另一个语料库(非常小,有1000种气味)上对其进行了训练。

您能想象一种将向量搜索限制为仅“经过训练的”语料库的方法吗?

例如

model.wv.similar_by_vector() 

将简单地找到给定向量的最接近词,无论它是Wikipedia语料库的一部分还是重新训练的词汇表。

另一方面,对于“单词”搜索,存在以下概念:

most_similar_to_given('house',['garden','boat'])

我曾尝试从头开始基于小型语料库进行训练,并且它按预期工作。但是,如果分配的向量来自预先训练的集合,当然可以更强大。

2 个答案:

答案 0 :(得分:0)

分享一种有效的手动方法:

  1. 在附加语料库上重新训练word2vec
  2. 创建完整的语料库唯一词索引
  3. 获取索引中每个单词的重新训练向量
  4. 使用scipy.spatial.KDTree.query()
  5. 代替固定功能“ similar_by_vector”

这只会在给定语料库中找到最接近的单词,并按预期工作。

答案 1 :(得分:0)

与建议在新KeyedVectors实例中创建文档向量子集的方法类似,建议here,假设small_vocab是新语料库中单词的列表,则可以尝试:

subset_vectors = WordEmbeddingsKeyedVectors(vector_size)
subset_vectors.add(small_vocab, w2v_model.wv[small_vocab])

然后subset_vectors仅包含您选择的单词,但支持熟悉的操作,例如most_similar()