Gensim Word2Vec新版本适配:model[model.wv.vocab]转换问题
Gensim新版本替换
model[model.wv.vocab]的正确方式 你之前报错的核心原因:model.wv.key_to_index是词汇到索引的字典结构,而PCA的fit_transform需要二维数值矩阵,直接传入字典会触发类型不匹配错误。
原来的model[model.wv.vocab]作用是获取所有词汇对应的词向量,在新版本Gensim里有两种等价替换方式:
方法1:直接使用model.wv.vectors
model.wv.vectors本身就是按key_to_index顺序排列的完整词向量矩阵,和旧代码效果完全一致,是最简单高效的方式:
model = Word2Vec(corpus, min_count=1, vector_size=5) # 直接获取所有词向量矩阵 X = model.wv.vectors pca = PCA(n_components=2) result = pca.fit_transform(X) pca_df = pd.DataFrame(result, columns=['x', 'y'])
方法2:基于key_to_index提取词汇后获取词向量
如果需要明确基于key_to_index中的词汇来获取向量,可以先提取词汇列表再获取:
model = Word2Vec(corpus, min_count=1, vector_size=5) # 提取所有词汇 words = list(model.wv.key_to_index.keys()) # 获取对应词向量 X = model.wv[words] pca = PCA(n_components=2) result = pca.fit_transform(X) pca_df = pd.DataFrame(result, columns=['x', 'y'])
两种方法都能得到和旧代码一致的结果,任选其一即可。
内容的提问来源于stack exchange,提问作者user10524276
相关产品推荐
相关产品推荐

