Skip to content

Автоматическое выявление токсичных комментариев

Notifications You must be signed in to change notification settings

schatzederwelt/toxic_comments_detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

Автоматическое выявление токсичных комментариев

Описание проекта

ЦЕЛЬ ПРОЕКТА:

Для интернет-магазина построить модель классификации комментариев на негативные и позитивные.

Каждый комментарий - это обратная связь и предложения правок к редактируемым описаниям товаров, которые формируются самими пользователями (свое вики-сообщество).

Модель предсказаний позволит эффективно модерировать контент и отслеживать токсичные комментарии.

Целевой KPI - метрика F1-score <= 0.75


ЛИЧНЫЕ ЦЕЛИ:

Применить на практике технику TF-IDF (анализ значимости слов в текстах) и провести небольшое исследование, чтобы узнать, какие подходы можно использовать для аналитики и улучшения предсказаний.

В дополнение:

  • вспомнить основы регулярных выражений

  • испытать готовую библиотеку для борьбы с дисбалансом imbLearn (вместо самописных функций)

  • научиться использовать метод Кси-Квадрат (chi-square) для анализа корреляции категорий

Посмотреть проект

Новые навыки


✔️ Анализ текста NLP ✔️ TF-IDF ✔️ Токенизация

✔️ Стемминг ✔️ Лемматизация ✔️ Частотный анализ слов

✔️ Chi-square тест для ключевых слов ✔️ Визуализация предсказаний LIME

✔️ Регулярные выражения ✔️ WordCloud

✔️ Библиотека imblearn для Oversampling & Downsampling

✔️ Регуляризация LinearRegression

Этапы исследования

  1. Провели предобработку текста в комментариях:

    • очистка от ссылок и символов (использовали регулярные выражения)
    • лемматизация с WordNetLemmatizer
    • стемминг c PorterStemmer
  2. С помощью WordCloud нашли ключевые слова в негативных комментариях

  3. Сделали первые эксперименты для улучшения результатов базовой линейной модели:

    • Выбрали стемминг вместо лемматизации
    • Улучшили модель фильтрацией редких слов с помощью FreqDist
    • Подобрали параметры для TFidfVectorizer - min_df и max_features
    • Сделали тюнинг регуляризации для Линейной Регрессии
  4. Провели детальное исследование частотности слов:

    • Выявили высокочастотные слова в TF-IDF (для сокращения признаков и улучшения качества предсказаний)
    • Придумали подход для поиска уникальных слов в негативных и позитивных комментариях
  5. Отобрали лучшие признаки-токены с помощью Chi-square теста

  6. Для проблемы с дисбалансом использовали 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