【发布时间】:2019-05-07 12:57:37
【问题描述】:
这里是 word2vec model=gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz', binary=True) 它包含大写的单词。我如何从这个模型中生成新模型,其中包含所有单词并且这些单词都是小写的?所有单词都将具有与源模型中相同的向量。
【问题讨论】:
标签: word2vec
这里是 word2vec model=gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz', binary=True) 它包含大写的单词。我如何从这个模型中生成新模型,其中包含所有单词并且这些单词都是小写的?所有单词都将具有与源模型中相同的向量。
【问题讨论】:
标签: word2vec
当您使用一组预训练的向量时,例如GoogleNews-vectors-negative300.bin.gz,这些向量的创建者会确定包含哪些单词以及哪些大小写处理。
加载后,在此类模型中的查找是通过精确的、区分大小写的字符串匹配进行的。
Gensim 中没有内置功能来执行以后的大小写规范化,例如将所有键转换为小写。如果有的话,将会有一个悬而未决的问题,即如何处理多个现存的键都变平为同一个键的情况。
例如,如果向量集包含“USA”、“Usa”和“usa”的单独向量,但您希望查找“usa”时不区分大小写,该怎么办。应该只保留一个向量,丢弃其他向量吗?返回的向量应该是三者的平均值吗?如果有一些奇怪的混合大小写,比如“usA”,它在所有向量列表中的后期(因此在训练数据中相对不常见)。该向量应该没有权重、较小的权重或与最常见的任何套管相同的权重吗?
如果您知道如何解决此类情况,您当然可以篡改模型本身以修改其映射。例如,您可以查看 w2v_model.index2entity 列表,该列表显示模型的每个“槽”中的单词,并修改最后一个和 w2v_model.vocab 字典,使其仅包含您喜欢的映射。
【讨论】: