我无法使 .most_similar() 函数正常工作。我尝试了 Gensim 3.8.3 版本,现在正在使用 beta 版本 4.0。我直接按照每个文档版本中的 Word2Vec 模型教程进行操作。
导致错误并重启内核的代码如下:
print(wv.most_similar(positive=['car', 'minivan'], topn=5))
上述代码在 3.8.3 和 4.0 的文档中都是一字不差的。我严格按照教程操作。
正如其他 Stack Overflow 回答中所述,我尝试了 model.wv.most_similar()。
我不认为 .most_similar() 已经废弃。
此外,.doesnt_match() 函数也无法工作。
关于 @ 的编辑:
目前我使用的是 Gensim 3.8.3。我使用 GloVe 模型和 Word2Vec 模型,实际上刚刚尝试过,它在 GloVe 模型上可以工作,可能如 @ 所建议的,Word2Vec 模型存在内存问题,我的代码如下:
我使用的是 Linux 笔记本电脑,配备 I-7 核心 1065 CPU,内存 7.4 GiB,64 位 Ubuntu 系统
%matplotlib inlineimport logginglogging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)import gensim.downloader as apiwv = 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))
回答:
如果 Jupyter 内核在没有明确错误信息的情况下崩溃,很可能是内存不足导致的。
您启动 Jupyter 服务器的控制台可能记录了更多信息。如果您能扩展您的问题,包含那里的任何信息,以及您加载的模型的详细信息(磁盘上的大小)和您运行的系统(特别是可用的 RAM),可能会有其他建议。
另外:
虽然 gensim-3.8.3
在第一次调用 .most_similar()
时需要大幅增加 RAM,但 gensim-4.0.0beta
预发布版在那个时候只需要一个小得多的增量 – 因此,如果模型成功加载,您应该也能够获得 .most_similar()
的结果。所以了解以下信息也将是有用的:
- 您是如何安装
gensim-4.0.0beta
的,并且您是否确认那是您的笔记本内核环境实际使用的版本? - 您确定之前的步骤(如加载)已经成功,并且只有 & 正是
most_similar()
触发了失败吗?(它是否在一个单独的单元格中,并且在尝试most_similar()
之前,您能否成功查询模型的其他方面,比如它的长度或它是否包含某些词汇?)