gensim调用FastText预训练模型执行reduce_model报AttributeError如何解决
错误原因
reduce_model是官方fasttext库自带的工具方法,不属于gensim库的功能,你调用的gensim.models.fasttext.utils.reduce_model本身就是无效路径,自然会触发属性不存在的报错。- 该方法只能处理官方
fasttext.load_model()加载出来的模型对象,不兼容gensim加载的FastText模型实例。
修复方案
方案1:使用官方fasttext库完成降维(推荐)
直接按照官方示例逻辑调整代码即可,代码如下:
import fasttext import fasttext.util # 加载泰语300维预训练模型 ft = fasttext.load_model('cc.th.300.bin') # 降维到100维 fasttext.util.reduce_model(ft, 100) # 可选:保存降维后的模型方便后续调用 ft.save_model('cc.th.100.bin')
如果后续需要用gensim处理模型,直接用gensim加载上面保存的cc.th.100.bin即可。
方案2:基于gensim加载的模型手动降维
如果你必须使用gensim加载的模型对象,可以通过PCA手动实现向量降维,代码示例如下:
import gensim from sklearn.decomposition import PCA # 加载300维预训练模型 model = gensim.models.fasttext.FastText.load_fasttext_format('cc.th.300.bin') # 初始化PCA降维器 pca = PCA(n_components=100) # 对词向量矩阵降维 model.wv.vectors = pca.fit_transform(model.wv.vectors) # 同步对FastText特有的子词向量矩阵降维 model.wv.vectors_vocab = pca.transform(model.wv.vectors_vocab)
内容的提问来源于stack exchange,提问作者Wassakorn Sarakul
相关产品推荐
相关产品推荐

