Nlp 如何将gensim Word2Vec模型转换为FastText模型?

Nlp 如何将gensim Word2Vec模型转换为FastText模型?,nlp,word2vec,gensim,word-embedding,fasttext,Nlp,Word2vec,Gensim,Word Embedding,Fasttext,我有一个Word2Vec模型,它是在一个巨大的语料库上训练的。在使用这个模型进行神经网络应用时,我遇到了很多“词汇表外”的单词。现在我需要找到这些“词汇表外”单词的单词嵌入。所以我在谷歌上搜索了一下,发现Facebook最近发布了一个快速文本库。现在我的问题是如何将我现有的word2vec模型或Keyedvectors转换为FastText模型?FastText能够通过将子词片段包含在原始语料库的初始训练中来创建子词片段的向量。然后,当遇到词汇表外的单词(“OOV”)时,它会使用识别出的片段为这

我有一个Word2Vec模型,它是在一个巨大的语料库上训练的。在使用这个模型进行神经网络应用时,我遇到了很多“词汇表外”的单词。现在我需要找到这些“词汇表外”单词的单词嵌入。所以我在谷歌上搜索了一下,发现Facebook最近发布了一个快速文本库。现在我的问题是如何将我现有的word2vec模型或Keyedvectors转换为FastText模型?

FastText能够通过将子词片段包含在原始语料库的初始训练中来创建子词片段的向量。然后,当遇到词汇表外的单词(“OOV”)时,它会使用识别出的片段为这些单词构造一个向量。对于具有重复出现的词根/前缀/后缀模式的语言,这会导致向量比OOV单词的随机猜测更好

但是,FastText过程不会从最终的完整单词向量中提取这些子单词向量。因此,没有简单的方法可以将完整的单词向量转换为包含子单词向量的FastText模型

可能有一种可行的方法来近似相同的效果,例如,通过获取具有相同子词片段的所有已知词,并提取一些要分配给子词的公共平均值/向量分量。或者将OOV单词建模为与OOV单词编辑距离较短的词汇表内单词的平均值。但是这些技术并不是FastText,只是模糊地类似于它,它们的工作情况如何,或者能够与调整一起工作,将是一个实验性的问题。所以,这不是一个抓住现成图书馆的问题

有几篇研究论文中提到了其他OOV引导思想


如果您需要FastText OOV功能,最好的方法是在用于传统全文向量的相同语料库上从头开始训练FastText向量。

以下是代码片段:

txt_model = KeyedVectors.load(model_name)
model.wv.save_word2vec_format('{}.txt'.format(model_name), binary=False)
其中model name是Word2Vec训练模型的名称

但是,gensim(自3.2.0起)具有以下特点:

from gensim.models import FastText
model = FastText(sentences, workers=num_workers)
model.wv.save_word2vec_format('{}.txt'.format(model_name), binary=False)

但是您仍然需要将其保存为文本文件,因为FastText无法解释二进制单词嵌入。

model=FastText(句子,workers=num_workers)这是否意味着它将再次在整个语料库上进行训练?我们可以加载此命令后保存的文件(model.wv.save_word2vec_format('{}.txt'.format(model_name),binary=False))吗作为fasttext模型??