Возвращение короля текстов или как 5 аналитиков решали NLP 🤴



История о том, как я с командой участвовал в соревнованиях по Data Science (NLP). Расскажу о трудностях и о том, к чему пришли.



Относительно недавно я начал ботать DL / ML и решил, а почему бы не поучаствовать в NLP. Раскидали задачи и начали активно работать.



Основная задача - алгоритм ранжирования комментариев под текстом публикации.



Изначально, я думал, что речь идет по RecSys, как с карточками на маркетплейсах, когда вам предлагают похожие товары, но пока не будем про это 😢



Первый этап: EDA



Похоже на танцы с бубном и поиск зависимостей в данных. Было выделено несколько фич: количество стоп-слов, слов, предложений, читабельность, тональность и кучу других.



Какие инсайты получили?



Длина текста, определенная тональность и наличие других символов определяют Score на размеченных данных. Дисбаланса классов не было, к over_sampling не приходили 🤨



Второй этап: Обработка текста

Стеминг, лемматизация, создание эмбедингов (Word2Vec, TF-IDF, BERT, CountVectorizer), удаление знаков препинания (прикреплю классный слайд с презентации, который нашел на просторах GitHub). «Мешок слов» не использовали, потому что получается матрица, которая сжирает 1 терабайт памяти 😢



Третий этап:



Перебор сочетаний с Logistic Regression, KNN, RandomForest, GradientBoosting. Самый лучший NDCG Score = 0,92. При обработке через BERT, возможно, получили бы результат лучше. Имеем, что имеем, ждём результатов 🍷



Накидайте реакций, а я накачу пост про Deep Learning, а то немного выбился из режима 🗒