Как правильно использовать векторизатор inverse_transform TFIDF

я пытаюсь передискретизировать данные, используя 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 данных, я получаю текст в неправильном порядке. Как я могу поддерживать тот же порядок?


person Exorcismus    schedule 20.10.2020    source источник
comment
Предоставьте пример фрейма входных данных. Какой результат вы получаете? Что вы ожидаете?   -  person mbatchkarov    schedule 20.10.2020


Ответы (1)


Вы не можете.

inverse_transform() не восстанавливает документ обратно — он возвращает только n-граммы, которые были в каждом документе и которые были извлечены во время подбора. Единственная информация, которую он может использовать, — это информация, сохраненная в атрибуте vocabulary_.

Вы можете добавить индексы description в desc перед повторной выборкой, а затем использовать их для назначения oversampled_descriptions.

person Roeik    schedule 21.10.2020