diff --git a/labs/OATD_LR2.md b/labs/OATD_LR2.md index 8165992..95e8e06 100644 --- a/labs/OATD_LR2.md +++ b/labs/OATD_LR2.md @@ -1,45 +1,58 @@ -# Лабораторная работа №2. Предварительная обработка текстовых данных +# Лабораторная работа №2. Классификация текстовых данных ## Цель работы -Получить практические навыки обработки текстовых данных в среде Jupiter Notebook. -Научиться проводить предварительную обработку текстовых данных и выявлять параметры обработки, позволяющие добиться наилучшей точности классификации. +Получить практические навыки обработки и классификации текстовых данных в среде Jupiter Notebook. +Научиться проводить предварительную обработку текстовых данных и выявлять параметры обработки, позволяющие добиться наилучшей точности классификации. Научиться применять модели word embedding для классификации данных. ## Задание +### Классический подход к обработке текстов + 1. В среде Jupyter Notebook создать новый ноутбук (Notebook) 2. Импортировать необходимые для работы библиотеки и модули 3. Загрузить обучающую и экзаменационную выборку в соответствие с вариантом 4. Вывести на экран по одному-два документа каждого класса. 5. Провести векторизацию выборки: - A. Векторизовать обучающую и тестовую выборки простым подсчетом слов (CountVectorizer) + * Векторизовать обучающую и тестовую выборки простым подсчетом слов (`CountVectorizer`) - B. Вывести и проанализировать первые 20 наиболее частотных слов всей выборки и каждого класса по-отдельности. + * Вывести и проанализировать первые 20 наиболее частотных слов каждого класса по-отдельности. - C. Применить процедуру отсечения стоп-слов и повторить пункт B. + * Применить процедуру отсечения стоп-слов и повторить пункт B. Записать в **выводах** получившиеся различия. + - D. Применить стемминг, записав обработанные выборки (тестовую и обучающую) в новые переменные - - E. Провести пункт A для обучающей и тестовой выборки, для которой выполнен стемминг. - -6. Рассчитать сходство по коэффициенту Жаккара между тремя классами для исходых выборок и для выборок после отсечения стоп-слов. При подсчете использовать все слова выборки. -7. Используя конвейер (Pipeline) реализовать модель Наивного Байесовского классификатора и выявить на основе показателей качества -(значения полноты, точности, f1-меры и аккуратности), какая предварительная обработка данных обеспечит наилучшие результаты классификации. -Должны быть исследованы следующие характеристики: - * Наличие \ отсутствие стемминга +7. Используя конвейер (`Pipeline`) реализовать baseline-модель (базовый варинат модели без специальной настройки гиперпараметров) Случайного леса. +8. Провести настройку гиперпараметров модели путем полного перебора, воспользовавшись классом `GridSearchCV`. Выявить значения гиперпараметров, обеспечивающие лучшее качество классификации на основе f1-меры. Должны быть исследованы следующие характеристики: * Отсечение \ не отсечение стоп-слов - * Взвешивание: Count, TF, TF-IDF - * Количество информативных терминов (max_features) - исследовать 5 значений: {100, 1000, 5000, 10000, dict_vol}, где dict_vol - общее количества слов в выборке. + + * Взвешивание: 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} - При проведении данного исследования предлагается зафиксировать все переменные кроме одной, а далее менять незафиксированную переменную для определения ее наилучего значения. - После того как наилучшее значение найдено, фиксировать это значение, и переходить к следующей переменной. - Например, ищем оптимальные значения для переменных A, B, C: фиксируем переменные А = 10, B = False, находим оптимальное значение переменной С. Пусть оптимальное значение С = 20,42. - Теперь фиксируем B = False, C = 20,42, ищем оптимальное значение переменной A, и т.д. +### Подход на основе эмбеддингов -8. По каждому пункту работы занести в отчет программный код и результат вывода. -9. По результатам классификации занести в отчет выводы о влиянии каждого из этапов предобработки данных (наличие стемминга, взвешивание терминов, стоп-слова, количество информативных терминов) и о наиболее подходящей их комбинации. Объяснить различия (если имеются) в качестве классификации разных классов. +8. Исходную выборку к привести к векторному представлению word embedding согласно варианту. +9. Провести обучение и настройку Случайного леса с помощью `GridSearchCV`, но при представлении текстов в виде word embedding. Сетку параметров выбрать ту же, что и в классическом подходе. +10. По каждому пункту работы занести в отчет программный код и результат вывода. +11. По результатам классификации занести в отчет выводы о: + + 1. схожести или различии разных классов с точки зрения самых встречающихся слов до и после удаления стоп-слов. + + 1. лучшей модели при классическом подходе к классификации текстов. Указать значение f1-меры и значения гиперпараметров модели + + 1. лучшей модели при использовании эмбеддингов. Указать значение f1-меры и значения гиперпараметров модели + + 1. Объяснить различия (если имеются) в качестве классификации **разных классов**. + + 1. Объяснить различия (какие имеются и почему) в качестве классификации **классическим подходом** и **при использовании эмбеддингов**. + + ## Варианты заданий @@ -83,11 +96,27 @@ |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. Алгоритм и особенности Наивного Байесовского метода. +3. Что такое word embedding, как они получаются? 4. Как влияет размер словаря терминов на точность классификации? 5. Какие способы выявления информативных терминов вам известны? 6. Как влияет способ взвешивания терминов на точность классификации?