Когда процесс удаления стоп-слова выполняется в sklearn TfidfVectorizer?

Если я передам список настраиваемых игнорируемых слов в _1 _, когда именно стоп-слова будут удалены? Согласно документации:

стоп-слова: string {‘english’}, list или None (по умолчанию)

...

Если список, предполагается, что этот список содержит стоп-слова, все из которых будут удалены из результирующих токенов. Применимо только если analyzer == 'word'.

так что кажется, что процесс происходит после токенизации, я прав? Сомнение возникает, потому что, если токенизация также включает в себя стемминг, я думаю, есть риск ошибочно пропустить (не удалить) стоп-слово, потому что после стемминга он больше не распознается.


person Eugenio    schedule 27.02.2018    source источник


Ответы (1)


так кажется, что процесс происходит после токенизации, я прав?

Ты прав. stop_words применяются, когда токены уже получены и превращаются в последовательность n-граммов, см. _ 2_. Токенизатор получает текст сразу после предварительной обработки, стоп-слова не используются.

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

person Maxim    schedule 27.02.2018
comment
Спасибо, поэтому, если я хочу выполнить процесс удаления перед передачей корпуса в sklearn, после токенизации и ограничения корпуса, я думаю, мне просто нужно сделать что-то ike tokens = [w for w в токенах, если w не в stop_words]. Вы упомянули n-граммы, но я думаю, что n-граммы (если n ›1) производятся позже: 1) токенизация 2) удаление стоп-слов 3) n-граммы, я прав? Наконец, у меня все еще есть сомнение, которое я упомянул в конце вопроса: я не могу придумать конкретный пример, но если слово является стоп-словом, а после остановки - нет, оно не будет удалено. - person Eugenio; 28.02.2018
comment
tokens = [w for w in tokens if w not in stop_words] - это именно то, что делает scikit-learn, см. Ссылку GitHub, которую я предоставил. После чего занимается n-граммами. - person Maxim; 28.02.2018
comment
Еще раз спасибо, есть какие-либо сведения о проблеме, которую я упомянул (стоп-слова не удалены, потому что после стемминга они больше не являются стоп-словами)? - person Eugenio; 28.02.2018