как векторизатор scikit-learn обрабатывает знаки препинания - PullRequest
1 голос
/ 27 мая 2020

Я понимаю, что:

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()

имеет инструменты для работы с пунктуацией, а именно:

token_pattern = (?u)\\b\\w\\w+\\b

но как это на самом деле работает? Может ли кто-нибудь предоставить ПРОСТОЙ пример, например, с grep или sed, который использует это регулярное выражение? Спасибо.

1 Ответ

2 голосов
/ 27 мая 2020

Согласно docs;

Регулярное выражение, обозначающее, что составляет «токен», используется только если анализатор == 'word'. Регулярное выражение по умолчанию выбирает токены из 2 или более буквенно-цифровых символов c (знаки препинания полностью игнорируются и всегда рассматриваются как разделители токенов).

Объяснение данного регулярного выражения

(?u) - представляют собой юникод. Это заставит \w, \W, \b, \B, \d, \D, \s и \S выполнить сопоставление с семантикой Unicode.

\b - представляет границу слова и утверждает положение строки на границах.

\w - соответствует одиночному символу слова, т.е. [0-9a-zA- Z _] .

\w+ - соответствует одному или нескольким символам в границах слова. Обратите внимание, что в документации четко указано выбрать токены из 2 или более буквенно-цифровых символов c. Это причина, по которой регулярное выражение не содержит \w+, но содержит \w\w+.

Поскольку; данное регулярное выражение содержит только буквенно-цифровые символы c вместе с _; он отбрасывает все однобуквенные токены (например, I, 1, 2, et c.) , а также любые присутствующие символы пунктуации.

Вы можете найти реализацию данного regex, используя grep команду здесь.

Эта ссылка может помочь для реализации (?u) в grep.

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