有没有办法将经过spacy训练的模型加载到gensim中?

我想获得类似单词的列表。由于Spacy没有对此的内置支持,因此我想将spacy模型转换为gensim word2vec并获取相似单词的列表。

我尝试使用以下方法。但这很耗时。

def most_similar(word):
    by_similarity = sorted(word.vocab,key=lambda w: word.similarity(w),reverse=True)
    return [w.orth_ for w in by_similarity[:10]]
nlp = spacy.load('en_core_web_md')
nlp.to_disk(filename)
nlp.vocab.vectors.to_disk(filename)

这不会将模型保存到文本文件。因此,我无法使用以下方法。

from gensim.test.utils import datapath,get_tmpfile
from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec

glove_file = datapath('test_glove.txt')
tmp_file = get_tmpfile("test_word2vec.txt")

_ = glove2word2vec(glove_file,tmp_file)
kimle 回答:有没有办法将经过spacy训练的模型加载到gensim中?

步骤1 :为Spacy模型提取单词及其向量(请参阅相关文档here)。
第2步:创建gensim.models.keyedvectors.WordEmbeddingsKeyedVectors类的实例 (请参阅相关文档here)。
第3步:将单词和向量添加到WordEmbeddingsKeyedVectors实例中。

import spacy
from gensim.models.keyedvectors import WordEmbeddingsKeyedVectors

nlp = spacy.load('en_core_web_lg')

wordList =[]
vectorList = []
for key,vector in nlp.vocab.vectors.items():
    wordList.append(nlp.vocab.strings[key] )
    vectorList.append(vector)

kv = WordEmbeddingsKeyedVectors(nlp.vocab.vectors_length)

kv.add(wordList,vectorList)

print(kv.most_similar('software'))
# [('Software',0.9999999403953552),('SOFTWARE',('Softwares',0.738474428653717),('softwares',('Freeware',0.6730758547782898),('freeware',('computer',0.67071533203125),('Computer',('COMPUTER',('shareware',0.6497008800506592)]



本文链接:https://www.f2er.com/3160202.html

大家都在问