Классификация текста с weka - PullRequest
0 голосов
/ 09 марта 2012

Я строю текстовый классификатор в Java с помощью библиотеки Weka.

Сначала я удаляю стоп-слова, затем я использую стеммер (например, конвертирую автомобили в машину). Прямо сейчас у меня есть 6 предопределенных категорий. Я тренирую классификатор на 5 документов для каждой категории. Длина документов одинакова.

Результаты в порядке, когда текст для классификации короткий. Но когда текст длиннее чем 100 слов, результаты становятся незнакомыми и незнакомыми.

Я возвращаю вероятности для каждой категории следующим образом: Вероятность:

[0,0015560238056109177, 0,1808919321002592, 0,6657404531908249, 0,004793498469427115, 0,13253647895234325, 0,014481613481534815]

, что является довольно надежной классификацией.

Но когда я использую тексты длиной более 100 слов, я получаю следующие результаты:

Вероятность: [1.2863123678314889E-5, 4.3728547754744305E-5, 0.9964710903856974, 5.539960514402068E-5, 0.002993481218084141, 4.234371196414616E-4]

Что к добру.

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

Кто-нибудь знает, почему это происходит?

1 Ответ

1 голос
/ 20 марта 2012

Для такого поведения может быть несколько факторов. Если ваши учебные и тестовые тексты не относятся к одной и той же области, это может произойти. Кроме того, я считаю, что добавление большего количества документов для каждой категории должно принести пользу. 5 документов в каждой категории кажутся очень меньше. Если у вас нет больше обучающих документов или вам трудно иметь больше обучающих документов, то вы можете синтетически добавить положительные и отрицательные экземпляры в свой обучающий набор (см. Алгоритм SMOTE подробно). Держите нас в курсе обновления.

...