Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 1/9

Введение

Научимся извлекать из текстов признаки.

Чему вы научитесь

  • Узнаете, что такое мешок слов и N-граммы.
  • Освоите метод вычисления признаков TF-IDF.
  • Построите модель для классификации текстов.

Сколько времени это займёт

9 уроков по 10–15 минут.

Постановка задачи

Построим модель, которая классифицирует твиты положительной и отрицательной тональности.

Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 2/9
Кратко:
  • Токенизация: разбиение текста на отдельные фразы, слова и символы.
  • Лемматизация: приведение слова к начальной форме - лемме.
  • Функции лемматизации русского текста доступны в библиотеках pymorphy2 и UDPipe.
  • Пример работы с библиотекой pymystem3: создание класса для лемматизации и использование функций lemmatize() и join().
  • Работа с русскоязычным корпусом коротких текстов RuTweetCorp, содержащим 5000 записей с оценками тональности.
  • Импортирование данных и преобразование текста в стандартный для Python формат кодировки Unicode U.

МОТ.18/24.2/5.2/9.Задача 1

Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 3/9

Кратко:
  • Регулярные выражения используются для поиска и замены текста по шаблону.
  • Шаблоны определяют, из каких частей состоит строка и какие символы в ней содержатся.
  • В Python для работы с регулярными выражениями используется встроенный модуль re.
  • Функция re.sub() заменяет совпадения по шаблону заданной строкой.
  • Регулярное выражение для поиска кириллических символов и пробелов в тексте твита создается с использованием символа r и квадратных скобок.
  • Знак «домика» (^) перед набором символов указывает на то, что они не подходят под шаблон.
  • Лишние пробелы в тексте удаляются с помощью функций join() и split().

МОТ.18/24.2/5.3/9.Задача 1

Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 4/9

Кратко:
  • Мешок слов - метод преобразования текста в векторный формат, который не учитывает порядок слов.
  • Модель "мешок слов" работает путем подсчета количества вхождений каждого уникального слова в тексте.
  • N-граммы - словосочетания из нескольких слов, которые используются для анализа порядка слов и связей между ними.
  • N-граммы могут быть преобразованы в векторы аналогично модели "мешок слов".

Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 5/9

Кратко:
  • Создание мешка слов с помощью CountVectorizer из библиотеки sklearn.feature_extraction.text.
  • Метод fit_transform() для преобразования корпуса текстов в мешок слов.
  • Метод get_feature_names() для получения словаря уникальных слов в мешке.
  • N-граммы рассчитываются с помощью CountVectorizer и аргумента ngram_range.
  • Удаление стоп-слов для получения более чистого мешка слов.
  • Пакет stopwords из библиотеки nltk для получения списка стоп-слов.
  • Переопределение CountVectorizer с использованием списка стоп-слов для исключения ненужных слов.

МОТ.18/24.2/5.5/9.Задача 1

МОТ.18/24.2/5.5/9.Задача 2

Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 6/9

Кратко:
  • TF-IDF - оценка важности слова, основанная на частоте его употребления и количестве текстов с ним.
  • TF: количество упоминаний слова в тексте, t = количество употреблений слова, n = общее число слов в тексте.
  • IDF: учитывает частоту употребления слова во всем корпусе, зависит от числа текстов с этим словом и общего числа текстов в корпусе.
  • Большая TF-IDF указывает на уникальность слова в тексте по отношению к корпусу.
  • Чем чаще слово встречается в конкретном тексте и реже в остальных, тем выше TF-IDF.

Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 7/9

Кратко:
  • TF-IDF в sklearn: класс TfidfVectorizer() из модуля sklearn.feature_extraction.text.
  • Импортируйте TfidfVectorizer: from sklearn.feature_extraction.text import TfidfVectorizer.
  • Создайте счётчик с использованием TfidfVectorizer и стоп-слов: count_tf_idf = TfidfVectorizer(stop_words=stopwords).
  • Для подсчета TF-IDF для корпуса текстов вызовите fit_transform(): tf_idf = count_tf_idf.fit_transform(corpus).
  • Используйте аргумент ngram_range для расчета N-грамм.
  • Если данные разделены на обучающую и тестовую выборки, используйте fit() только для обучающей выборки.

МОТ.18/24.2/5.7/9.Задача 1

Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 8/9

Кратко:
  • Классификация тональности текста с использованием величин TF-IDF.
  • Анализ тональности текста выявляет эмоционально окрашенные слова.
  • Сентимент-анализ помогает компаниям оценивать реакцию на новые продукты.
  • Оценка тональности текста: положительный или отрицательный.
  • Задача классификации: целевой признак равен "1" для положительного текста, "0" для отрицательного.
  • Признаки: слова из корпуса и их величины TF-IDF для каждого текста.

МОТ.18/24.2/5.8/9.Задача 1

Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 9/9

Заключение

Теперь вы умеете:

  • Методом мешка слов находить векторы текстов;
  • Строить признаки методом TF-IDF;
  • Решать задачу классификации текстов.

Заберите с собой

Чтобы ничего не забыть, скачайте шпаргалку и конспект темы.

В следующей теме вы начнёте работать с языковыми представлениями.