【问题标题】:Is there a pretrained Gensim phrase model?有预训练的 Gensim 短语模型吗?
【发布时间】:2020-10-15 18:43:57
【问题描述】:

是否有预训练的GensimPhrases 模型?如果没有,是否可以使用预训练的词嵌入进行逆向工程并创建短语模型?

我正在尝试将 GoogleNews-vectors-negative300.bin 与 Gensim 的 Word2Vec 一起使用。首先,我需要将我的单词映射成短语,以便我可以从 Google 的预训练嵌入中查找它们的向量。

我搜索了 Gensim 的官方文档,但找不到任何信息。谢谢!

【问题讨论】:

    标签: python machine-learning gensim word-embedding phrase


    【解决方案1】:

    我不知道有人共享Phrases 模型。任何此类模型都会对预处理/标记化步骤以及创建者使用的特定参数非常敏感。

    除了高级算法描述之外,我还没有看到 Google 对输入 GoogleNews 2013 词向量的数据所做的标记化/规范化/短语组合的确切选择已在任何地方记录。可以通过查看存在的标记来对预处理进行一些猜测,但我不知道有任何代码可以将类似的选择应用于其他文本。

    您可以尝试模仿他们的 unigram 标记化,然后推测性地将 unigram 字符串组合成更长的 multigram,直至达到某个最大值,检查这些组合是否存在,如果不存在,则恢复为 unigram(或存在的最大组合) .如果天真地完成这可能会很昂贵,但如果真的很重要,则可以进行优化 - 特别是对于更频繁单词的某些子集 - 因为 GoogleNews 集合似乎遵循以降频列出单词的约定。

    (总的来说,虽然它是一组快速简单的词向量,但我认为 GoogleNews 有点过分依赖。它将缺乏自 2013 年以来发展起来的词/短语和新意义,以及任何它所捕捉的含义是由 2013 年之前的几年中的新闻文章决定的……这可能与其他领域中的主要词义不匹配。如果您的领域不是专门的新闻,并且您有足够的数据,请决定您自己的特定领域的标记化/组合可能会表现得更好。)

    【讨论】:

    • 感谢您分享您的见解。是的,有道理。你怎么看这个黑客?如果我们为来自GoogleNews-vectors-negative300.bin 的短语分配np.infgensim.models.phrases' vocab,我们可以强制创建短语。
    • 可能有用!尽管如果您有一组固定的二元组,那么完整的 Phrases 类可能会过大。请参阅stackoverflow.com/questions/58839049/… 以获取一些较小的组合器代码的示例。在这种情况下,尤其是在尝试对 Google 的行为进行反向工程时,考虑 unigram 组合的顺序可能是一个棘手的问题。谷歌结果(&Phrases 用于多词短语)需要多次传递,每个传递只组合二元组。但这可能会产生路径相关或路径不清楚的结果。
    • 例如,如果您在 2-pass 过程的输出中看到a_b_c,是(a, b), c) 还是(a, (b, c) 的结果?如果你看到a_b_c_d,它一定是 3 遍过程的结果吗?否:一次通过可能已创建a_bc_d,第二次通过a_b_c_d。 (进一步:也许源材料以underscored_tokens 开头,与短语输出无法区分。)以令人满意的方式解决这些警告,推断GoogleNews 中的组合,然后编写代码将它们应用于新的令牌流可能工作得很好。
    • 是的,完全有道理!谢谢你gojomo!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-17
    相关资源
    最近更新 更多