Python中GloVe、Word2Vec等文本向量化模型的训练向量存储属性问询
各文本向量化模型的训练向量存储属性
嘿,刚入坑Python和无监督学习的话,这些文本向量化模型的向量存储方式确实容易懵,我给你逐个拆解清楚:
- Word2Vec(Gensim实现):训练好的词向量都存在
wv这个属性里。比如要取单个词的向量,直接用word2vec_model.wv["sample_word"];如果要获取所有词的向量矩阵,用word2vec_model.wv.vectors就行,对应的词表可以通过word2vec_model.wv.index_to_key拿到。 - GloVe:如果是用Gensim加载预训练的GloVe向量,那和Word2Vec一样,向量存在
wv属性里,用法完全兼容。要是你自己用原始GloVe工具训练,训练完会生成词表和向量两个独立文件,得自己把它们加载成字典或者numpy数组来用——这种情况下没有内置的模型属性存储,但转成Gensim格式后就可以用wv了。 - FastText(Gensim实现):和Word2Vec的逻辑一致,词向量存在
wv属性里,用fasttext_model.wv["target_word"]就能取词向量。另外它支持子词特征,子词相关的向量分别存在wv.vectors_vocab(词表内词的向量)和wv.vectors_ngrams(子词向量)里。 - TF-IDF(Scikit-learn实现):这个模型比较特殊,它没有直接把训练文档的向量存在模型属性里,但你可以用
tfidf_model.transform(train_corpus)生成训练集的TF-IDF矩阵,这个矩阵就是所有训练文档的向量表示。另外,特征词的IDF值存在idf_属性里,对应的词表在vocabulary_属性中。 - Doc2Vec(Gensim实现):你已经熟悉的
docvecs在新版本Gensim里被换成了dv属性(不过旧版本还是保留docvecs),要获取某个文档标签的向量,用doc2vec_model.dv["your_doc_tag"]就行,所有文档的向量矩阵可以通过doc2vec_model.dv.vectors获取。
小提醒:不同库的实现细节会有差异,比如Gensim旗下的几个模型(Word2Vec、FastText、Doc2Vec)属性风格很统一,但Scikit-learn的TF-IDF是另一种设计逻辑,用的时候要注意区分所属库~
内容的提问来源于stack exchange,提问作者Dela
相关产品推荐
相关产品推荐

