CountVectorizer не уважает регулярное выражение - PullRequest
0 голосов
/ 11 мая 2018

Я использую следующий код для получения матрицы терминов документа:

from nltk.stem import SnowballStemmer
from sklearn.feature_extraction.text import CountVectorizer

stemmer = SnowballStemmer("english", ignore_stopwords=True)


class StemmedCountVectorizer(CountVectorizer):
    def build_analyzer(self):
        analyzer = super(StemmedCountVectorizer, self).build_analyzer()
        return lambda doc: ([stemmer.stem(w) for w in analyzer(doc)])

stemmed_count_vect = StemmedCountVectorizer(stop_words='english', 
                                            ngram_range=(1,1), 
                                            token_pattern=r'\b\w+\b', 
                                            min_df=1, 
                                            max_df=0.6)

Тем не менее, я все еще получаю такие элементы:

20009
2000mile
20011
20017
2001â
2007s
20081007
200h

Как исправитьэто?

1 Ответ

0 голосов
/ 11 мая 2018

Этот шаблон token_pattern=r'\b\w+\b' говорит, что ему нужен один или несколько членов класса символов \w между границами слов.Этот класс символов

[m] atches символов слова Unicode;это включает в себя большинство символов, которые могут быть частью слова на любом языке, а также цифры и подчеркивание.

Так что, мне кажется, вам нужен менее инклюзивный класс символов (пропуская цифры для начала).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...