6.4 KiB
Лабораторная работа №2. Предварительная обработка текстовых данных
Цель работы
Получить практические навыки обработки текстовых данных в среде Jupiter Notebook. Научиться проводить предварительную обработку текстовых данных и выявлять параметры обработки, позволяющие добиться наилучшей точности классификации.
Задание
-
В среде Jupyter Notebook создать новый ноутбук (Notebook)
-
Импортировать необходимые для работы библиотеки и модули
-
Загрузить обучающую и экзаменационную выборку в соответствие с вариантом
-
Вывести на экран по одному-два документа каждого класса.
-
Применить стемминг, записав обработанные выборки (тестовую и обучающую) в новые переменные
-
Провести векторизацию выборки:
A. Векторизовать обучающую и тестовую выборки простым подсчетом слов (CountVectorizer)
B. Вывести и проанализировать первые 20 наиболее частотных слов всей выборки и каждого класса по-отдельности.
C. Применить процедуру отсечения стоп-слов и повторить пункт B.
D. Провести пункт A для обучающей и тестовой выборки, для которой выполнен стемминг.
-
Рассчитать сходство по коэффициенту Жаккара между тремя классами для исходых выборок и для выборок после отсечения стоп-слов. При подсчете использовать все слова выборки.
-
Используя конвейер (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, и т.д.
-
По каждому пункту работы занести в отчет программный код и результат вывода.
-
По результатам классификации занести в отчет выводы о влиянии каждого из этапов предобработки данных (наличие стемминга, взвешивание терминов, стоп-слова, количество информативных терминов) и о наиболее подходящей их комбинации. Объяснить различия (если имеются) в качестве классификации разных классов.
Варианты заданий
Вариант | Класс |
---|---|
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' |
Контрольные вопросы
- Особенности задачи классификации текстовых данных.
- Этапы предварительной обработки данных.
- Алгоритм и особенности Наивного Байесовского метода.
- Как влияет размер словаря терминов на точность классификации?
- Какие способы выявления информативных терминов вам известны?
- Как влияет способ взвешивания терминов на точность классификации?