【问题标题】:How to seek for bigram similarity in gensim word2vec model如何在 gensim word2vec 模型中寻找二元组相似度
【发布时间】:2021-12-22 20:25:09
【问题描述】:

这里我有一个 word2vec 模型,假设我使用的是 google-news-300 模型

import gensim.downloader as api
word2vec_model300 = api.load('word2vec-google-news-300')

我想为“AI”或“人工智能”找到相似的词,所以我想写

word2vec_model300.most_similar("artifical intelligence")

我得到了错误

KeyError: "word 'artifical intelligence' not in vocabulary"

那么,为二元词提取相似词的正确方法是什么?

提前致谢!

【问题讨论】:

    标签: machine-learning nlp gensim word2vec


    【解决方案1】:

    在一个层面上,当词标记不在一组固定的词向量中时,该组词向量的创建者选择不训练/建模该词。所以,你所做的任何事情都只是一个粗略的解决方法。

    不过,请注意,当 Google 根据 2012 年之前的新闻文章数据集准备这些向量时,他们还对其进行了一些统计多重组合,创建了连接 _ 字符的多重组合。因此,首先检查是否存在'artificial_intelligence' 的向量。

    如果不是,您可以尝试其他粗略的解决方法,例如将 'artificial''intelligence' 的向量平均在一起 - 当然,这并不是人们所说的这些词的不同组合的真正意思,只是独立词所暗示的含义。

    Gensim .most_similar() 方法可以通过其显式关键字positive 参数将您通过平均等操作创建的原始向量,或者甚至是它会为您平均的多个单词列表作为参数。例如:

    word2vec_model300.most_similar(positive=[average_vector])
    

    ...或...

    word2vec_model300.most_similar(positive=['artificial', 'intelligence'])
    

    最后,虽然 Google 的旧向量很方便,但它们现在有点旧了,并且来自特定领域(流行新闻文章),感觉可能与其他领域(或最近)使用的 tose 不匹配。因此,您可能想要寻找替代向量,或者如果您有足够的来自您感兴趣的领域的数据来训练自己的向量,以具有适当的含义 - 包括您选择在数据中标记的任何特定多重组合的向量。

    【讨论】:

    • 哇!非常感谢您的详细和有用的解释。在我测试之后,你的方法适用于其他双字母词。顺便说一句,您知道我们现在可以使用任何最新且全面的 word2vec 模型吗?我发现 gensim api 中的所有模型都很旧。我对 CS 和金融新闻特别感兴趣。
    猜你喜欢
    • 2015-10-10
    • 2019-07-02
    • 2018-08-06
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多