data-science - 减小 Facebook 的 FastText Word2Vec 的大小
问题描述
我正在构建一个机器学习模型,它将处理文档并从中提取一些关键信息。为此,我需要对 OCRed 输出使用词嵌入。我有几种不同的嵌入选项(Google 的 word2vec、Stanford 的、Facebook 的 FastText),但我主要关心的是 OOV 单词,因为 OCR 输出会有很多拼写错误的单词。例如,我希望嵌入使得Embedding和Embdding的输出(被 OCR 遗漏)应该具有一定程度的相似性。我不太关心相关的上下文信息。
我选择了 Facebook 的 FastText,因为它也提供了 OOV 词的嵌入。我唯一关心的是嵌入的大小。FastText 模型的向量大小为 300。有没有办法减少返回的词向量的大小(我正在考虑使用 PCA 或任何其他降维技术,但考虑到词向量的大小,它可以是一项耗时的任务)?
解决方案
有一个本机功能,但您应该从 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。
推荐阅读
- c# - 添加 webdriver 等待子元素搜索 - 以避免 ElementClickInterceptedException
- sql-server - Azure 数据质量分析真实世界示例
- android - react-native run-android 崩溃了
- clojure - 为什么我的代码会生成一个空列表列表?
- sed - Sed - 如何匹配正则表达式组并使用它来替换同一行中的所有其他匹配项?
- jupyter-notebook - 在 jupyter notebook 中运行单元格时出现此错误:UsageError: Cell magic `%%execute_cell` not found.?
- javascript - 使用滚动仅在页面上播放多个视频
- java - Java测试是否有某种“隐藏的@Ignore”
- python-3.x - Rest框架的外键关系——Django
- sql - SQL Server 中除以零异常