如何正确inverse_transform TFIDF矢量化器

时间:2020-10-20 09:09:48

标签: scikit-learn tfidfvectorizer imblearn

我尝试使用以下代码使用imblearn对数据进行过采样

def oversample(df):

    description = df['DESCRIPTION']
    labels = df['LABEL']

    vec = TfidfVectorizer(
        norm='l2',
        lowercase=True,
        strip_accents=None,
        encoding='utf-8',
        preprocessor=None,
        token_pattern=r"(?u)\S\S+")
    desc = vec.fit_transform(description)
    encoder = LabelEncoder()
    encoder.fit(labels)
    labels = encoder.transform(labels)
    over = RandomOverSampler(random_state=0)
    X, y = over.fit_resample(desc, labels)
    oversampled_descriptions = vec.inverse_transform(X)
    label = encoder.inverse_transform(y)

但是,在文本排序方面存在问题,在对数据进行inverse_transform转换后,我得到的文本顺序错误。 如何保持相同的顺序?

1 个答案:

答案 0 :(得分:0)

你不能。

inverse_transform()不会重新构造文档-它仅返回每个文档具有的n-gram和在拟合过程中提取的n-gram。它可以使用的唯一信息是存储在 vocabulary _ 属性中的信息。

您可以在重新采样之前将 description 的索引添加到 desc ,然后使用它们分配 oversampled_descriptions