我在使用 word2vec 时遇到了问题。可能是版本问题,不知道怎么解决?
I had a problem using word2vec. Maybe it's a version problem, but I don't know how to solve it ?
这是我的代码
w2v = Word2Vec(vector_size=150,min_count = 10)
w2v.build_vocab(x_train)
w2v.train(x_train)
def average_vec(text):
vec = np.zeros(300).reshape((1,300))
for word in text:
try:
vec += w2v[word].reshape((1,300))
except KeyError:
continue
return vec
这会引发以下错误:
Traceback (most recent call last): File
"C:/Users/machao/Desktop/svm-master/word2vec.py", line 27, in <module>
train_vec = np.concatenate([average_vec(z) for z in x_train]) File "C:/Users/machao/Desktop/svm-master/word2vec.py", line 27, in
<listcomp>
train_vec = np.concatenate([average_vec(z) for z in x_train]) File "C:/Users/machao/Desktop/svm-master/word2vec.py", line 21, in
average_vec
vec += w2v[word] TypeError: 'Word2Vec' object is not subscriptable
Process finished with exit code 1
在 Gensim 4.0 及更高版本中,Word2Vec
模型对象本身 – w2v
在您的代码中 – 不再支持通过查找词键直接访问单个向量。
相反,您应该在其 .wv
属性 中使用辅助对象 - 类型为 KeyedVectors
的对象,可用于单独处理词向量集。 (这样的分离功能在您只需要词向量的情况下会有所帮助,或者只有来自其他人的词向量,而不是整个模型的开销。)
因此,在任何可能使用 w2v[word]
的地方,请尝试使用 w2v.wv[word]
。
或者,更像下面这样命名,并保存对词向量的不同变量引用:
w2v_model = Word2Vec(...)
word_vectors = w2v_model.wv
print(word_vectors[word])
有关将您自己的旧代码或在线示例改编为 Gensim 4.0 的其他技巧,以下项目 wiki 页面可能会有所帮助:
这是我的代码
w2v = Word2Vec(vector_size=150,min_count = 10)
w2v.build_vocab(x_train)
w2v.train(x_train)
def average_vec(text):
vec = np.zeros(300).reshape((1,300))
for word in text:
try:
vec += w2v[word].reshape((1,300))
except KeyError:
continue
return vec
这会引发以下错误:
Traceback (most recent call last): File
"C:/Users/machao/Desktop/svm-master/word2vec.py", line 27, in <module>
train_vec = np.concatenate([average_vec(z) for z in x_train]) File "C:/Users/machao/Desktop/svm-master/word2vec.py", line 27, in
<listcomp>
train_vec = np.concatenate([average_vec(z) for z in x_train]) File "C:/Users/machao/Desktop/svm-master/word2vec.py", line 21, in
average_vec
vec += w2v[word] TypeError: 'Word2Vec' object is not subscriptable
Process finished with exit code 1
在 Gensim 4.0 及更高版本中,Word2Vec
模型对象本身 – w2v
在您的代码中 – 不再支持通过查找词键直接访问单个向量。
相反,您应该在其 .wv
属性 中使用辅助对象 - 类型为 KeyedVectors
的对象,可用于单独处理词向量集。 (这样的分离功能在您只需要词向量的情况下会有所帮助,或者只有来自其他人的词向量,而不是整个模型的开销。)
因此,在任何可能使用 w2v[word]
的地方,请尝试使用 w2v.wv[word]
。
或者,更像下面这样命名,并保存对词向量的不同变量引用:
w2v_model = Word2Vec(...)
word_vectors = w2v_model.wv
print(word_vectors[word])
有关将您自己的旧代码或在线示例改编为 Gensim 4.0 的其他技巧,以下项目 wiki 页面可能会有所帮助: