【问题标题】:Difference between Gensim's FastText and Facebook's FastTextGensim 的 FastText 和 Facebook 的 FastText 的区别
【发布时间】:2021-08-18 14:21:57
【问题描述】:

我意识到存在 FastText here 的原始实现,您可以使用 fasttext.train_unsupervised 来生成词向量(参见 this link 作为示例)。然而,事实证明 gensim 也支持 fasttext,其 API 类似于 word2vec。 See example here.

我想知道这两种实现之间是否有区别?文档不清楚但它们是否都模仿了论文Enriching Word Vectors with Subword Information?如果是,那么为什么要使用 gensim 的 fasttext 而不是 fasttext?

【问题讨论】:

    标签: gensim fasttext


    【解决方案1】:

    Gensim 打算与 Facebook 实现相匹配,但存在一些已知或有意的差异。具体来说,Gensim 没有实现:

    • -supervised 选项和特定于该模式的自动调整/量化/预训练向量选项
    • word-multigrams(由-wordNgrams 参数控制到fasttext
    • 用于损失优化的普通 softmax 选项

    关于-loss的选项,我比较确定尽管Facebook's command-line options docs表示fasttext默认是softmax,但实际上是ns,除非在-supervised模式下,就像@987654332 @ & 根西姆。参见例如this source code

    我怀疑未来对 Gensim 的贡献会受到欢迎,如果该模式对某些用户有用,并且与参考实现相匹配,那么添加 wordNgrams 支持会受到欢迎。

    到目前为止,Gensim 的选择是避免任何监督算法,因此-supervised 模式不太可能出现在任何未来的 Gensim 中。 (不过,如果贡献了一个有效的实现,我会支持它。)

    普通的softmax 模式在典型的大型输出词汇表上要慢得多,以至于很少有非学术项目愿意在hsns 上使用它。 (不过,使用较少数量的输出标签可能仍然可行,例如在-supervised 模式下。)

    【讨论】:

      【解决方案2】:

      我发现与gensim's documentation 有 1 处不同:

      word_ngrams (int, optional) – In Facebook’s FastText, “max length of word ngram” -
      but gensim only supports the default of 1 (regular unigram word handling).
      

      这意味着 gensim 仅支持 unigrams,但不支持 bigramstrigrams

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-05
        • 2018-04-17
        • 2018-10-14
        • 2021-03-31
        • 2020-08-27
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        相关资源
        最近更新 更多