Введение 5
Глава 1. Обработка естественного языка 7
1.1 Язык как данные 7
1.2 Машинное обучение как метод обработки данных 14
1.3 Классификация в текстовом анализе 18
1.4 Обзор классификаторов на основе машинного обучения 24
1.4.1 Логистическая регрессия 24
1.4.2 Метод k-ближайших соседей 30
1.4.3 Обучение на основе деревьев решений 34
1.4.4 XGBoost 40
Глава 2. Программа для классификации комментариев на 44
платформе "JetBrains Academy" 44
Комментарии на платформе "JetBrains Academy" 44
Предварительная обработка текстовых комментариев 45
Векторизация текстовых комментариев 49
Решеточный поиск 51
Оценка работы моделей 52
Словарь n-грамм 55
Окончательный вариант алгоритма 56
Заключение 59
Список источников 61
Приложение 1 65
Приложение 2 66
Приложение 3 66
Приложение 4 67
Приложение 5 67
Приложение 6 68
В современном деловом мире одной из важных задач является получение обратной связи от потребителя. Если таких комментариев получается слишком много, возникает задача их автоматической сортировки. В данной работе по заказу компании "JetBrains Academy"предпринята попытка автоматического выявления полезных комментариев к обучающим материалам по программированию.
Просматривать сообщения, оставленные пользователями необходимо, так как на их основе можно сделать вывод о качестве теоретического материала или понятности практических заданий. Проделывать эту операцию вручную затратно по ресурсам, поэтому и появляется необходимость автоматическим образом осуществить сортировку комментариев так, чтобы с высокой точностью отбрасывать тексты, не несущие полезной информации для создателей обучающего контента, и сохранять большую часть актуальной обратной связи, которая поможет усовершенствовать качество подаваемого материала.
Целью данной выпускной квалификационной работы является разработка алгоритма для автоматического выявления полезной обратной связи из комментариев к обучающим материалам платформы "JetBrains Academy".
Для достижения поставленной цели необходимо решить следующие задачи:
1. Изучить современные алгоритмы машинного обучения, выполняющие классификацию данных.
2. Выполнить предобработку корпуса комментариев,
предоставленного компанией.
3. Преобразовать комментарии в векторный формат.
4. Провести сравнительный анализ качества работы разных алгоритмов машинного обучения и способов трансформации текстовых данных в вектора.
5. На основе проведенного эксперимента выявить лучший алгоритм и оформить его в API, которым в дальнейшем смогут пользоваться сотрудники "JetBrains Academy".
Данная исследовательская работа имеет высокую практическую значимость, поскольку она поможет улучшить качество работы платформы, на которой обучается большое количество людей со всего мира.
Актуальность работы определяется тем, что на сегодняшний день не существует универсального подхода к решению такой проблемы как классификации текстов: данные из разных источников всегда различны и необходимо проводить глубокий анализ для достижения хороших результатов. Таким образом, проведенный эксперимент поможет выявить наиболее подходящий вариант работы с такими типами текстовых данных, какие могут встретиться в сфере обучения программированию
В современном мире существует возможность автоматизировать многие аспекты нашей жизни и работы, поэтому в данной выпускной квалификационной работе был произведен эксперимент по сортировке комментариев на обучающей платформе по программированию "JetBrains Academy"с помощью алгоритмов машинного обучения с учителем.
В первой главе освещалась тема естественного языка и как тексты на нем можно обрабатывать и классифицировать для различных задач. Также были подробно рассмотрены четыре алгоритма классификации: логистическая регрессия, метод k-ближайших соседей, случайный лес и XGBoost. Некоторые из них являются достаточно простыми и базовыми инструментами в машинном обучении, другие применяют более сложные и современные технологии. Во второй главе было рассказано о сравнительных результатах каждого из них.
Кроме того, в данной работе рассказывается о проблеме сочетания в одном тексте естественного языка и формального, которым является любые языки программирования. Были предложены способы очистки и подготовки данных для обучения классификатора : в практической части работы были рассмотрены три способа векторизации текстов (tf-idf, предобученные эмбеддинги GloVe и эмбеддинги предложений LaBSE), также были показаны примеры, как удалить из комментариев фрагменты кода с помощью регулярных выражений, и провести дополнительную фильтрация по метаинформации, указанной в исходном наборе данных.
Финальный алгоритм показал хорошие результаты на неразмеченных данных, поскольку он использует не только автоматический классификатор, но и словарь с n-граммами.
На примере проведенного эксперимента было доказано, что при работе с такими сложными данными и достаточно субъективной разметкой, проведенной сотрудниками компании, необходимо основательно изучить и подготовить датасет с текстами, чтобы избежать переобучения алгоритма машинного обучения, и, возможно, дополнить работу другими лексическими ресурсами.
1. Бенгфорт, Б. Прикладной анализ текстовых данных на Python. Машинное обучение и создание приложений обработки естественного языка. [Текст]: учеб. пособие / Б. Бенгфорт, Р. Билбро, Т. Охеда - СПб.: Питер, 2019. - 368 с.
2. Автоматическая обработка текстов на естественном языке и компьютерная лингвистика [Текст]: учеб. пособие / Е. И. Большакова, Э. С. Клышинский, Д. В. Ландэ и др. - М.: МИЭМ, 2011. - 272 с.
3. Грас, Д. Data Science. Наука о данных с нуля [Текст]: учеб. пособие / Д. Грас - СПб.: БХВ-Петербург, 2021. - 416 с.
4. Mason H. The Next Generation of Data Products [Электронный ресурс]. - URL: https://www.slideshare.net/continuumio/the-next-generation-of-data-products-anacondacon-2017(дата обращения: 07.03.2022)
5. Loukides, M. What is data science? [Электронный ресурс]: статья. - URL: https://www.oreilly.com/radar/what-is-data-science/ (дата обращения: 10.03.2022)
6. Bengfort, B. The Age of the Data Product. [Электронный ресурс]: статья. -URL: https://www.districtdatalabs.com/the-age-of-the-data-product(дата обращения: 10.03.2022)
7. Силен, Д. Основы Data Science и Big Data. Python и наука о данных. [Текст]: учеб. пособие / Д. Силен, А. Мейсман, А. Мохамед - СПб.: Питер, 2017. - 336 с.
8. Кантор, В. Просто о сложном: как человек учит машину учиться [Электронный
ресурс]: статья. - URL:https://theoryandpractice.ru/posts/12577-machine-learning(дата
обращения: 15.03.2022)
9. Букия, Г. Т. Анализ тональности [Текст]: статья / Г. Т. Букия, Е. В. Протопопова // Прикладная и компьютерная лингвистика. - М.: ЛЕНАНД, 2017. - C. 123-139.
10. Kumar, A. Model Selection Management Systems: The Next Frontier of Advanced Analytics [Электронный ресурс]: статья / A. Kumar, R. McCann, J. Naughton, J.M. Patel. - URL:https://adalabucsd.github.io/papers/2015 MSMS SIGMODRecord.pdf(дата обращения: 21.03.2022)
11. Wickham, H. Visualizing Statistical Models: Removing the Blindfold [Электронный ресурс]: статья / H. Wickham, D. Cook, H. Hofmann. - URL:http://had.co.nz/stat645/model-vis.pdf(дата обращения: 22.03.2022)
12. Рашка, С. Python и машинное обучение: машинное и глубокое обучение с использованием Python, scikit-learn и TensorFlow [Текст]: учеб. пособие / С. Рашка, В. Мирджалили - СПб.: Диалектика, 2019. - 656 с.
13. Хохлова, М. В. Анализ тональности [Текст]: статья // Прикладная и компьютерная лингвистика. - М.: ЛЕНАНД, 2017. - C. 245-258.
14. Гаршина, В. В. Разработка системы анализа тональности текстовой информации
[Электронный ресурс]: статья / В. В. Гаршина, К. С. Калабухов, В. А. Степанцов, С. В. Смотров. - URL: http://www.vestnik.vsu.ru/pdf/analiz/2017/03/2017-03-21.pdf(дата
обращения: 28.03.2022)
15. Кашницкий, Ю. Открытый курс машинного обучения. Тема 4. Линейные модели
классификации и регрессии [Электронный ресурс]: статья. - URL:
https://habr.Com/ru/company/ods/blog/323890/#2-logisticheskaya-regressiya(дата обращения: 02.04.2022)
16. Sarkar, DJ. Text Analytics with Python. A Practitioner’s Guide to Natural Language Processing. [Текст]: учеб. пособие / DJ. Sarkar - NY: Apress Media, 2019. - 674 c.
17. Conor, Mc. Machine learning fundamentals (I): Cost functions and gradient descent [Электронный ресурс]: статья. - URL:https://towardsdatascience.com/machine-learning-fundamentals-via-linear-regression-41a5d11 f5220(дата обращения: 04.04.2022)
18. Жерон, О. Прикладное машинное обучение с помощью Scikit-Learn, Keras и TensorFlow [Текст]: учеб. пособие / О. Жерон - СПб: Диалектика, 2020. - 1040 с.
19. Asiri, S. Machine Learning Classifiers [Электронный ресурс]: статья. - URL: https://towardsdatascience.com/machine-learning-classifiers-a5cc4e1b0623(дата обращения: 04.04.2022)
20. Brownlee, J. Parametric and Nonparametric Machine Learning Algorithms [Электронный ресурс]: статья. - URL:https://machinelearningmastery.com/parametric-and-nonparametric-machine-learning-algorithms/(дата обращения: 06.04.2022)
21. Норкин, Д. Учебник по машинному обучению от Школы анализа данных.
Метрические методы. [Электронный ресурс]: статья. - URL: https://ml-
handbook.ru/chapters/metric based/intro(дата обращения: 10.04.2022)
22. Орешков, В. Классификация данных методом k-ближайших соседей [Электронный ресурс]: статья. - URL:https://loginom.ru/blog/knn(дата обращения: 11.04.2022)
23. Шахиди, А. Деревья решений: общие принципы [Электронный ресурс]: статья. - URL:https://loginom.ru/blog/decision-tree-p1(дата обращения: 17.04.2022)
24. Sam T. Entropy: How Decision Trees Make Decisions [Электронный ресурс]: статья. - URL:https://towardsdatascience.com/entropy-how-decision-trees-make-decisions-2946b9c18c8(дата обращения: 17.04.2022)
25. Петухов, Д. Коэффициент Джини. Из экономики в машинное обучение. [Электронный ресурс]: статья. - URL:https://habr.com/ru/company/ods/blog/350440/(дата обращения: 20.04.2022)
26. Елистратова, Е. Учебник по машинному обучению от Школы анализа данных. Bias¬variance decomposition. [Электронный ресурс]: статья. - URL: https://ml-
handbook.ru/chapters/ensembles/intro(дата обращения: 26.04.2022)
27. Елистратова, Е. Учебник по машинному обучению от Школы анализа данных. Ансамбли в машинном обучении. [Электронный ресурс]: статья / Е. Елистратова, П. Губко. - URL:https://ml-handbook.ru/chapters/ensembles/intro(дата обращения: 27.04.2022)
28. Kashnitsky, Y. Bagging and Random Forest [Электронный ресурс]: статья. - URL: https://medium.com/open-machine-learning-course/open-machine-learning-course-topic-5-ensembles-of-algorithms-and-random-forest-8e05246cbba7(дата обращения: 01.05.2022)
29. Соколов, Е. А. Бэггинг, случайные леса и разложение ошибки на смещение и разброс [Электронный ресурс]: статья. - URL:https://github.com/esokolov/ml-course-hse/blob/master/2020-fall/lecture-notes/lecture08-ensembles.pdf(дата обращения: 02.05.2022)
30. Шалев-Шварц, Ш. Идеи машинного обучения: от теории к алгоритмам [Текст]: учеб. пособие / Ш. Шалев-Шварц, Ш. Бен-Давид. - М.: ДМК Пресс, 2019. - 436 с.
31. Aliyev, V. Machine Learning Algorithms from Start to Finish in Python: Logistic
Regression [Электронный ресурс]: статья. - URL:https://towardsdatascience.com/machine-learning-algorithms-from-start-to-finish-in-python-logistic-regression-5a62e3495318 (дата
обращения: 05.05.2022)
32. Фонарев, А. Ю. Обзор алгоритмов бустинга [Электронный ресурс]: статья. - URL: http://www.machinelearning.ru/wiki/images/9/9a/fonarev.overview of boosting methods.pdf(дата обращения: 05.05.2022)
33. Цыпленков, Л. Бустинг с помощью AdaBoost и Gradient Boosting [Электронный ресурс]: статья. - URL:https://lambda-it.ru/post/busting-s-pomoshchiu-adaboost-i-gradient-boosting(дата обращения: 07.05.2022)
34. Chen, T. XGBoost: A Scalable Tree Boosting System [Электронный ресурс]: статья /
T. Chen, C. Guestrin. - URL: https://arxiv.org/pdf/1603.02754.pdf(дата обращения:
08.05.2022)
35. Шитиков, В. К. Бинарные деревья решений [Электронный ресурс]: статья / В. К.
Шитиков, С. Э. Мастицкий. - URL:https://ranalytics.github.io/data-mining/052-Binary-
Decision-Trees.html(дата обращения: 08.05.2022)
36. Morde, V. XGBoost Algorithm: Long May She Reign! [Электронный ресурс]: статья.
- URL: https://towardsdatascience.com/https-medium-com-vishalmorde-xgboost-algorithm-
long-she-may-rein-edd9f99be63d(дата обращения: 10.05.2022)
37. Лутц, М. Python. Карманный справочник. [Текст]: учеб. пособие / М. Лутц - М.: И.Д. Вильямс, 2015. - 320. (дата обращения: 12.05.2022)
38. Mikolov, T. Efficient Estimation of Word Representations in Vector Space
[Электронный ресурс]: статья / T. Mikolov, G. Corrado, J. Dean. - URL:
https://arxiv.org/pdf/1301.3781.pdf(дата обращения: 16.05.2022)
39. Pennington, J. GloVe: Global Vectors for Word Representation [Электронный ресурс]: статья / J. Pennington, R. Socher, C.D. Manning URL:https://nlp. stanford. edu/pub s/glove.pdf(16.05.2022)
40. Fangxiaoyu, F. Language-agnostic BERT Sentence Embedding [Электронный ресурс]: статья / F. Fangxiaoyu, Y. Yinfei, D. Cer, N. Arivazhagan, W. Wang. - URL: https://arxiv.org/pdf/2007.01852.pdf(дата обращения: 18.05.2022)
41. Ohsaki, M. Confusion-matrix-based kernel logistic regression for imbalanced data classification // IEEE Transactions on Knowledge and Data Engineering. - 2017. - Т. 29. - №. 9. - С. 1806-1819. (дата обращения: 15.05.2022)