Наивный байесовский классификатор текста с такими функциями, как hasDate, hasLocation, первое слово и т. д.

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

Я понимаю базовый наивный байесовский подход. Но не удалось найти информацию о включении этих функций в классификатор.

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

Спасибо


person Benny33    schedule 20.12.2012    source источник


Ответы (1)


В рамках наивного байесовского подхода ничто не мешает вам добавлять дополнительные функции, не основанные на представлении набора слов. Допустим, у вас есть вероятность класса p(document|class_1) = l_1 на основе ваших функций набора слов. У вас есть основания полагать, что некоторые бинарные признаки b_1 и b_2 также помогут в классификации (это может быть документ, содержащий дату и время соответственно, чтобы конкретизировать пример).

Вы оцениваете вероятность p(b_1 = 1 | class_1) = (количество документов в классе 1 с b_1 = 1) / (количество документов в классе 1) --- p(b_1 = 0 | class_1) = 1 - p( b_1 = 1 | class_1). Вы делаете то же самое для класса 2 и для функции b_2 для обоих классов. Теперь добавить эти функции в правило классификации особенно просто, поскольку Наивный Байес просто предполагает независимость функций. Так:

p( class_1 | document ) \propto p(class_1) x l_1 x p(b_1|class_1) x p(b_2|class_1)

где l_1 означает то же, что и раньше (вероятность, основанная на функциях BOW), а для терминов p(b_i|class_1) вы используете термины p(b_i=1|class_1) или p(b_i=0|class_1) в зависимости от того, что значение b_i действительно было. Таким же образом это можно распространить на небинарные функции, и вы можете продолжать добавлять что душе угодно (хотя вы должны знать, что вы предполагаете независимость между функциями, и вы можете пожелать переключиться на классификатор, который не делает этого предположения).

person Ben Allison    schedule 20.12.2012
comment
Спасибо за ваш ответ, это очень полезно. У меня есть еще один вопрос. В подходе с мешком слов я использую сглаживание Лапласа, чтобы исключить вероятность того, что класс равен 0 из-за того, что p (слово | класс) равно 0. Было бы правильно, если бы я применил это же сглаживание к своим бинарным функциям. поэтому p(b_1=1|class_1) = (количество документов в классе 1 с b_1 = 1) + 1 / (количество документов в классе 1) + 2. - person Benny33; 20.12.2012
comment
привет Бен, p( class_1 | document ) \propto p(class_1) в этом что такое \propto пожалуйста, можете ли вы объяснить это утверждение. - person Divyang Shah; 30.09.2014
comment
Это пропорционально: интересующий апостериор пропорционален вероятности предыдущего класса * вероятности класса (константа нормализации равна \sum_class p(class) p(features|class)) - person Ben Allison; 30.09.2014