减少Facebook FastText Word2Vec的大小

时间:2019-11-19 09:10:59

标签: data-science gensim word2vec dimensionality-reduction fasttext

我正在构建一个机器学习模型,该模型将处理文档并从中提取一些关键信息。为此,我需要对OCRed输出使用单词嵌入。我有几种不同的嵌入选项(Google的word2vec,斯坦福大学的,Facebook的FastText),但是我主要关心的是OOV单词,因为OCR输出中会有很多拼写错误的单词。例如,我希望嵌入使 Embedding Embdding 的输出(OCR忽略)应该具有一定程度的相似性。我不太关心相关的上下文信息。

我选择了Facebook的FastText,因为它也提供了OOV单词的嵌入。我唯一关心的是嵌入的大小。 FastText模型的向量大小为300。有没有办法减小返回的词向量的大小(我正在考虑使用PCA或任何其他降维技术,但是考虑到词向量的大小,可以一项耗时的工作)?

1 个答案:

答案 0 :(得分:3)

有本机功能,但您应该从github安装快速文本(克隆repo和pip install。),因为 pip当前不可用(2020-03-04)安装fasttext

import fasttext
import fasttext.util

ft = fasttext.load_model('cc.en.300.bin')
print(ft.get_dimension())

fasttext.util.reduce_model(ft, 100)
print(ft.get_dimension())

此代码应将300个向量的嵌入长度减少到100个。

链接到官方文档: https://fasttext.cc/docs/en/crawl-vectors.html