首页 > 解决方案 > 减小 Facebook 的 FastText Word2Vec 的大小

问题描述

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

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

标签: data-sciencegensimword2vecdimensionality-reductionfasttext

解决方案


有一个本机功能,但您应该从 github 安装 fasttext(克隆 repo 和 pip install 。)因为pip install fasttext 目前没有(2020-03-04)可用

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


推荐阅读