Какой классификатор выбрать в НЛТК - PullRequest
6 голосов
/ 05 июля 2011

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

Я планирую использовать наивную байесовскую классификацию, это целесообразно?

Ответы [ 2 ]

9 голосов
/ 06 июля 2011

Наивный Байес - самый простой и понятный классификатор, и по этой причине его приятно использовать.Деревья решений с поиском луча, чтобы найти лучшую классификацию, не так сложны для понимания и, как правило, немного лучше.MaxEnt и SVM, как правило, более сложны, а для правильной настройки SVM требуется некоторая настройка.

Наиболее важным является выбор функций + объем / качество предоставляемых вами данных!

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

РЕДАКТИРОВАТЬ: Вопрос Как вы находите предмет предложения? и мой ответ также стоит посмотреть.

2 голосов
/ 05 июля 2011

Да, обучение наивного байесовского классификатора для каждой категории и последующая маркировка каждого сообщения классом, на основе которого классификатор обеспечивает наивысший балл, является стандартным первым подходом к таким проблемам. Существуют более сложные алгоритмы классификатора для одного класса, которые можно заменить наивными Байеса, если вы обнаружите, что производительность неадекватна, например, «Механизм опорных векторов» (который, я считаю, доступен в NLTK через плагин Weka, но не положительный). Если вы не можете придумать что-то конкретное в этой проблемной области, которое сделало бы Naieve Bayes особенно неподходящим, оно часто становится «первой попыткой» для многих проектов.

Другим классификатором NLTK, который я хотел бы попробовать, был бы MaxEnt, поскольку я считаю, что он изначально обрабатывает мультиклассовую классификацию. (Хотя подход с множественными двоичными классификаторами очень стандартен и распространен). В любом случае самое главное - собрать очень большой корпус правильно помеченных текстовых сообщений.

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

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

http://docs.google.com/viewer?a=v&q=cache:_AeBYp6i1ooJ:nlp.stanford.edu/courses/cs224n/2010/reports/ssoriajr-kanej.pdf+maxent+classifier+multiple+classes&hl=en&gl=us&pid=bl&srcid=ADGEESi-eZHTZCQPo7AlcnaFdUws9nSN1P6X0BVmHjtlpKYGQnj7dtyHmXLSONa9Q9ziAQjliJnR8yD1Z-0WIpOjcmYbWO2zcB6z4RzkIhYI_Dfzx2WqU4jy2Le4wrEQv0yZp_QZyHQN&sig=AHIEtbQN4J_XciVhVI60oyrPb4164u681w&pli=1

...