【问题标题】:Reducing size of Facebook's FastText Word2Vec减小 Facebook 的 FastText Word2Vec 的大小
【发布时间】:2020-03-14 18:02:08
【问题描述】:

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

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

【问题讨论】:

  • 您可以在训练模型时指定小于 300 维的向量大小 - 并且模型将按比例缩小。但是,为什么尺寸是一个问题? (您在使用常规尺寸时是否达到了系统资源限制?)
  • 此外,虽然 FastText 对子词片段(字符 n-gram)的敏感性可能有助于解决 OCR 错误,但仅靠它可能还不够。相反,您可能希望应用一些其他拼写检查过程,用其他最佳猜测(基于编辑距离、相对单词频率或上下文单词)替换其他非故障语料库中不存在的单词词。

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


【解决方案1】:

有一个原生功能,但是你应该从 github 安装 fasttext(克隆 repo 和 pip install 。)因为 目前(2020-03-04)没有 pip 可用安装 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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-11-05
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 2011-05-28
相关资源
最近更新 更多