Python Gensim'的科学等效物;s功能/参数
对于Gensim,我经常使用三种功能,例如:Python Gensim'的科学等效物;s功能/参数,python,nlp,spacy,gensim,Python,Nlp,Spacy,Gensim,对于Gensim,我经常使用三种功能,例如: model = gensim.models.Word2Vec(corpus,size=100,min_count=5) gensim的输出,但我无法理解如何在以下的等效SciSpacy命令中设置大小和最小计数参数: model = spacy.load('en_core_web_md') (输出是一个嵌入模型(太大,无法在此添加))) 这是我经常使用的另一个命令: model.most_similar(positive=['car']) pri
model = gensim.models.Word2Vec(corpus,size=100,min_count=5)
gensim的输出,但我无法理解如何在以下的等效SciSpacy命令中设置大小和最小计数参数:
model = spacy.load('en_core_web_md')
(输出是一个嵌入模型(太大,无法在此添加)))
这是我经常使用的另一个命令:
model.most_similar(positive=['car'])
print(model.wv['car'])
这是gensim的输出/SciSpacy的预期输出:
[('vehicle', 0.7857330441474915),
('motorbike', 0.7572781443595886),
('train', 0.7457204461097717),
('honda', 0.7383008003234863),
('volkswagen', 0.7298516035079956),
('mini', 0.7158907651901245),
('drive', 0.7093928456306458),
('driving', 0.7084407806396484),
('road', 0.7001082897186279),
('traffic', 0.6991947889328003)]
这是我经常使用的第三个命令:
model.most_similar(positive=['car'])
print(model.wv['car'])
Gensim的输出/SciSpacy的预期输出(实际上,该向量的长度为100):
有人能给我看一下SciSpacy的等效命令吗?例如,对于'gensim.models.Word2Vec',我找不到如何指定向量的长度(大小参数),或者在SciSpacy中单词应该在语料库中的最小次数(最小计数)(例如,我查看和),但我不确定是否缺少它们?实现目标的一种可能方法是:
nlp.pipe分析您的文档
import spacy
nlp = spacy.load("en_core_web_md", disable = ['ner', 'tagger', 'parser'])
然后,要得到一个向量,比如在model.wv['car']
中,可以执行以下操作:
nlp("car").vector
要获得最相似的单词,如model。最相似(肯定=['car'])
让我们处理语料库:
corpus = ["This is a sentence about cars. This a sentence aboout train"
, "And this is a sentence about a bike"]
docs = nlp.pipe(corpus)
tokens = []
tokens_orth = []
for doc in docs:
for tok in doc:
if tok.orth_ not in tokens_orth:
tokens.append(tok)
tokens_orth.append(tok.orth_)
sims = np.zeros((len(tokens),len(tokens)))
for i, tok in enumerate(tokens):
sims[i] = [tok.similarity(tok_) for tok_ in tokens]
然后检索top=3
最相似的单词:
def most_similar(word, tokens_orth = tokens_orth, sims=sims, top=3):
tokens_orth = np.array(tokens_orth)
id_word = np.where(tokens_orth == word)[0][0]
sim = sims[id_word]
id_ms = np.argsort(sim)[:-top-1:-1]
return list(zip(tokens_orth[id_ms], sim[id_ms]))
most_similar("This")
PS
我也注意到你要求规格的尺寸和频率。嵌入长度在模型初始化时是固定的,因此在初始化之后不能更改。如果愿意,您可以从一个空白模型开始,并提供您熟悉的嵌入。至于频率,它是可行的,通过计算所有的单词,扔掉任何低于期望阈值的东西。但同样,底层嵌入将来自未过滤的文本。SpaCy与Gensim的不同之处在于,它使用现成的嵌入,而Gensim则对其进行训练。预期输出?哦,对不起,我可以添加它们,谢谢(我会尽量缩短,因为它们的预期输出都是数字向量,这是单词的嵌入)非常感谢。对于嵌入长度,我尝试复制gensim向量大小:('是gensim Word2Vec将单词映射到的N维空间的维数(N))。但是我可以确认你说的是,长度是在加载模型时设置的(即,当你执行nlp=spacy.load(“en_core\u web\u md”)时,整个模型的向量长度为300/vocab)。这是我从中收集的:>>>
长度是在加载模型时设置的。它是在有人将向量加载到空模型中并继续训练pos、依赖项解析器和ner时设置的。加载经过训练的模型时,不能在之后更改向量,因为经过训练的管道是基于嵌入的。当然,你可以使用你的嵌入,这需要几个小时的练习,但是这样做的意义是什么,除非你想要一个不可用的语言模型。非常感谢,我很感激。