我正在构建一个机器学习模型,该模型将处理文档并从中提取一些关键信息。为此,我需要对OCRed输出使用单词嵌入。我有几种不同的嵌入选项(Google的word2vec,斯坦福大学的,Facebook的FastText),但是我主要关心的是OOV单词,因为OCR输出中会有很多拼写错误的单词。例如,我希望嵌入使 Embedding 和 Embdding 的输出(OCR忽略)应该具有一定程度的相似性。我不太关心相关的上下文信息。
我选择了Facebook的FastText,因为它也提供了OOV单词的嵌入。我唯一关心的是嵌入的大小。 FastText模型的向量大小为300。有没有办法减小返回的词向量的大小(我正在考虑使用PCA或任何其他降维技术,但是考虑到词向量的大小,可以一项耗时的工作)?
答案 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个。