ЦЕЛЬ ПРОЕКТА:
Для интернет-магазина
построить модель классификации комментариев на негативные и позитивные.
Каждый комментарий - это обратная связь и предложения правок к редактируемым описаниям товаров, которые формируются самими пользователями (свое вики-сообщество).
Модель предсказаний позволит эффективно модерировать контент и отслеживать токсичные комментарии
.
Целевой KPI - метрика F1-score <= 0.75
ЛИЧНЫЕ ЦЕЛИ:
Применить на практике технику TF-IDF (анализ значимости слов в текстах) и провести небольшое исследование, чтобы узнать, какие подходы можно использовать
для аналитики и улучшения предсказаний.
В дополнение:
-
вспомнить основы регулярных выражений
-
испытать готовую библиотеку для борьбы с дисбалансом
imbLearn
(вместо самописных функций) -
научиться использовать метод Кси-Квадрат (
chi-square
) для анализа корреляции категорий
✔️ Анализ текста NLP ✔️ TF-IDF ✔️ Токенизация
✔️ Стемминг ✔️ Лемматизация ✔️ Частотный анализ слов
✔️ Chi-square тест для ключевых слов ✔️ Визуализация предсказаний LIME
✔️ Регулярные выражения ✔️ WordCloud
✔️ Библиотека imblearn для Oversampling & Downsampling
✔️ Регуляризация LinearRegression
-
Провели
предобработку текста
в комментариях:- очистка от ссылок и символов (использовали регулярные выражения)
- лемматизация с WordNetLemmatizer
- стемминг c PorterStemmer
-
С помощью WordCloud нашли ключевые слова в
негативных комментариях
-
Сделали первые эксперименты для улучшения результатов базовой линейной модели:
- Выбрали
стемминг
вместо лемматизации - Улучшили модель фильтрацией редких слов с помощью FreqDist
- Подобрали параметры для TFidfVectorizer -
min_df
иmax_features
- Сделали тюнинг регуляризации для Линейной Регрессии
- Выбрали
-
Провели детальное исследование частотности слов:
- Выявили высокочастотные слова в TF-IDF (для сокращения признаков и улучшения качества предсказаний)
- Придумали подход для поиска
уникальных
слов в негативных и позитивных комментариях
-
Отобрали лучшие признаки-токены с помощью Chi-square теста
-
Для проблемы с дисбалансом использовали Undersampling библиотеки imblearn
На последнем этапе мы интерпретировали предсказания и сделали визуализацию LIME для оценки слабых сторон модели
Мы построили линейную модель предсказания токсичности комментариев и выполнили KPI F1 score > 0.75
.
-
С помощью
Feature Engineering
и балансировки классов мы достигли f1-score = 0.82 на тесте -
Recall предсказаний негативного (токсичного) класса вырос с
0.63 до 0.8
-
Для обучения использовали всего
850 признаков
-слов.
леммы | стемминг | voc_freq > 100 | max_features = 3000 | C_parameter = 5 | L1_reg | chi2_p_1 | 50_tokens | under_sampling | TEST | |
---|---|---|---|---|---|---|---|---|---|---|
f1-score | 0.742784 | 0.748111 | 0.757072 | 0.758621 | 0.777382 | 0.784375 | 0.793117 | 0.812384 | 0.811304 | 0.822401 |
recall | 0.623219 | 0.634615 | 0.648148 | 0.650285 | 0.700142 | 0.715100 | 0.722222 | 0.744285 | 0.790008 | 0.803598 |
precision | 0.919118 | 0.911043 | 0.910000 | 0.910269 | 0.873778 | 0.868512 | 0.879445 | 0.894201 | 0.833780 | 0.842105 |
Качество предсказаний можно улучшить, если провести еще более глубокий анализ текстов, а также воспользоваться новыми идеями
, которые возникли за время проекта:
- "*ucking" слова- 100% индикаторы негативных комментариев
- Текст КРУПНЫМИ буквами, много восклицательных знаков (!!!) - негативные эмоции
import pandas as pd
pd.set_option("display.max_colwidth", 500)
df = pd.read_csv("/datasets/toxic_comments.csv")
df.sample(5)
text | toxic | |
---|---|---|
44661 | There is only one way to settle this dilemma, we vote for the color of the infobox, Oakland Athletics or New York Yankees. Having A's colors on Reggie Jackson's page is the most worst thing ever. Everyone remembers Reggie as a Yankee, the three homeruns in the world series, the argument with Billy Martin, etc. Reggie had his greatest success as a Yankee. And lets face it nobody likes the Oakland A's #9 Reggie Jackson but everbody loves the New York Yankees #44 Reggie Jackson. Reggie wil... | 0 |
52006 | Comment on the question about including separate sections for health, environmental, and economic damage. I don't feel that it is appropriate for this article about BP to include these sections. I believe that the editors that have argued for including these sections have presented their arguments very well, but it could also be argued that including such a brief summary (as must be) in one sense tends to minimize the issues. But mainly, the information just seems out of place in this art... | 0 |
9770 | Reworked to something verifiable. | 0 |
127777 | disruption \n\ni am not disrupting it YOU ARE \n\nI have to warn that Richhno to stay away from my project, Vanity Kills. \n\nPlease do not bother me (or any other team member) with this crap again. | 1 |
142387 | "\n\nThe sources given for monarchs seems to give a finite number to them, so no, they do not have infinite wealth. Many monarchs never had their wealth valued, but those that did shoudl be here, this is the lsit for them afterall and they are not knocking anyone off by appearing. [tk] " | 0 |