Skip to content

ficusss/Toxic-Comment-Classification

Repository files navigation

Toxic Comment Classification (TCC)

banner image

Введение. Цель проекта

Количество комментариев, ежедневно оставляемых пользователями в сети, огромно, и многие из них являются в той или иной степени оскорбительными. Очевидно, что в деле своевременного выявления и классификации таких сообщений сейчас не обойтись без автоматизации, поскольку она позволяет анализировать огромное количество данных за короткое время. Предлагаемый нами продукт поможет владельцам различных социальных платформ значительно упростить процесс проверки подозрительных пользовательских сообщений на предмет соответствия политике компании. Он хорошо подстраивается под правила конкретного сервиса, так как позволяет классифицировать, какого рода "недоброжелательность" высказана в том или ином сообщении, а также определить процентное соотношение этих видов "недоброжелательности" в исследуемом комментарии.

Все виды "недоброжелательности", поддерживаемые на данный момент:

  • оскорбительный;
  • чрезвычайно оскорбительный;
  • непристойный;
  • угрожающий;
  • унизительный;

Сравнение с аналогами

Название продукта Интерактивная обработка Классификация содержания GUI Открытый исходный код
TCC - + - +
Perspective + - + -
Detecting insults - - - +

Для простого выявления агрессивных сообщений есть большое число средств, однако, представленная работа позволяет получить более детальную информацию, полезную не только при поддержании порядка, но и при анализе аудитории ресурса.

Требования к аппаратуре

Пункт Требование
Оперативная память (RAM) 2 ГБ и больше
Свободное место на жёстком диске ~3 Мбайт
Процессор не ниже Intel Celeron 1Ghz
Операционная система Windows 7 и выше

Требования к программному обеспечению

  • Microsoft Windows 7 (x86/x64) или новее.
  • Microsoft Visual C++ 2015 Redistributable Package или новее. Опционально для запуска некоторых скриптов:
  • Python 3.6.

Средства разработки программного обеспечения

Среда разработки:

  • MS Visual Studio

Система управления версиями:

  • GitHub

Языки программирования использованные в разработке:

  • С++ 11 версии

Тестирование:

  • QT-unit тесты (версия QT 5.7.0)

Средства автоматической генерации документации:

  • doxygen

Проверка стиля и синтексиса итогового продукта:

  • Cpp Check Code Analysis Tools версии 1.83.

Характеристики продукта

Расход памяти: Размер оперативной памяти, занимаемый данным приложением, линейно зависит от размера входных данных. Тогда в худшем случае приложение будет занимать порядка 25 МБ + "размер входного файла"

Производительность: Производительность приложения линейно зависит от размера входных данных

Надежность: В случае невозможности выполнить поставленную задачу, приложение сообщает пользователю о причинах ошибки и корректно завершает работу.

Рыночная ниша: Данная разработка, безусловно привлечет внимание разработчиков социальных сетей, форумов и интернет порталов. Другими словами, проект будет интересен везде, где существует функционал размещения какой-либо информации пользователями. Также это может быть полезно при улучшении работы таких типов приложений, как блокировщики рекламы. И наконец, приложение может быть использованно в развлекательных целях для тех, кто хочет проявить свою фантазию и смекалку (или даже развить их) в попытках обмануть "искусственный интелект"! Иначе говоря, пользователю прийдется придумывать как выразить свою "недоброжелательность" таким образом, чтобы она была понятна человеку, но не компьютеру.

Формат входных данных

Поддерживаются один возможный формат входных данных:

  • Файл с текстом в кодировке Unicode без дополнительного оформления на английском языке. Поддерживаемые форматы файлов:
    • .txt

Специальные возможности:

  • Возможно указать разделитель "-----" текстов в файле, если они должны анализироваться незаисимо друг от друга.

Размер входных данных никак не ограничен явно. Но он ограничен объемами оперативной памяти используемого ЭВМ.

Формат выходных данных

Вывод данных осуществляется в файл с расширением json в соответствующем формате, желаемое имя файла передается в качестве аргумента при запуске программы.

Формат выходных данных:

Содержание - (сам текст).
категория 1 - вероятность, с которой текст к ней относится
категория 2 - вероятность, с которой текст к ней относится
...
категория n - вероятность, с которой текст к ней относится

Установка продукта

Продукт сам по себе не требует особой установки. Возможно два варианта:

  • Собрать проект из исходных файлов самостоятельно.
  • Воспользоваться уже собранными бинарными файлами.

Запуск продукта

Приложение может быть запущенно из командной строки со следующим списком команд:

  • "путь до входного файла";
  • "путь до выходного файла";
  • "путь до натренированной модели классификатора";

Для того, чтобы запустить приложение на демонстрационных данных, необходимо:

   x64\Release\Toxic-Comment-Classification.exe demonstration_data\test.txt demonstration_data\output models\model.txt
   x86\Release\Toxic-Comment-Classification.exe demonstration_data\test.txt demonstration_data\output models\model.txt
   x64\Debug\Toxic-Comment-Classification.exe demonstration_data\test.txt demonstration_data\output models\model.txt
   x86\Debug\Toxic-Comment-Classification.exe demonstration_data\test.txt demonstration_data\output models\model.txt

Описание API библиотеки

Модуль Функциональность
Parser Чтение данных из входного потока
Preprocessor Предобработка текста
Core Непосредственная обработка данных и получение искомых оценок

Воедино работу модулей связывает класс Controller, отвечающий за передачу данных в виде, пригодном для обработки следующим модулем.

Детали реализации

Архитектура

  • Данные передобрабатываются с помощью стандартных процедур, таких как стемминг, выявление ключевых слов и анализ частоты их употребления.
  • Ядро приложения основывается на байесовской фильтрации.

Документация

Для получения документации необходимо в папке с проектом выполнить команду doxygen doxyGen

Тестирование

Корректная работа модулей и связей между ними была проверена модульными и интеграционными тестами с использованием соответствующих возможностей фреймворка QT. Юнит тесты были реализованы посредством инструмента QTest. Код приложения успешно прошёл проверку cppcheck.

Статическая проверка кода

Для статической проверки кода утилитой cppcheck необходимо установить её с официального сайта, убедиться, что путь к папке с установленной утилитой прописан в переменной среды PATH, а затем выполнить в корневой директории проекта команду

   cppcheck —inconclusive —enable=all -I src —suppress=missingIncludeSystem src

Ссылки и литература

About

Оценка "недоброжелательности" комментариев.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages