【问题标题】:Gensim error with .most_similar(), jupyter kernel restarting.most_similar() 的 Gensim 错误,jupyter 内核重新启动
【发布时间】:2021-03-27 17:42:26
【问题描述】:

我无法让 .most_similar() 函数工作。我已经尝试过 Gensim 3.8.3 版本,现在是 beta 版本 4.0 。我正在使用每个文档版本的 Word2Vec 模型教程。

代码给我错误并重新启动我的内核:

print(wv.most_similar(positive=['car', 'minivan'], topn=5))

以上代码在 3.8.3 文档和 4.0 中都是逐字记录的。按照教程逐字逐句。

正如其他堆栈溢出答案中所述,我尝试过 model.wv.most_similar()

我认为 .most_similar() 没有贬值。

另外 .doesnt_match() 函数不起作用。

关于 gojomo 的编辑:

现在我在 Genism 3.8.3 上。我正在使用 GloVe 模型和 Word2Vec 模型,实际上只是尝试过,它与 GloVe 模型一起使用,也许 Word2Vec 模型存在内存问题,如 gojomo 建议我的代码如下:

我正在使用 linx 笔记本电脑,I-7 核心 1065 cpu,内存 7.4 GiB,64 位 ubuntu

%matplotlib inline

import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

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

for i, word in enumerate(wv.vocab):
    if i == 10:
        break
    print(word)

pairs = [
    ('programming', 'linux'),   
    ('programming', 'bicycle'), 
    ('programming', 'apple'),  
    ('programming', 'cereal'),    
    ('programming', 'capitalism'),
    ('programming', 'computers'), 
    ('programming', 'python'),  
    ('programming', 'algebra'),  
    ('programming', 'logic'),    
    ('programming', 'math'),
]
for w1, w2 in pairs:
    print('%r\t%r\t%.2f' % (w1, w2, wv.similarity(w1, w2)))

print(wv.most_similar(positive=['math'], topn=5))

【问题讨论】:

    标签: python-3.x machine-learning nlp gensim word2vec


    【解决方案1】:

    如果 Jupyter 内核在没有明确错误消息的情况下死机,则可能内存不足。

    在您启动 Jupyter 服务器的控制台中可能会记录更多信息。如果您扩展您的问题以包含任何信息,以及有关您已加载的模型(磁盘大小)和您正在运行的系统(特别是可用的 RAM)的详细信息,则可能会提出其他建议。

    还有:

    gensim-3.8.3 在第一次调用.most_similar() 时需要一个很大的新RAM 增量,而gensim-4.0.0beta 预发行版当时只需要一个小得多的增量-因此,如果一个模型加载成功,你应该也能得到.most_similar()的结果。因此,了解以下信息也很有用:

    • 您是如何安装 gensim-4.0.0beta 的,您是否确认这是您的笔记本内核环境实际使用的版本?
    • 您确定前面的步骤(例如加载)已经成功,并且只有most_similar() 触发了失败吗? (是否在单独的单元格中,在尝试most_similar() 之前,您能否成功查询模型的其他方面,例如其长度或是否包含某些单词?)

    【讨论】:

    • 感谢您的回答,我赞成并添加了更多代码。实际上正在研究预训练的 GloVe 模型,但不是 Word2Vec
    • 7.4GB 对于使用完整的GoogleNews 向量集来说有点紧张,它在磁盘上几乎是 4GB,而在gensim-3.8 中,当你开始做 @ 时,它至少会扩展到超过 6GB 987654330@-like 操作。 (如果你真的安装和使用gensim-4.0.0beta,它将使用更少的数据。)
    • 另外,我建议将原始数据作为文件加载到您可以查看和使用的地方,而不是使用有点不透明的api.load() 功能。当您自己拥有 GoogleNews 文件时,您可以看到它的大小,并且可以选择使用 model = KeyedVectors.load_word2vec_format(filename, limit=1000000) 来加载第一个 100 万个向量(或您喜欢的任何较小的子集)以节省内存。
    • 谢谢@gojomo,感谢您的洞察力
    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 2015-10-27
    相关资源
    最近更新 更多