2015-12-15 3 views
3

Задача: To classify the user product as banned or approved.Sklearn: Как добавить правила ассоциации в MultinomialNB для классификации текста?

Продукт будет отмечен как запрещено, если оно содержит запрещенное слово как «находящихся под угрозой исчезновения видов», «тигр кожи» и т.д.

  • Входной: Название + описание продукт
  • Соответствующие наклейки: Одобрено/запрещено

Я использовал поднадзорное обучение алгоритма MultinomialNB классифицировать продукты, она дала точность 92% с биграммами.

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

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

Правила должны быть такими: - если ключевое слово «тигр» также имеет гранит/креветки на близлежащих 3/4 словах, тогда отметьте/рассмотрите его как одобренный.

Пожалуйста, помогите мне здесь. Как я могу это сделать.

ответ

3

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

import re 
if re.search(tiger (\w+){0,4}(prawn|granite),text): 
    return 'allowed' 
+0

Для GradientBoostedClassifier: Но не наивный байесовский больше подходит для классификации текстов по сравнению с деревьев решений. Кроме того, это занимает столько времени и памяти, из-за чего ядро ​​python в ipython продолжает умирать. не является подходом к регулярному выражению, будет более ручным –

+0

Итак, Наивный Байес хорош для некоторых основных проблем с классификацией текста, таких как фильтрация спама, но это не хорошо, когда есть зависимости между словами --- в вашем случае это ограничение в совершенстве. Если это занимает слишком много памяти, вы должны, вероятно, ограничить количество функций примерно до 500-1000 с помощью уменьшения размерности (например, PCA или NMF) до моделирования. – maxymoo

+0

Ok спасибо max, да, в настоящее время у меня есть около 1,2 миллиона функций. i will попробуйте согласно вашему предложению и ответьте вам ... –

Смежные вопросы