# Лабораторная работа №2. Предварительная обработка текстовых данных ## Цель работы Получить практические навыки обработки текстовых данных в среде Jupiter Notebook. Научиться проводить предварительную обработку текстовых данных и выявлять параметры обработки, позволяющие добиться наилучшей точности классификации. ## Задание 1. В среде Jupyter Notebook создать новый ноутбук (Notebook) 2. Импортировать необходимые для работы библиотеки и модули 3. Загрузить обучающую и экзаменационную выборку в соответствие с вариантом 4. Вывести на экран по одному-два документа каждого класса. 5. Применить стемминг, записав обработанные выборки (тестовую и обучающую) в новые переменные 6. Провести векторизацию выборки: 1. Векторизовать обучающую и тестовую выборки простым подсчетом слов (CountVectorizer) 1. Вывести и проанализировать первые 20 наиболее частотных слов всей выборки и каждого класса по-отдельности. 1. Рассчитать сходство по коэффициенту Жаккара между тремя классами 1. Применить процедуру отсечения стоп-слов и повторить пункты b-c. 1. Провести пункты a – c для обучающей и тестовой выборки, для которой проведена процедура стемминга. 1. Векторизовать выборки с помощью TfidfTransformer (с использованием TF и TF-IDF взвешиваний). 7. Используя конвейер (Pipeline) реализовать модель Наивного Байесовского классификатора и выявить на основе показателей качества (значения полноты, точности, f1-меры и аккуратности), какая предварительная обработка данных обеспечит наилучшие результаты классификации. Должны быть исследованы следующие характеристики: * Наличие \ отсутствие стемминга * Отсечение \ не отсечение стоп-слов * Взвешивание: Count, TF, TF-IDF * Количество информативных терминов (max_features) - исследовать 5 значений: {100, 1000, 5000, 10000, dict_vol}, где dict_vol - общего количества слов в выборке. При проведении данного исследования предлагается зафиксировать все переменные кроме одной, а далее менять незафиксированную переменную для определения ее наилучего значения. После того как наилучшее значение найдено, фиксировать это значение, и переходить к следующей переменной. Например, ищем оптимальные значения для переменных A, B, C: фиксируем переменные А = 10, B = False, находим оптимальное значение переменной С. Пусть оптимальное значение С = 20,42. Теперь фиксируем B = False, C = 20,42, ищем оптимальное значение переменной A, и т.д. 8. По каждому пункту работы занести в отчет программный код и результат вывода. 9. По результатам классификации занести в отчет выводы о влиянии каждого из этапом предобработки данных (наличие стемминга, взвешивание терминов, стоп-слова, количество информативных терминов) и о наиболее подходящей их комбинации. Объяснить различия (если имеются) в качестве классификации разных классов. ## Варианты заданий | Вариант | Класс | | :--- | :---: | | 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'| ## Контрольные вопросы 1. Особенности задачи классификации текстовых данных. 2. Этапы предварительной обработки данных. 3. Алгоритм и особенности Наивного Байесовского метода. 4. Как влияет размер словаря терминов на точность классификации? 5. Какие способы выявления информативных терминов вам известны? 6. Как влияет способ взвешивания терминов на точность классификации?