Нужно ли наивному байесовскому классификатору знать весь словарный запас?

Я пытаюсь классифицировать твиты по двум категориям (например, basketball и non-basketball). Очевидно, что набор данных является динамическим, т. е. коллекция документов не привязана к набору из N документов (т. е. твитов): набор данных расширяется снова и снова, пока пользователь сканирует Twitter.

Одна вещь, которую следует попробовать применить, — это наивный байесовский классификатор, который широко используется для классификации текста. Объяснение приведено здесь. Однако одно сомнение все же остается.

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

Обобщая вопрос: можно ли применить наивный байесовский классификатор к тем случаям, в которых словарный запас не совсем известен?

Заранее спасибо.


person Eleanore    schedule 25.04.2014    source источник


Ответы (2)


Самое простое, что можно сделать со словами в тестовом наборе, которых нет в обучающем наборе, — просто игнорировать их.

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

person Rob Neuhaus    schedule 25.04.2014
comment
К сожалению, я не знаю этих причудливых методов. У вас есть ссылки, чтобы узнать больше? Большое спасибо! - person Eleanore; 26.04.2014
comment
Более того: игнорирование новых слов (как вы предлагаете вначале) сильно влияет на качество результата? - person Eleanore; 26.04.2014

можно ли применить наивный байесовский классификатор к тем случаям, когда словарь не совсем известен?

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

Применяемый трюк (и я думаю, что вы просите) называется сглаживанием (по Лапласу): добавление 1 к количеству всех терминов в вашем тестовом наборе. Это настройка по умолчанию во многих библиотеках, например, в Python Scikit-Learn:

http://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.MultinomialNB.html#sklearn.naive_bayes.MultinomialNB

person Keyb0ardwarri0r    schedule 14.11.2017