Rod*_*rez 3 python nlp gensim word-embedding
我有一个带有不同范数向量的预训练词嵌入,我想对模型中的所有向量进行归一化。我正在用一个 for 循环来迭代每个单词并对其向量进行归一化,但是我们的模型很大并且需要太多时间。是否gensim包括任何方法可以更快地做到这一点?我找不到它了。
谢谢!!
KeyedVectors(词向量集的公共接口)的Gensim 实例包含一个方法init_sims(),该方法在内部使用本机向量运算来计算单位长度归一化向量以提高速度。
当第一次尝试通常对单位归一化向量进行的某些操作时,这init_sims()将被自动调用,并且模型会将归一化向量缓存在模型属性 ( vectors_norm) 中 - 大约是 RAM 消耗的两倍。
一旦被调用,您就可以使用以下.word_vec()方法访问赋范向量:
normed_wv = kv_model.word_vec(word, use_norm=True)
Run Code Online (Sandbox Code Playgroud)
如果您确定不需要原始的、未规范的向量,您也可以init_sim()使用其可选replace参数调用自己。然后,赋范向量将就地破坏原始向量——节省额外的 RAM。例如:
kv_model.init_sims(replace=True)
Run Code Online (Sandbox Code Playgroud)
请注意,虽然像在常见most_similar()操作中寻找单词的最近邻这样的事情传统上使用单位归一化向量,但有时原始向量是有用的下游应用程序。(此外,在完整Word2Vec模型中,如果您要进行额外的增量训练,这应该发生在原始向量上,而不是标准化向量上。)
| 归档时间: |
|
| 查看次数: |
3954 次 |
| 最近记录: |