TGViewer
Мир аналитика данных Мир аналитика данных @analysts_world · 4.56K subscribers
Post #272 2.07K
🔍 Регулярки на практике: ищем посты про ИИ в датасете

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

📌 Задача
Допустим, у нас есть таблица с какими-то названиями клиентов или там, новостей, или ссылок. Нужно выбрать только те, где упоминается что-то связанное с искусственным интеллектом (или его синонимами).

🔧 Решение через регулярки

🎲 Создаём мини-датасет для примера
import pandas as pd
data = {
'title': [
'Новости про ИИ',
'Котики в тренде',
'Машинное обучение и нейросети',
'Что такое Artificial intelligence?',
'Погода на завтра'],
'domain': ['tech.ru', 'cats.com', 'ai-news.org', 'science.com', 'weather.net']
}

df = pd.DataFrame(data)


🔍 Задаём паттерн для поиска
pattern = r'\b(?:ИИ|искусственный интеллект|AI|Artificial intelligence|нейросет|машинное обучение)\b' 


🎯 Фильтруем записи, где есть совпадения в title или domain

df_final = df[
df['title'].str.contains(pattern, case=False, regex=True, na=False) |
df['domain'].str.contains(pattern, case=False, regex=True, na=False)
]


💡 Ключевые параметры:
1️⃣ pattern — что ищем (текст или регулярка).

Что внутри него: raw-строки

➡️r' ' - это raw-строки, в них экранирование не происходит. Если объяснить проще, то вот например
print(r'1\t2') Выведет: 1\t2
print('1\t2') Выведет: 1 2 (табуляция или длинный пробел)
То есть r' ' — это как видишь, так и получаешь

Границы слов (\b):
➡️ Гарантирует, что ищется целое слово, а не часть слова
➡️ Например, найдет "ИИ" в "развитие ИИ", но не найдет в каком-то слове с ошибкой типа "фииалка")

Незахватывающая группа (?:...):
➡️Группирует альтернативы, но не запоминает совпадение для последующего использования
➡️Более эффективна, чем обычная группа (...), когда не нужно извлекать совпавший текст

Альтернатива
➡️| - логический оператор "ИЛИ", разделяющий слова, которые мы ищем

2️⃣case=False — игнорировать регистр (ИИ = ии = Ии).

3️⃣regex=True (по умолчанию True) — считать паттерн регулярным выражением. Если False, ищет точное совпадение строки еще и с учетом регистра.

4️⃣na=False — пропускать NaN (возвращать False вместо ошибки).

Ну и потом фильтруем базар датафрейм df если что-то отыскалось в колонках title или domain.

🚀 Так можно анализировать какие-то большие текстовые данные, для парсинга новостей можно использовать, ну или в
фильтрации сообщений в чат-ботах.
  • ❤ 12
  • ❤‍🔥 4
  • 👍 1
More from @analysts_world
  1. Sep 21, 2026📊 Задачка с собеседования Ну что, по итогам голосования большинство хотят задачки и sql.…
  2. Sep 14, 2026Post #345
  3. Sep 14, 2026Что-то я тут прям зачастила с A/B тестами 😅 Смотрю на последние посты и такое чувство, чт…
  4. Sep 1, 2026🎒 С 1 сентября, друзья! Сегодня как раз отправила своих детей в школу – и вот это чувство…
  5. Aug 24, 2026Вне выборки Обычно здесь про SQL, Python и AB-тесты. Но не всё, что важно, попадает в выбо…
  6. Aug 20, 2026Fuckup Night от создателей Trisigma, Ares и karpov.courses Согласитесь, ивенты, где все де…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →