iro*_*012 4 dimensionality-reduction fasttext
我正在构建一个机器学习模型,它将处理文档并从中提取一些关键信息。为此,我需要使用词嵌入进行 OCRed 输出。我有几种不同的嵌入选项(Google 的 word2vec、Stanford 的、Facebook 的 fastText),但我主要担心的是 OOV 单词,因为 OCR 输出会有很多拼写错误的单词。例如,我想要嵌入使得嵌入和嵌入(OCR 遗漏的 e)的输出应该具有一定程度的相似性。我不太关心相关的上下文信息。
我选择了 Facebook 的 fastText,因为它也提供了 OOV 单词的嵌入。我唯一关心的是嵌入的大小。fastText的模型的向量大小是300,有没有办法减少返回的词向量的大小?我正在考虑使用 PCA 或任何其他降维技术,但考虑到词向量的大小,这可能是一项耗时的任务。
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())
Run Code Online (Sandbox Code Playgroud)
此代码应将 300 个向量嵌入长度减少到 100 个。
官方文档链接: https://fasttext.cc/docs/en/crawl-vectors.html