Русские тексты. Работа с текстами. Предварительная обработка русских текстовых данных

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Предварительная обработка текстовых данных: ключевые этапы и методы

Текстовые данные — один из самых сложных типов данных для анализа из-за их неструктурированной природы и высокой вариативности. Чтобы превратить "сырой" текст в информацию, пригодную для машинного обучения или лингвистического анализа, требуется предварительная обработка. Этот процесс включает стандартизацию, очистку и преобразование текста, что повышает качество моделей NLP (Natural Language Processing). Рассмотрим основные этапы и методы.

# создание функции очистки текстовых данных
def clean_text(text):

    # Приведение текста к нижнему регистру
    text = text.lower()

    # Замена всех не-словесных символов на пробел (кроме букв и знаков препинания)
    text = re.sub(r'\W+', ' ', text)

    # Удаление URL-адресов
    text = re.sub(r"http\S+", "", text)

    # Создание шаблона для HTML-тегов
    html = re.compile(r'<.*?>')

    # Удаление HTML-тегов из текста
    text = html.sub(r'', text)

    # Список пунктуаций для удаления
    punctuations = '@#!?+&*[]-%.:/();$=><|{}^' + "'`" + '_'
    for p in punctuations:
        text = text.replace(p, '')  # Удаление пунктуации

    # Удаление стоп-слов и приведение слов к нижнему регистру
    text = [word.lower() for word in text.split() if word.lower() not in sw]

    # Объединение слов обратно в текст
    text = " ".join(text)

    # Создание шаблона для поиска эмодзи
    emoji_pattern = re.compile("["
                           u"\U0001F600-\U0001F64F"  # эмоции
                           u"\U0001F300-\U0001F5FF"  # символы и пиктограммы
                           u"\U0001F680-\U0001F6FF"  # транспорт и карты
                           u"\U0001F1E0-\U0001F1FF"  # флаги
                           u"\U00002702-\U000027B0"
                           u"\U000024C2-\U0001F251"
                           "]+", flags=re.UNICODE)

    # Удаление эмодзи из текста
    text = emoji_pattern.sub(r'', text)

    return text

Функция выполняет следующие действия:

  1. Приведение к нижнему регистру

  2. Удаление всех спецсимволов

  3. Удаление URL адресов

  4. Удаление HTML-тегов

  5. Удаление пунктуации

  6. Очистка от стоп-слов

  7. Удаление эмодзи

Приведение к нижнему регистру стандартизирует текстовые данные и позволяет воспринимать разные формы слова как одну. Спецсимволы не несут никакой смысловой нагрузки и путают алгоритмы кластеризации. При рассмотрении жалоб, нам не приносят никакой информации URL адреса и HTML-теги. Убирая пунктуацию, мы убираем лишние шумы в данных и сокращаем размер словаря. Удаление стоп-слов для обучения модели помогает уменьшить объём текста и сосредоточиться на важных и значимых словах. Эмодзи создают шумы в данных и не несут смысловой нагрузки при рассмотрение нашей проблемы.

# инициализация анализатора(лемматизатора)
morph = pymorphy3.MorphAnalyzer()

# инициализация функции лемматизации текстовых данных
def lemmatize(text: str) -> str:

    # создание списка лемматизированных слов
    lemmas = [morph.parse(token)[0].normal_form for token in text.split()]

    # объединение слов в текст
    processed_text = " ".join(lemmas)

    return processed_text

Загрузка и нормализация текста

Первый шаг — приведение текста к единому формату. Это включает:

  • Удаление лишних символов: HTML-тегов, спецсимволов (например, \n, \t), эмодзи или URL-ссылок.

  • Нормализация кодировки (например, UTF-8) для корректного отображения символов.

  • Приведение к нижнему регистру для устранения различий между словами в разном регистре (например, "Текст" → "текст").

Пример:
Исходный текст: "ПРИвет! Посетите наш сайт: https://example.com

Источник: https://habr.com/ru/articles/881998/


Интересные статьи

Интересные статьи

Всем привет! Меня зовут Владислав Давыдов, я главный менеджер центра развития цифровых технологий компании «Норникель».Возможно, вы уже знаете, что «Норникель» ведет разработку промышленного экзоскеле...
Всем привет! На связи ИТ-команда подразделения ДОМ.РФ Земли. Мы занимаемся автоматизацией вовлечения в оборот неиспользуемых или используемых не по назначению федеральных земельных участков и объектов...
В этой статье мы популярно объясняем на собственном опыте как организовать массовую выгрузку, обработку и загрузку фотографий товаров из Bitrix, используя Python и минимальное количество SQL. Для проч...
Привет, меня зовут Улукбек, я фронтенд-разработчик в команде, которая работает над продуктом «Ипотека» в Райффайзенбанке. Под катом я попробую рассказать, как разработчик может не только просто реализ...
Часто при разговорах с клиентами мы спрашиваем, как они ведут учет различных данных и используют ли они CRM-систему? Популярный ответ — мы работаем с Excel-файлами, а пот...