Прогресс науки и техники в настоящее время сопровождается интенсивным внедрением во многие сферы человеческой деятельности новых информационных технологий. Развитие сети Интернет приводит к неконтролируемому экспоненциальному росту количества различной информации, в большинстве своем представленной в текстовом виде. Для обеспечения информационной безопасности большое значение имеет анализ в телекоммуникационных сетях контента, содержащего противоправную информацию, в том числе данные, связанные с терроризмом, наркоторговлей, подготовкой протестных движений или массовых беспорядков, содержащие оскорбительные высказывания в адрес государственной символики, ненормативную лексику и пр. [1]. В связи с этим, а также в условиях потенциального создания «закрытого» Интернет-пространства в Российской Федерации, решение задачи поиска и автоматической идентификации деструктивной информации является приоритетным направлением. При этом на сегодняшний день законодательные меры, принятые Российской Федерацией, недостаточны для обеспечения информационно-психологической безопасности общества [2]. Таким образом, возникает потребность в разработке специализированных систем поиска и категоризации информационных ресурсов. Кроме того, в связи с постоянно растущим объемом информационных ресурсов автоматизация процесса идентификации характера входной текстовой информации с целью дальнейшей блокировки опасного контента позволит не только сократить трудовременные затраты, но и минимизировать субъективизм и вероятность ошибок, обусловленных влиянием человеческого фактора. Анализ существующих подходов Для решения задачи автоматической идентификации деструктивной информации на примере поиска и выявления ненормативной лексики были проанализированы существующие поисковые методы, применяемые для нахождения конкретных слов в тексте [3, 4]. Выявлено, что указанные методы укрупненно делятся: - на методы, полностью опирающиеся на экспертную обработку информации, результатом применения которых является создание «черных списков», реестров и т. д. (например, единый реестр доменных имен заблокированных ресурсов Роскомнадзора); - автоматизированные методы, представляющие интерес в нашей работе, в числе которых так называемый тематический поиск (по словарю) и интеллектуальные методы обработки данных. Поиск по словарю, заключающийся в поиске системой точного совпадения слова из словаря и его идентификации в тексте, является одним из самых распространенных видов обнаружения деструктивной информации [5]. Однако для решения задачи идентификации деструктивного контента на примере ненормативной лексики применение тематического поиска в «чистом» виде нецелесообразно ввиду следующих причин: - необходимости постоянного пополнения словаря из-за возникновения новых форм и способов словообразования (на текущий момент насчитывается более 250 основных слов ненормативной лексики, образующих различные сочетания и словоформы); - высокой вероятности пропуска ненормативного слова по причине применения в исследуемом тексте новой его формы, не известной системе. Системы, работа которых основана на интеллектуальных методах обработки данных, обладают следующими преимуществами [3, 6-9]: - символьная (смысловая) обработка информации в форме, близкой к человеческому мышлению; - развитые коммуникативные способности, позволяющие вести интенсивный диалог с пользователями, в ходе которого уточняются имеющиеся и приобретаемые системой знания; - формирование запросов к системе и получение ответов (решений задач) на естественном языке, близком к человеческому общению; - способность к самообучению, т. е. к автоматическому пополнению и получению новых знаний на основе накопленного системой опыта анализа и решения задач пользователей; - способность к адаптации (приспособляемости) системы к объективным изменениям предметной (проблемной) области функционирования системы и др. Очевидно, что эффективная автоматизированная система идентификации ненормативной лексики должна поддерживать перечисленный функционал, в частности: - автоматическое пополнение словаря в случае обнаружения «опасного» слова; - запрос у эксперта проверки на корректность пополнения словаря (при необходимости); - предоставление подробных отчетов о результатах аналитического поиска. Таким образом, для решения поставленной задачи был разработан интеллектуальный алгоритм идентификации ненормативной лексики в тексте, реализующий модифицированный поиск по словарю. Описание разработанного алгоритма Рассмотрим функционирование алгоритма, блок-схема которого представлена на рис. 1. Рис. 1. Интеллектуальный алгоритм модифицированного поиска по словарю 1. Стандартная процедура авторизации и аутентификации пользователя. При неверном вводе логина и/или пароля система оповещает об ошибке. 2. Осуществление загрузки исследуемого контента - входной текстовой информации (ввод источника). 3. Поэтапная нормализация вводных данных (является одним из критических этапов для результата работы алгоритма). 4. Блок анализа: 4.1. Пока не проанализированы все слова в проверяемом тексте, рассчитывается отношение суммы совпадающих символов анализируемого слова со словарным словом к количеству символов в проверяемом слове. 4.2. После того, как все значения отношений вычислены, производится расчет вероятности отнесения слова к ненормативной лексике, при превышении порогового значения которой система относит слово к ненормативным. 4.3. Наличие одного деструктивного слова достаточно для отнесения содержащего его текста к деструктивному. 5. Блок самообучения системы: при обнаружении нового для системы элемента ненормативной лексики происходит автоматическое обновление словаря. Остановимся на основных блоках подробнее. После этапа загрузки исследуемого контента следует нормализация входных данных. Машинный анализ любой неструктурированной информации требует предварительной ее обработки. Основной проблемой анализа текстов считается большое количество слов в проверяемом тексте, тем более что далеко не все слова могут нести в себе искомую семантику. Проблема значительно усугубится, если входной поток информации не был «унифицирован»: возникнут временная избыточность работы алгоритма и некорректные результаты [7, 10]. В интеллектуальных системах анализа текстовой информации для различных целей нормализация исходной последовательности в большинстве случаев осуществляется с помощью стемминга - процедуры, позволяющей проводить анализ заданного слова путем нахождения его основы. В проведении предобработки текста используются следующие виды алгоритмов стемминга: - алгоритмы поиска (полный перебор основы слова по списку); - усечение окончаний (имеется небольшой список правил, по которым происходит нахождение основы слова); - лемматизация (приведение слова к канонической или первоначальной словарной форме - лемме); - стохастические алгоритмы (вероятностное определение корневой формы слова); - статические алгоритмы (анализ N-грамм, алгоритмы сопоставления). Практическая реализация алгоритмов стемминга - стеммер. В конкретном случае процесс предварительной нормализации входной текстовой информации целесообразно представить в виде последовательности шагов, отраженных на рис. 2. Рис. 2. Стемминг - подготовка входных данных к анализу на содержание деструктивной информации Таким образом, в рамках решаемой задачи стеммер реализует следующий алгоритм стемминга, адаптированный под поставленную задачу: 1. Исключение из текста всех небуквенных символов. К ним относятся цифры, знаки препинания и специальные символы. 2. Приведение регистра. Данный прием основан на преобразовании всех символов к единому регистру (верхнему или нижнему). Например, различные слова в разных написаниях типа «Алгоритм», «АЛГОРИТМ», «АлГоРиТм» приводятся к нижнему регистру «алгоритм». 3. Удаление стоп-слов. Стоп-словами являются вспомогательные слова, не несущие смысловую нагрузку в контексте анализа, к ним относят служебные части речи: частицы, предлоги, союзы, личные местоимения и междометия. Формируется дополнительный список вспомогательных слов с целью последующего их удаления из текстов. 4. Поиск и замена символов. На данном шаге буква «ё» в словах заменяется на «е», во-первых, в целях сокращения времени, во-вторых, во избежание ненахождения слов с буквой «ё» в словаре. 5. Разбиение текстовой информации на N-граммы и анализ N-грамм. В конкретном стеммере реализовано выделение униграмм. Этот шаг необходим в целях идентификации и поиска нецензурной брани, т. к. именно с использованием униграмм производится модифицированный поиск по словарю. 6. Отсечение части слов - удаление приставок в словах текста путем посимвольного сравнения слов со списком существующих приставок. 7. Интерпретация результатов. Последний шаг заключается в представлении результатов на естественном языке или в их визуализации в графическом виде [10, 11]. После прохождения этапа нормализации текст готов к анализу непосредственно на содержание элементов ненормативной лексики. Входные данные для блока анализа: - словарь, элементами которого являются ненормативные слова; - нормализованный текст, подлежащий анализу. Введем понятие «класса текста». Под классом будем понимать отнесение текста к категории, содержащей (в конкретном случае) или не содержащей ненормативную лексику. Количество и содержание категорий могут меняться в зависимости от поставленной задачи. Таким образом, если в результате работы блока анализа выявляются элементы ненормативной лексики, текст относится к классу деструктивных. Если при этом выявленные слова являются «новыми», словарь автоматически пополняется. Второй вариант - отсутствие ненормативных слов, признание текста недеструктивным. Таким образом, итоговыми выходными данными блока анализа является решение системы об отнесении входного текстового контента к категории деструктивных (D) или недеструктивных (nD) на основе промежуточной идентификации в нем элементов ненормативной лексики. Процесс идентификации сведем к определению вероятности факта принадлежности слова к классу ненормативных. Механизм расчета вероятности Рассмотрим часть текста , состоящую из определенного набора слов {, …,, …, }, i = 1, …, n, где - векторное представление текста; n - количество слов в тексте. Вследствие того, что в предлагаемом алгоритме использовано посимвольное сравнение, необходимо обработать каждый символ строки по отдельности. Соответственно, введем обозначение для каждого слова текста , которое имеет конечное число символов: , где m - количество букв в слове. Тогда векторное представление множества словарных слов описывается как , где k - количество слов в словаре. Для каждого слова из словаря символьный вектор будет иметь следующий вид: , где t - количество букв в словарном слове. Для повышения точности отнесения слова к ненормативной лексике необходимо при посимвольном сравнении двух слов не допустить превышения длины анализируемого слова над длиной словарного. При этом лишние символы подлежат отсечению. Тогда искомая вероятность представляет собой отношение количества символов анализируемого слова , соответствующих символам слова из словаря , к количеству букв в слове: (1) где v - индекс рассчитываемой суммы каждых двух слов; m - количество символов в слове; t - количество символов в словарном слове; n - количество слов в тексте. Примем в рамках алгоритма в качестве точки отсечения некое Pп - пороговое значение, на основании сравнения рассчитанной вероятности , с которым система будет устанавливать факт наличия или отсутствия деструктивной информации в тексте. Критическое значение для данного показателя, установленное эмпирическим путем, предлагается принять в диапазоне [0,5; 1]. Тогда вероятность отнесения текста к классу деструктивных (D) или недеструктивных (nD) составляет (2) Таким образом, проведя сравнение между найденной вероятностью P и пороговым значением Pп, система идентифицирует текст как деструктивный или недеструктивный. Неотъемлемым этапом в интеллектуальном алгоритме является процесс пополнения словаря. Найденное в тексте слово, относящееся к классу ненормативных, будет являться новым в том случае, если значение его вероятности отнесения к данному классу будет удовлетворять пороговому значению Pс. Данное значение, выявленное эмпирическим путем, необходимо для отсечения тех слов, которые отличаются от существующих словарных слов только падежным окончанием или формой множественного числа. За пороговое значение примем диапазон [0,5; 0,75].Таким образом, словарь будет пополняться только новыми словами при следующих условиях: На основе расчетов вероятностей отнесения слов к ненормативной лексике при система будет автоматически пополнять словарь ненормативных слов. В целях оптимизации данного процесса будет целесообразно периодически проводить проверку корректности обновления словаря экспертом путем рассмотрения только вновь добавленных слов. Апробация алгоритма С целью апробации предложенного к рассмотрению интеллектуального алгоритма идентификации ненормативной лексики в тексте в среде VisualStudio 2017 на языке C# был разработан соответствующий программный модуль (рис. 3). Рис. 3. Программный модуль работы интеллектуального алгоритма Рассмотрим работу алгоритма на конкретном примере. Шаг 1. Имеется следующий текст, который необходимо проверить: {Яблоневые сады на нашей планете охватывают пять миллионов гектаров. Это самое распространённое плодовое дерево. В яблоках содержится много витаминов}. В связи с невозможностью использования реальных ненормативных слов в качестве словаря ненормативной лексики примем следующее множество: {гранат, виноград, яблоко, банан}. Имеется полный словарь приставок и стоп-слов. Шаг 2. Применен стемминг: - все небуквенные символы удалены из текста: {Яблоневые сады на нашей планете охватывают пять миллионов гектаров Это самое распространённое плодовое дерево В яблоках содержится много витаминов}; - текст приведен к нижнему регистру: {яблоневые сады на нашей планете охватывают пять миллионов гектаров это самое распространённое плодовое дерево в яблоках содержится много витаминов}; - исключены стоп-слова: {яблоневые сады планете охватывают пять миллионов гектаров распространённое плодовое дерево яблоках содержится много витаминов}; - замена символа «ё» на «е»: {яблоневые сады планете охватывают пять миллионов гектаров распространенное плодовое дерево яблоках содержится много витаминов}; - текст разбит на униграммы: {яблоневые, сады, планете, охватывают, пять, миллионов, гектаров, распространенное, плодовое, дерево, яблоках, содержится, много, витаминов}; - отсечены приставки: {яблоневые, сады, планете, хватывают, пять, миллионов, гектаров, страненное, плодовое, дерево, яблоках, держится, много, витаминов}. Шаг 3. Результаты расчета вероятности отнесения каждого слова в тексте к ненормативным по формуле (1) сведены в таблицу. Результаты расчета Словарные слова Униграммы Гранат Виноград Яблоко Банан яблоневые 0 0 0,667 0 сады 0 0 0 0 планете 0 0 0 0 хватывают 0 0 0 0 пять 0 0 0 0 миллионов 0 0 0 0 гектаров 0,167 0 0 0 страненное 0 0 0 0 плодовое 0 0 0 0 дерево 0 0 0 0 яблоках 0 0 0,833 0 держится 0 0 0 0 много 0 0 0 0 витаминов 0 0,25 0 0 Если длина униграммы больше, чем длина словарного слова, лишние символы в униграмме с конца отсекаются. Например, «яблоневые» (9 символов) и «гранат» (6 символов). Так как количество символов не совпадает, извлекаем из «яблоневые» последние 3 буквы. Получаем: «яблоне». Шаг 4. По формуле (2) определена вероятность отнесения анализируемого текста к соответствующему классу: Шаг 5. Производится сравнение вероятностей с пороговым значением: Р = 0,833Р ∈ Рn. Следовательно, текст автоматически относится к классу деструктивных (D). Шаг 6. Обновление словаря. В данном примере обнаружились две униграммы с вероятностью, большей порогового значения: «яблоневые», «яблоках». Следовательно, они относятся к ненормативной лексике. Необходимо выяснить целесообразность добавления данных униграмм в словарь. В этом случае сравниваются вероятности отнесения этих слов к ненормативной лексике с пороговым значением Pc. Получается, что слово «яблоневые» является не только ненормативным словом, но и новым. Значит, данное слово необходимо добавить в словарь ненормативной лексики. Соответственно, при работе предлагаемого алгоритма осуществляется самопополнение словаря. Для определения эффективности и точности работы алгоритма было проведено 100 тестовых прогонов алгоритма. Из результатов теста следует, что в 65 текстах содержались слова из словаря ненормативных слов, в их числе встретились 12 словоформ, образованных от слов из словаря. В результате проанализированные тексты, содержащие ненормативную лексику, идентифицированы на 100 % (с выявленной минимальной вероятностью, равной 0,589). Соответственно, 65 текстов были отнесены к классу деструктивных, а словарь пополнился на 12 слов. На рис. 4 приведена форма разработанного приложения с отображением результатов работы интеллектуального алгоритма. Рис. 4. Результаты работы интеллектуального алгоритма Проведенные эксперименты не выявили сбоев в работе алгоритма и доказали его эффективность. Заключение В работе описан подход к поиску и идентификации деструктивного контента в текстовой информации на примере ненормативной лексики, реализованный в виде интеллектуального алгоритма модифицированного поиска деструктивных слов по словарю. Одной из основных особенностей предложенного алгоритма является способность к самообучению, т. е. к автоматическому получению новых знаний на основе накопленного системой опыта анализа и решения задач пользователей, заключающемся в самостоятельном пополнении словаря. В процессе работы это свойство приведет к дальнейшему повышению эффективности функционирования алгоритма.