【问题标题】:FastText: AttributeError: type object 'FastText' has no attribute 'reduce_model'FastText:AttributeError:类型对象'FastText'没有属性'reduce_model'
【发布时间】:2021-10-20 03:36:19
【问题描述】:

我使用 FastText 来生成词嵌入。我从https://fasttext.cc/docs/en/crawl-vectors.html 下载预训练模型 该模型有 300 个维度,但我想要 100 个维度,所以我使用 reduce model 命令,但出现错误

import gensim
model = gensim.models.fasttext.FastText.load_fasttext_format('cc.th.300.bin')
gensim.models.fasttext.utils.reduce_model(model, 100)
我收到了AttributeError: module 'gensim.utils' has no attribute 'reduce_model'

这是来自 FastText 文档的代码

import fasttext
import fasttext.util
ft = fasttext.load_model('cc.en.300.bin')
fasttext.util.reduce_model(ft, 100)

如何解决此错误,我找不到新命令的任何文档。

谢谢

【问题讨论】:

    标签: python nlp gensim fasttext


    【解决方案1】:

    模块gensim.fasttext.utils 没有函数reduce_model(),如错误消息所述。

    这不是一个常见/标准的操作——它只是 Facebook 包装器决定实施的东西。 (根据source code here,它看起来像是在向量的一小部分子样本上使用标准 PCA。)

    为什么要降维?

    请注意,您将失去一些模型的表现力,如果您能够加载模型来进行缩减,那么它对于您的 RAM 来说并不算大。如果您的主要目标是节省模型大小,则可能有更好的方法,例如丢弃更多稀有词,具体取决于您的原因。

    如果您绝对需要执行这样的缩减,一些选项可能是:

    • 使用 Facebook 包装器执行此操作,然后以 Gensim 可以加载的形式保存结果。
    • 为 Gensim 模型重新实现相同的操作,可能使用 FB 代码作为指导。 (您必须确保 Gensim 模型以它考虑原始维度的所有方式进行更新,这可能很棘手 - Gensim 的目标或功能从来不是启用事后模型收缩。)

    【讨论】:

    • 我需要缩小版来进行比较。但根据你的解释,我找到了整体过程的更好方法而不减小尺寸。感谢您的支持。
    猜你喜欢
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多