Текстовые классификаторы

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

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

Зачастую классификация является фундаментом на котором строятся алгоритмы решения более сложных задач. Например, классификация используется при создании рекомендательных систем и в частности при реализации коллаборативной фильтрации,  использующей известные предпочтения группы пользователей для прогнозирования неизвестных предпочтений другого пользователя. Его основное допущение состоит в следующем: те, кто одинаково оценивали какие-либо предметы в прошлом, склонны давать похожие оценки другим предметам и в будущем. Например, с помощью коллаборативной фильтрации музыкальное приложение способно прогнозировать, какая музыка понравится пользователю, имея неполный список его предпочтений (симпатий и антипатий). Прогнозы составляются индивидуально для каждого пользователя, хотя используемая информация собрана от многих участников. Тем самым коллаборативная фильтрация отличается от более простого подхода, дающего усреднённую оценку для каждого объекта интереса, к примеру, базирующуюся на количестве поданных за него голосов. 

Классификация используется как инструмент для решения множества других задач:

  • снятие омонимии при обработке натуральных языков;
  • в поисковых системах – для ограничения области поиска в целях повышения точности (вертикальный поиск);
  • автоматическое определение языка на котором написан текст;
  • анализ тональности (определение эмоциональной окраски текста) и т.д.

Рассмотрим основные подходы к классификации

Классификация, основанная на правилах 

Если говорить о задаче классификации текстов, то пожалуй ее традиционным решением является классификация основная на правилах (rule based classification). Вы имплементируете правила определения класса документа по его тексту в виде if-then-else выражений.

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

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

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

Классификация, основанная на весе

В случае классификации, основанной на весе, можем для каждого слова выбрать некий вес, который будет означать насколько вероятно что сообщение с этим словом является спамом (0 – никогда не является спамом, 1 – всегда спам).

Например

слово спам не спам
бухгалтер 0.99 0.01
виагра 0.99 0.01
выгодное 0.7 0.3
github 0.01 0.99

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

Это более разумный подход, так как он более гибок и принимает решение на основании всех известных слов в тексте. Так же его гораздо проще сопровождать чем полотно if-ов.

Методы машинного обучения

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

Наивный байесовский классификатор — простой вероятностный классификатор, основанный на применении Теоремы Байеса со строгими (наивными) предположениями о независимости.

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

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

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

Тэги: text mining анализ текстов классификаторы


 


 
архив

подписка