# Лабораторная работа №2. Классификация текстовых данных ## Цель работы Получить практические навыки обработки и классификации текстовых данных в среде Jupiter Notebook. Научиться проводить предварительную обработку текстовых данных и выявлять параметры обработки, позволяющие добиться наилучшей точности классификации. Научиться применять модели word embedding для классификации данных. ## Задание ### Классический подход к обработке текстов 1. В среде Jupyter Notebook создать новый ноутбук (Notebook) 2. Импортировать необходимые для работы библиотеки и модули 3. Загрузить обучающую и экзаменационную выборку в соответствие с вариантом 4. Вывести на экран по одному-два документа каждого класса. 5. Провести векторизацию выборки: * Векторизовать обучающую и тестовую выборки простым подсчетом слов (`CountVectorizer`) * Вывести и проанализировать первые 20 наиболее частотных слов каждого класса по-отдельности. * Применить процедуру отсечения стоп-слов и повторить пункт B. Записать в **выводах** получившиеся различия. 7. Используя конвейер (`Pipeline`) реализовать baseline-модель (базовый варинат модели без специальной настройки гиперпараметров) Случайного леса. 8. Провести настройку гиперпараметров модели путем полного перебора, воспользовавшись классом `GridSearchCV`. Выявить значения гиперпараметров, обеспечивающие лучшее качество классификации на основе f1-меры. Должны быть исследованы следующие характеристики: * Отсечение \ не отсечение стоп-слов * Взвешивание: TF, TF-IDF * Количество информативных терминов (max_features) - исследовать 5 значений: {100, 1000, 10000, `dict_vol`}, где `dict_vol` - общее количества слов в выборке. * Количество деревьев `n_estimators`: {1, 5, 10, 20}. * Глубина дерева `max_depth`: {1, 5, 12, 25} ### Подход на основе эмбеддингов 8. Исходную выборку к привести к векторному представлению word embedding согласно варианту. 9. Провести обучение и настройку Случайного леса с помощью `GridSearchCV`, но при представлении текстов в виде word embedding. Сетку параметров выбрать ту же, что и в классическом подходе. 10. По каждому пункту работы занести в отчет программный код и результат вывода. 11. По результатам классификации занести в отчет выводы о: 1. схожести или различии разных классов с точки зрения самых встречающихся слов до и после удаления стоп-слов. 1. лучшей модели при классическом подходе к классификации текстов. Указать значение f1-меры и значения гиперпараметров модели 1. лучшей модели при использовании эмбеддингов. Указать значение f1-меры и значения гиперпараметров модели 1. Объяснить различия (если имеются) в качестве классификации **разных классов**. 1. Объяснить различия (какие имеются и почему) в качестве классификации **классическим подходом** и **при использовании эмбеддингов**. ## Варианты заданий | Вариант | Класс | | :--- | :---: | | 1 | 2, 3, 8 | | 2 | 6, 10, 11 | | 3 | 1, 9, 17 | | 4 | 7, 12, 18 | | 5 | 4, 14, 18 | | 6 | 1, 15, 16 | | 7 | 3, 7 , 13 | | 8 | 5, 16, 20 | | 9 | 6, 17, 19 | | 10 | 3, 5, 15 | | 11 | 7, 14, 20 | | 12 | 2, 12, 13 | Названия классов | № класса | Название класса | | :--- | :--- | |1 | 'alt.atheism'| |2 | 'comp.graphics'| |3 | 'comp.os.ms-windows.misc'| |4 | 'comp.sys.ibm.pc.hardware'| |5 | 'comp.sys.mac.hardware'| |6 | 'comp.windows.x'| |7 | 'misc.forsale'| |8 | 'rec.autos'| |9 | 'rec.motorcycles'| |10 | 'rec.sport.baseball'| |11 | 'rec.sport.hockey'| |12 | 'sci.crypt'| |13 | 'sci.electronics'| |14 | 'sci.med'| |15 | 'sci.space'| |16 | 'soc.religion.christian' | |17 | 'talk.politics.guns'| |18 | 'talk.politics.mideast'| |19 | 'talk.politics.misc'| |20 | 'talk.religion.misc'| | Вариант | Word embedding | | :--- | :--- | | 1 | glove-wiki-gigaword-50 | | 2 | glove-wiki-gigaword-100 | 3 | glove-wiki-gigaword-200 | | 4 | glove-wiki-gigaword-300 | | 5 | word2vec-google-news-300 | | 6 | glove-wiki-gigaword-200 | | 7 | glove-twitter-100 | | 8 | glove-twitter-200 | | 9 | glove-twitter-100 | | 10 | glove-twitter-25 | | 11 | word2vec-google-news-300 | | 12 | glove-twitter-50 | ## Контрольные вопросы 1. Особенности задачи классификации текстовых данных. 2. Этапы предварительной обработки данных. 3. Что такое word embedding, как они получаются? 4. Как влияет размер словаря терминов на точность классификации? 5. Какие способы выявления информативных терминов вам известны? 6. Как влияет способ взвешивания терминов на точность классификации?