Как передать препроцессор в TfidfVectorizer? - sklearn - питон

Как передать препроцессор в TfidfVectorizer? Я сделал функцию, которая принимает строку и возвращает строку препроцессора затем я установил параметр процессора для этой функции "preprocessor=preprocess", но он не работает. Я искал так много раз, но я не нашел никакого примера, как будто никто не использует его.

У меня есть еще один вопрос. Это (препроцессор) параметр переопределить удалением стоп-слов и lowereing случае, что можно сделать с помощью stop_words и строчные параметры?

1 ответов


вы просто определяете функцию, которая принимает строку в качестве входных данных и возвращает то, что должен быть предварительно обработан. Так, например, тривиальная функция для строк в верхнем регистре будет выглядеть так:

def preProcess(s):
    return s.upper()

как только вы сделали свою функцию, вы просто передаете ее в свой TfidfVectorizer "объект". Например:

from sklearn.feature_extraction.text import TfidfVectorizer

corpus = [
     'This is the first document.',
     'This is the second second document.',
     'And the third one.',
     'Is this the first document?'
     ]

X = TfidfVectorizer(preprocessor=preProcess)
X.fit(corpus)
X.get_feature_names()

результаты:

[u'AND', u'DOCUMENT', u'FIRST', u'IS', u'ONE', u'SECOND', u'THE', u'THIRD', u'THIS']

это косвенно отвечает на ваш последующий вопрос, поскольку, несмотря на то, что нижний регистр установлен в true, функция предварительной обработки верхний регистр переопределяет его. Это также упоминается в документации:

препроцессор: вызываемый или нет (по умолчанию) переопределение предварительной обработки (преобразование строки) этап при сохранении токенизации и шаги генерации n-граммов.