在Python 3.7中实现Word2Vec时,我遇到了与折旧有关的意外情况。我的问题是,word2vec gensim python中关于“ most_like”的折旧警告到底是什么?
当前,我遇到以下问题。
不建议使用的警告:调用不建议使用的most_similar
(方法将在4.0.0中删除,请改用self.wv.most_like())。
model.most_similar('hamlet')
FutureWarning:不建议将issubdtype的第二个参数从int
转换为np.signedinteger
。将来,它将被视为np.int32 == np.dtype(int).type
。
如果np.issubdtype(vec.dtype,np.int):
请帮助遏制此问题?任何帮助表示赞赏。我是python的新手。
我尝试过的代码如下。
import re
from gensim.models import Word2Vec
from nltk.corpus import gutenberg
sentences = list(gutenberg.sents('shakespeare-hamlet.txt'))
print('Type of corpus: ', type(sentences))
print('Length of corpus: ', len(sentences))
for i in range(len(sentences)):
sentences[i] = [word.lower() for word in sentences[i] if re.match('^[a-zA-Z]+', word)]
print(sentences[0]) # title, author, and year
print(sentences[1])
print(sentences[10])
model = Word2Vec(sentences=sentences, size = 100, sg = 1, window = 3, min_count = 1, iter = 10, workers = 4)
model.init_sims(replace = True)
model.save('word2vec_model')
model = Word2Vec.load('word2vec_model')
model.most_similar('hamlet')
答案 0 :(得分:2)
这是一个警告,即将变得过时且无法使用。
通常不推荐使用某些版本的东西,从而使使用它们的任何人都有足够的时间在删除新方法之前转向新方法。
他们已将most_similar
移至wv
所以most_simliar()
应该类似于:
model.wv.most_similar('hamlet')
希望这会有所帮助
编辑:使用wv.most_similar()
import re
from gensim.models import Word2Vec
from nltk.corpus import gutenberg
sentences = list(gutenberg.sents('shakespeare-hamlet.txt'))
print('Type of corpus: ', type(sentences))
print('Length of corpus: ', len(sentences))
for i in range(len(sentences)):
sentences[i] = [word.lower() for word in sentences[i] if re.match('^[a-zA-Z]+', word)]
print(sentences[0]) # title, author, and year
print(sentences[1])
print(sentences[10])
model = Word2Vec(sentences=sentences, size = 100, sg = 1, window = 3, min_count = 1, iter = 10, workers = 4)
model.init_sims(replace = True)
model.save('word2vec_model')
model = Word2Vec.load('word2vec_model')
similarities = model.wv.most_similar('hamlet')
for word , score in similarities:
print(word , score)
答案 1 :(得分:0)
弃用警告是一种警告,用于指示使用将来的Python版本中可能存在或不存在的事物,这些事物通常被其他事物取代。 (告诉他们是什么)
错误似乎源于Word2Vec,而不是您的代码。删除这些错误将需要进入该库并更改其代码。
尝试按照提示操作。
将您的model.most_similar('hamlet')
更改为model.wv.most_similar('hamlet')
我不熟悉该软件包,因此请调整以适合您的使用方式。
答案 2 :(得分:0)
因此,Gensim在这里告诉您,最终您将无法直接在Word2Vec模型上使用most_similar
方法。相反,您将需要在model.wv
对象上调用它,这是训练模型时存储的键控向量。
答案 3 :(得分:0)
更新到4.0.0版本后,将删除函数model.most_similar()。因此,您可以做的是将函数修改为model.wv.most_similar()。函数model.similarity()也是如此。您必须将其更改为model.wv.similarity()。