Windows10+IDLE环境下word2vec-google-news-300下载过慢咨询
word2vec-google-news-300数据集下载相关问题解答
1. 是否可以仅下载该数据集中的部分词汇?
直接用gensim.downloader的load()方法没法只下载部分词汇,因为官方提供的是完整的预训练模型包。但可以通过两种方式解决:
- 找可靠的第三方已经提取好的高频词汇子集(比如仅保留10万常用词),直接下载子集使用;
- 先完整下载一次模型,然后在本地提取需要的词汇向量保存成小文件,后续直接加载这个小文件即可,不用重复下载完整模型。
示例代码(提取并保存词汇子集):
import gensim.downloader as api import pickle # 仅需执行一次:完整加载模型 model = api.load('word2vec-google-news-300') # 定义你需要的目标词汇列表 target_words = ['apple', 'banana', 'car', 'house'] # 提取存在于模型中的词汇向量 subset_model = {word: model[word] for word in target_words if word in model} # 保存子集到本地 with open('word2vec_subset.pkl', 'wb') as f: pickle.dump(subset_model, f) # 后续使用时直接加载子集 with open('word2vec_subset.pkl', 'rb') as f: loaded_subset = pickle.load(f)
2. 是否可以将数据集下载为CSV格式,以便后续在程序中使用?
gensim.downloader默认下载的是二进制模型文件,没有直接导出CSV的选项,但可以自行转换。需要注意:完整模型包含300多万个词汇,转换成CSV后文件体积会远大于原模型,加载速度也不如二进制文件快,非必要不建议这么做。
转换为CSV的示例代码:
import gensim.downloader as api import pandas as pd # 加载模型 model = api.load('word2vec-google-news-300') # 方式1:将向量以字符串形式保存为单列 word_list = list(model.key_to_index.keys()) vector_list = [','.join(map(str, model[word])) for word in word_list] df = pd.DataFrame({'word': word_list, 'vector': vector_list}) df.to_csv('word2vec_google_news_300.csv', index=False) # 方式2:将向量拆分为300个单独列(文件会非常大) vector_df = pd.DataFrame([model[word] for word in word_list]) word_df = pd.DataFrame(word_list, columns=['word']) full_df = pd.concat([word_df, vector_df], axis=1) full_df.to_csv('word2vec_google_news_300_full.csv', index=False)
内容的提问来源于stack exchange,提问作者Repairer
相关产品推荐
相关产品推荐

