Спринт 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: Векторизация текстов → Урок 3/9
Кратко:
- Регулярные выражения используются для поиска и замены текста по шаблону.
- Шаблоны определяют, из каких частей состоит строка и какие символы в ней содержатся.
- В Python для работы с регулярными выражениями используется встроенный модуль re.
- Функция re.sub() заменяет совпадения по шаблону заданной строкой.
- Регулярное выражение для поиска кириллических символов и пробелов в тексте твита создается с использованием символа r и квадратных скобок.
- Знак «домика» (^) перед набором символов указывает на то, что они не подходят под шаблон.
- Лишние пробелы в тексте удаляются с помощью функций join() и split().
Спринт 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: Векторизация текстов → Урок 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: Векторизация текстов → Урок 8/9
Кратко:
- Классификация тональности текста с использованием величин TF-IDF.
- Анализ тональности текста выявляет эмоционально окрашенные слова.
- Сентимент-анализ помогает компаниям оценивать реакцию на новые продукты.
- Оценка тональности текста: положительный или отрицательный.
- Задача классификации: целевой признак равен "1" для положительного текста, "0" для отрицательного.
- Признаки: слова из корпуса и их величины TF-IDF для каждого текста.
Спринт 18/24 → Тема 2/5: Векторизация текстов → Урок 9/9
Заключение
Теперь вы умеете:
- Методом мешка слов находить векторы текстов;
- Строить признаки методом TF-IDF;
- Решать задачу классификации текстов.
Заберите с собой
Чтобы ничего не забыть, скачайте шпаргалку и конспект темы.
В следующей теме вы начнёте работать с языковыми представлениями.