【问题标题】:word2vec limit similar_by_vector() result to re-trained corpusword2vec 将similar_by_vector() 结果限制为重新训练的语料库
【发布时间】:2019-05-16 22:35:37
【问题描述】:

假设您有一个(维基百科)预训练的 word2vec 模型,并在一个额外的语料库(非常小,1000 个香味)上对其进行训练。

你能想出一种方法将向量搜索限制在“重新训练”的语料库中吗?

例如

model.wv.similar_by_vector() 

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

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

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

我尝试从头开始基于小型语料库进行训练,它在某种程度上按预期工作。但是,如果分配的向量来自预先训练的集合,当然会更强大。

【问题讨论】:

    标签: nlp gensim word2vec


    【解决方案1】:

    分享一种手动执行此操作的有效方法:

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

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

    【讨论】:

      【解决方案2】:

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

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

      那么subset_vectors 只包含您选择的单词,但支持most_similar() 等熟悉的操作。

      【讨论】:

        猜你喜欢
        • 2021-10-22
        • 2014-07-15
        • 2016-07-28
        • 2021-07-08
        • 1970-01-01
        • 2019-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多