我有一个在庞大的语料库上训练过的Word2Vec模型。在将这种模型用于神经网络应用程序时,我遇到了很多“词汇量不足”的单词。现在,我需要为这些“词汇量不足”的单词找到单词嵌入。因此,我进行了一次谷歌搜索,发现Facebook最近为此发布了FastText库。现在我的问题是如何将现有的word2vec模型或Keyedvectors转换为FastText模型?
最佳答案
FastText能够通过将原始原始语料库中的片段包含在初始训练中来为子单词片段创建向量。然后,当遇到词汇外('OOV')单词时,它将使用其识别的片段为这些单词构建一个向量。对于具有反复出现的词根/前缀/后缀模式的语言,这导致矢量比对OOV单词的随机猜测要好。
但是,FastText处理不会从最终的全字向量中提取这些子字向量。因此,没有简单的方法可以将全字向量转换为还包括子字向量的FastText模型。
可能存在一种可行的方法来近似相同的效果,例如,通过对所有具有相同子字片段的已知字进行提取,然后提取一些要分配给该子字的共同平均值/矢量分量。或将OOV单词建模为词汇中单词的平均数,这些单词与OOV单词的编辑距离很短。但是这些技术并不能完全像FastText那样,只是模糊地类似于它,它们的工作效果如何,或者可以使其进行微调,将是一个实验性的问题。因此,获取现成的库不是问题。
this blog post by Sebastien Ruder中提到了一些具有其他OOV引导思想的研究论文。
如果您需要FastText OOV功能,则最好的方法是在与传统全字向量相同的语料库上从头训练FastText向量。