这里是word2vec model = gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz',binary = True),其中包含大写单词。我如何用这个模型中的所有单词生成新模型,并且这些单词都小写?所有单词都将具有与源模型中相同的向量。
答案 0 :(得分:2)
使用GoogleNews-vectors-negative300.bin.gz
之类的一组经过预训练的向量时,这些向量的创建者会确定要包括哪些单词以及采用哪种大小写处理方式。
一旦加载,在这种模型中的查找是通过精确的,区分大小写的字符串匹配进行的。
Gensim中没有内置功能可以执行以后的大小写标准化,例如将所有密钥转换为小写。如果有的话,将存在一个悬而未决的问题,即如何处理多个现存密钥都将扁平化为同一个密钥的情况。
例如,如果向量集包含用于“ USA”,“ Usa”和“ usa”的单独向量,但您希望使用不区分大小写的“ usa”查找,该怎么办。应该只保留其中一个向量,而丢弃其他向量吗?返回的向量应该是三个向量的平均值吗?如果有一些奇怪的混合外壳(例如“ usA”)在所有向量列表的后面(因此在训练数据中相对较少),该怎么办?该向量的权重应该小于,等于或小于最常用的大小写吗?
如果您知道如何解决此类情况,则可以肯定会篡改模型本身以修改其映射。例如,您可以浏览w2v_model.index2entity
列表,该列表在模型的每个“插槽”中显示单词,然后修改最后一个和w2v_model.vocab
词典,使其仅包含您所映射的d喜欢。