УДК 004.7, 004.272.44 Е.А. КОЛЯЕВ, Р.В. ШАТЕЕВ E.A. KOLYAEV, R.V. SHATEEV О НАИВНОМ БАЙЕСОВОМ КЛАССИФИКАТОРЕ И ЕГО ПРИМЕНЕНИИ В СИСТЕМАХ ФИЛЬТРАЦИИ КОНТЕНТА ABOUT THE NAIVE BAYES CLASSIFIER AND ITS APPLICATION IN CONTENT FILTERING SYSTEMS В данной статье рассматривается в ближайшем приближении один из наиболее популярных алгоритмов категоризации текста - байесов классификатор. Целью статьи является рассмотрение теоретических основ затронутого алгоритма, а так же его практическая реализация и тестирование прототипа на базе текстовых сообщений. Ключевые слова: категоризация текста, контент-анализ, машинное обучение, наивный байесовский классификатор. The article suggests one of the most popular algorithms of a categorizing of the text - the Bayes qualifier is considered in the next approximation. The purpose of article is to examine the theoretical foundations of the algorithm affected, as well as its practical implementation and testing of the prototype based on text messages. Keywords: text categorizing, content analysis, machine learning, naive bayesian classifier. Актуальность В связи с бурным ростом представления текстовой информации в электронном виде (книги, письма, контент веб-страниц), повышается актуальность задачи их автоматической классификации [1,2]. Одним из ярких примеров автоматической классификации может являться фильтрация спама. Другим довольно типичным примером классификации служит автоматическое определение тематики того или иного текста. Некоторые новостные агрегаторы используют подобный подход для группировки новостей в направления: экономика, политика, общественная жизнь и т.д. Существующие алгоритмы классификации можно использовать не только непосредственно для классификации текстов, но и, например, для извлечения из них дополнительной информации. В основе предложенного метода лежит теорема Байеса - одна из основных теорем теории вероятностей, которая позволяет определить вероятность какого-либо события при условии, что произошло другое статистически взаимозависимое с ним событие. Иными словами, теорема позволяет рассчитать вероятность того, что какая-то конкретная причина явилась причиной конкретного события, если знать с какой вероятностью данная причина является причиной этого события. Теоретические основы Байеса Пусть A – гипотеза (в данном случае конкретный документ), а B – ожидаемое событие (вхождение документа A в этот класс). Тогда P(A|B) = P(B|A)∗P(A) P(B) , где (1) P(A|B) – вероятность гипотезы A при наступлении события B (вероятность вхождения документа A в класс B); P(B|A) – вероятность наступления события B в случае истинности гипотезы (вероятность встретить документ A в классе B); P(A) – априорная вероятность гипотезы A (вероятность встретить документ, принадлежащий классу B, среди всех возможных документов); P(B) – вероятность наступления события B вообще (вероятность встретить документ B среди всех возможных документов). Формула Байеса вытекает из определения условной вероятности. При этом возможность совместного события AB двояко выражается через условные вероятности P(AB) = P(A|B)P(B) = P(B|A)P(A), следовательно P(A|B) = P(AB) P(B|A)P(A) = P(B) P(B) (2) Фильтрация спама основывается на классификации входных документов на два класса – класс «спам» и класс «не спам». Для этого необходимо найти вероятность принадлежности каждого документа к каждому из двух классов и выбрать максимальный из них. class = argmax P(B|A) ∗ P(A) P(B) (3) Так как P(B) есть величина постоянная и не влияет на получение дополнительной информации, данное значение можно игнорировать. class = argmax P(B|A) ∗ P(A) (4) Данный алгоритм называется наивным, ибо предполагает, что текст документа составлен в правильном порядке. То есть он не делает различия между правильно составленным документом и документом, в котором составляющие его слова перемешаны, считая, что текст состоит из слов, вероятности появления которых не связаны между собой. В свою очередь, в естественном языке, вероятность появления того или иного слова зависит от текущего контекста. Для реализации обратного необходимо произвести семантический анализ входящего текста [3]. Но данный метод, являясь трудоёмким, выступает предметом рассмотрения в работе [4], поэтому порядок слов здесь учитываться не будет. Так как в реальном тексте возможны опечатки и искажение порядка слов, а чересчур большие предложения с трудом поддаются разбору. То есть n P(B|A) = ∏ P(wordi |A) (5) i=1 Итого получаем следующую формулу определения вероятности принадлежности документа конкретному классу: n class = argmax ((∏ P(wordi |A)) ∗ P(A)) i=1 (6) В свою очередь обучение алгоритма происходит следующим образом: ˗ имеется достаточно большой набор текстов, класс которых заведомо известен; ˗ подсчитывается количество сообщений каждого класса; ˗ подсчитывается суммарное количество слов во всех сообщениях каждого из классов в отдельности и составляется список всех слов в обучающей выборке; ˗ для каждого слова из полученного списка указывается частота его появления в текстах каждого из классов. Ограничения алгоритма и способы их преодоления В таком виде данный алгоритм имеет один существенный недостаток – если на этапе разбора встретится слово, отсутствующее в словаре алгоритма, то есть, алгоритм «видел» его 0 раз, то значение P(wordi |c) будет равным нулю. Это может произойти, например, если встретится слово с опечаткой. А следовательно и все произведение вероятностей будет нулевым. Это приведет к тому, что текст вообще нельзя будет классифицировать. Выходом из данной ситуации может стать подмена количества слов. То есть, для каждого встреченного в тексте слова нужно увеличить его количество на единицу. Таким образом, вероятность принадлежности слова данному классу будет рассчитываться по формуле [5] 𝑃(𝑤𝑜𝑟𝑑𝑖 |𝑐) = w𝑜𝑟𝑑ic +1 , ∑i′∈V w𝑜𝑟𝑑i′c (7) При этом все незнакомые слова получат небольшую вероятность, которая не будет влиять на общие результаты. Отношение же вероятностей принадлежности данного документа к конкретному классу останется прежним. Также при большом объёме входного текста существует и еще одна проблема. Если в тексте некоторые слова встречаются малое количество раз, то при умножении их вероятностей может возникнуть исчезновение порядка. Для решения этой проблемы можно прибегнуть к свойству логарифма произведения, так как, если применить логарифм к обоим частям выражения, значения, при которых достигается экстремум функции, остаются прежними. То есть class = argmax (log P(c) + ∑ log P(wordi |c)), (8) причем основание логарифма можно выбрать любое, так как оно не влияет на результат. Но и в этом случае алгоритм будет иметь недостаток – поскольку реальная обучающая выборка должна быть довольно большой, то, учитывая объем реальных классифицируемых текстов, классификация каждого из них займет непозволительно большое время. Выходом из подобной ситуации может стать предобработка текстов с удалением знаков препинания и незначащих слов – союзов, предлогов, артиклей и им подобных. Данные слова не влияют на смысл исходного текста, и, поскольку они встречаются в текстах обоих классов примерно одинаковое количество раз, они только увеличивают нагрузку на алгоритм, при этом не неся в себе никакой информации. Но данный отсев довольно сложен, так как требует ручного определения таких «нейтральных» слов, а это не подходит для обучения классификатора в реальном времени. Этого можно избежать, заодно и еще больше увеличить скорость обработки текста, если применить способы автоматического определения подобных слов уже на этапе обучения. Для этого можно убрать из обучающих таблиц все слова, вероятности которых, рассчитанная по формуле 𝑃= Wic , ∑i′∈V Wi′c (9) для различных классов будет примерно одинаковой, то есть близкой к значению 0,5. В таблице классификации должны остаться только слова с очень большой вероятностью (близкой к 1) и очень маленькой (близкой к нулю). Но при этом возникнет проблема классификации текста довольно большого объема, где все эти слова могут встречаться. Манипулируя величиной допустимого отклонения от данного значения, можно настраивать качество отбора ключевых слов, исходя из конкретной задачи и предполагаемого объема реальных классифицируемых текстов. Так же для ускорения обработки вместо отдельных слов можно использовать группы слов и словосочетания. Но данная реализация потребует значительной обучающей выборки, ее ручной обработки, и учета того, что в словосочетаниях могут присутствовать орфографические ошибки, а само словосочетание может быть слегка измененным. Но в тоже время данный способ позволит рассматривать каждое слово с учетом его значения в данном контексте и сократить время обработки текста за счет деления его на меньшее количество частей. Кроме того, в тексте могут встречаться одни и те же слова, но в разных его формах, что увеличивает размер базы слов и снижает качество обработки текста. В этом случае необходимо выделить у каждого слова его основу, например, отбросив окончания. Имеется список окончаний, например, таких как «-ть», «-ться», «-а», «-у» и подобных. Каждое из встреченных слов проверяется на наличие данного окончания и в список заносится уже слово с удаленной его частью. Кроме того, в случае применения наивного байесовского классификатора, текст необязательно проверять целиком. Достаточно проверить текст, входящего сообщения до тех пор, пока значение, полученного в результате вычисления по формуле W +1 , i′∈V Wi′c 𝑉 = ∑ log |V|+ ∑ic (10) не достигнет какого-либо порогового значения, то есть до тех пор, пока достоверно не станет известна принадлежность документа к одному из классов. Данный способ позволит значительно ускорить обработку поступающей информации и снизить нагрузку на алгоритм, однако необходимое пороговое значение нужно подбирать индивидуально, исходя из оценки предполагаемого объема единицы обрабатываемой информации. Реализация и тестирование прототипа Объединив все вышеперечисленные формулы, получаем исходную формулу, которая и была реализована в алгоритме: class = argmax (log Dc D W +1 ), i′∈V Wi′c + ∑ log |V|+ ∑ic (11) где Dc - количество документов в обучающей выборке принадлежащих классу «спам»; D - общее количество документов в обучающей выборке; |V| - количество уникальных слов во всех документах обучающей выборки; Lс - суммарное количество слов в документах класса c в обучающей выборке; Wi’c - сколько раз i-ое слово встречалось в документах класса c в обучающей выборке. При формировании вероятностного пространства необходимо выбрать класс, получивший наивысшую оценку вероятности. Тестирование алгоритма проводилось при помощи базы коротких текстовых сообщений, которые были получены из различных открытых источников и достоверно классифицированы в качестве желательных или нет. Общее количество текстов составляет 5574, из которых 747 являются спамом. Результаты тестирования алгоритма в виде конечной статистики приведены на рисунке 1. Рисунок 1 - Отчёт работы программы по Байесу Заключение Из полученных результатов тестирования видно, что известная информация о количестве совпадают с результатом работы алгоритма, при этом скорость обработки 5574 коротких текстов остаётся меньше 1 секунды. Однако из-за недостаточного объема сообщений и наличия повторов в обучающей выборке, погрешность оценки составила около 7%. Уменьшению этой погрешности, оптимизации алгоритма, его применению и тестированию в условиях анализа веб-трафика будет посвящена дальнейшая работа. СПИСОК ЛИТЕРАТУРЫ 1. С. А. Лазарев, Р. В. Шатеев, Построение подсистемы контентной фильтрации интернет-трафика на базе свободного программного обеспечения [Электронный ресурс] / Информационные ресурсы, системы и технологии - Режим доступа: http://irsit.ru/article124, свободный – Яз. рус. 2. С. А. Лазарев, Р. В. Шатеев, А.В. Демидов, Некоторые аспекты повышения эффективности механизмов контентной фильтрации трафика - [Электронный ресурс] / Информационные ресурсы, системы и технологии - Режим доступа: http://irsit.ru/article369, свободный – Яз. рус. 3. Text classification and Naive Bayes [Электронный ресурс] - Режим доступа: http://nlp.stanford.edu/IR-book/html/htmledition/naive-bayes-text-classification-1.html, свободный – Яз. англ. 4. Чапайкина Н. Е. Семантический анализ текстов. Основные положения [Текст] / Н. Е. Чапайкина // Молодой ученый. - 2012. - №5. - С. 112-115. 5. Н. Н. Леонтьева, Семантический анализ и смысловая неполнота текста - [Электронный ресурс] / Информационные ресурсы, системы и технологии - Режим доступа: http://leontyeva.srcc.msu.ru/articles/rannie-stati-(1967-1985)/semanticheskij-analiz-i-smyislovayanepolnota-teksta/, свободный – Яз. рус. СВЕДЕНИЯ ОБ АВТОРАХ Коляев Евгений Александрович, ФГБОУ ВПО «Государственный университет – УНПК», студент кафедры "Информационные системы", г. Орел, Наугорское шоссе, 40, тел.: +7 (953) 629-8762, e-mail: [email protected]. Kolyaev Evgeny Alexandrovich, State University - ESPC, Student of Department "Informational Systems", Orel, Naugorskoe Highway 29, tel.: +7 (953) 629-8762, e-mail: [email protected]. Шатеев Роман Валерьевич; ФГБОУ ВПО «Государственный университет – УНПК», аспирант кафедры "Информационные системы", г. Орел, Наугорское шоссе 40, тел.: +7 (920) 823-2444, e-mail: [email protected]. Shateev Roman Valerievich; State University - ESPC, Graduate Student of Department "Informational Systems", Orel, Naugorskoe Highway 40, tel.: +7 (920) 823-2444, e-mail: [email protected]