You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MeanEmbeddingVectorizer对象无transform属性报错问题排查

问题背景

当前在开展文本分类相关工作,使用的数据集包含2列:一列为文本内容,另一列为对应分类标签。作为初学者跟随Word2Vec教程实操验证方案适配场景时,运行代码持续出现报错。

原有实现代码
class MeanEmbeddingVectorizer(object):
    def __init__(self, word2vec):
        self.word2vec = word2vec
        # if a text is empty we should return a vector of zeros
        # with the same dimensionality as all the other vectors
        self.dim = len(next(iter(word2vec.values())))
def fit(self, X, y):
        return self
def transform(self, X):
        return np.array([
            np.mean([self.word2vec[w] for w in words if w in self.word2vec]
                    or [np.zeros(self.dim)], axis=0)
            for words in X
        ])

train_df['clean_text_tok']=[nltk.word_tokenize(i) for i in train_df['clean_text']]
model = Word2Vec(train_df['clean_text_tok'],min_count=1)
w2v = dict(zip(model.wv.index_to_key, model.wv.vectors))
modelw = MeanEmbeddingVectorizer(w2v)
# converting text to numerical data using Word2Vec
X_train_vectors_w2v = modelw.transform(X_train_tok)
X_val_vectors_w2v = modelw.transform(X_test_tok)
运行报错信息
Dimension:  100
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-127-289141692350> in <module>
      4 modelw = MeanEmbeddingVectorizer(w2v)
      5 # converting text to numerical data using Word2Vec
----> 6 X_train_vectors_w2v = modelw.transform(X_train_tok)
      7 X_val_vectors_w2v = modelw.transform(X_test_tok)

AttributeError: 'MeanEmbeddingVectorizer' object has no attribute 'transform'
报错原因

核心问题是Python类定义的缩进错误。
定义MeanEmbeddingVectorizer类时,fit()和transform()两个方法没有和类内的__init__()方法保持同一缩进层级,二者实际被定义为了独立的全局函数,不属于MeanEmbeddingVectorizer类的成员方法。因此实例化类对象后调用transform()时,会提示对象不存在该属性。

修复方案

调整fit()、transform()方法的缩进,将两个方法纳入MeanEmbeddingVectorizer类的定义范围内,修正后的类定义代码如下:

class MeanEmbeddingVectorizer(object):
    def __init__(self, word2vec):
        self.word2vec = word2vec
        # 空文本返回与其他向量维度一致的零向量
        self.dim = len(next(iter(word2vec.values())))

    def fit(self, X, y):
        return self

    def transform(self, X):
        return np.array([
            np.mean([self.word2vec[w] for w in words if w in self.word2vec]
                    or [np.zeros(self.dim)], axis=0)
            for words in X
        ])

重新运行修正后的类定义代码,再执行后续的文本向量化逻辑即可解决该报错。


内容的提问来源于stack exchange,提问作者Gabry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:30:05