Количество комментариев, ежедневно оставляемых пользователями в сети, огромно, и многие из них являются в той или иной степени оскорбительными. Очевидно, что в деле своевременного выявления и классификации таких сообщений сейчас не обойтись без автоматизации, поскольку она позволяет анализировать огромное количество данных за короткое время. Предлагаемый нами продукт поможет владельцам различных социальных платформ значительно упростить процесс проверки подозрительных пользовательских сообщений на предмет соответствия политике компании. Он хорошо подстраивается под правила конкретного сервиса, так как позволяет классифицировать, какого рода "недоброжелательность" высказана в том или ином сообщении, а также определить процентное соотношение этих видов "недоброжелательности" в исследуемом комментарии.
- оскорбительный;
- чрезвычайно оскорбительный;
- непристойный;
- угрожающий;
- унизительный;
| Название продукта | Интерактивная обработка | Классификация содержания | 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
| Модуль | Функциональность |
|---|---|
| Parser | Чтение данных из входного потока |
| Preprocessor | Предобработка текста |
| Core | Непосредственная обработка данных и получение искомых оценок |
Воедино работу модулей связывает класс Controller, отвечающий за передачу данных в виде, пригодном для обработки следующим модулем.
- Данные передобрабатываются с помощью стандартных процедур, таких как стемминг, выявление ключевых слов и анализ частоты их употребления.
- Ядро приложения основывается на байесовской фильтрации.
Для получения документации необходимо в папке с проектом выполнить команду doxygen doxyGen
Корректная работа модулей и связей между ними была проверена модульными и интеграционными тестами с использованием соответствующих возможностей фреймворка QT. Юнит тесты были реализованы посредством инструмента QTest. Код приложения успешно прошёл проверку cppcheck.
Для статической проверки кода утилитой cppcheck необходимо установить её с официального сайта, убедиться, что путь к папке с установленной утилитой прописан в переменной среды PATH, а затем выполнить в корневой директории проекта команду
cppcheck —inconclusive —enable=all -I src —suppress=missingIncludeSystem src
- Tajinder Singh, Madhu Kumar, "Role of Text Pre-Processing in Twitter Sentiment Analysis", 2016
- Richard Socher, Alex Perelygin, Jean Y. Wu, Jason Chuang, Christopher D. Manning, Andrew Y. Ng and Christopher Potts, "Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank", 2013
- Серия статей "Another Twitter sentiment analysis" (часть 1)

