Orange против NLTK для классификации контента в Python

Нам нужен модуль классификации контента. Байесовский классификатор, похоже, является тем, что я ищу. Должны ли мы пойти на Orange или NLTK?

Ответ 1

Хорошо, о чем свидетельствует документация, реализация Naive Bayes в каждой библиотеке проста для использования, так почему бы не запустить ваши данные с обоими и сравнить результаты?

Оба Orange и NLTK являются зрелыми, стабильными библиотеками (более 10 лет в разработке для каждой библиотеки) которые возникли в крупных университетах; они разделяют некоторые общие черты, прежде всего машинное обучение алгоритмы. Помимо этого, они различаются по объему, цели и реализации.

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

Его функции включают IO, алгоритм анализа данных и холст визуализации данных.

NLTK, с другой стороны, начинался как и остается академическим проектом в вычислительной лингвистического факультета большого университета. Задача, которую вы упомянули (классификация содержимого документа) и ваш алгоритм выбора (наивный байесовский) почти полностью соответствуют функциональности NLTK. НЛТК действительно имеют алгоритмы ML/Data Mining, но только потому, что они имеют конкретную полезность в вычислительной лингвистике.

NLTK, конечно, включает некоторые ML-алгоритмы, но только потому, что они имеют полезность в вычислительной лингвистике, наряду с документами-парсерами, токенизаторами, частью речи анализаторы и т.д. - все из которых состоят из NLTK.

Возможно, реализация Naive Bayes в Orange очень хороша, я бы выбрал NLTK потому что он четко оптимизирован для конкретной задачи, о которой вы говорили.

В NLTK есть множество учебных пособий и, в частности, для Naive Bayes для использования классификация контента. Сообщение в блоге от Jim Plus, а другое в streamhacker.com, например, отличные учебные пособия для использования NLTK Naive Bayes; вторая включает в себя строку за строкой обсуждение кода, необходимого для доступа к этому модулю. Авторы обоих этих сообщения сообщают о хороших результатах с использованием НЛТК (92% в первом, 73% в последнем).

Ответ 2

Я не знаю Orange, но +1 для NLTK:

Я последовательно использовал инструменты классификации в NLTK для классификации текста и связанных метаданных. Байесовский по умолчанию, но есть и другие альтернативы, такие как Maximum Entropy. Также, будучи набором инструментальных средств, вы можете настроить, как вы сочтете нужным - например. создавая свои собственные функции (это то, что я сделал для метаданных).

В NLTK также есть несколько хороших книг - одна из которых доступна в Creative Commons (а также O'Reilly).

Ответ 3

NLTK - это набор инструментальных средств, поддерживающий четырехуровневую модель обработки естественного языка:

  • Tokenizing: группировка символов в виде слов. Это варьируется от тривиального набора регулярных выражений до борьбы с сокращениями, такими как "не может"
  • Tagging. Это применяет теги части речи к токенам (например, "NN" для существительного "VBG" для глагола gerund). Обычно это делается путем обучения модели (например, "Скрытый марков" ) на учебном корпусе (т.е. Большой список предложений с пометкой вручную).
  • Chunking/Синтаксический. Это принимает каждое помеченное предложение и извлекает функции в дерево (например, существительные). Это может быть в соответствии с рукописной грамматикой или обученной на корпусе.
  • Извлечение информации. Это перемещение дерева и извлечение данных. Это будет ваш конкретный оранжевый = плод.

NLTK поддерживает WordNet, огромный семантический словарь, который классифицирует слова. Таким образом, существует 5 существительных определений для апельсина (фрукты, дерево, пигмент, цвет, река в Южной Африке). Каждый из них имеет один или несколько "гиперных путей", которые являются иерархиями классификаций. Например. первый смысл "оранжевого" имеет два пути:

  • оранжевый/цитрусовый/edible_fruit/фрукты/reproductive_structure/plant_organ/plant_part/natural_object/всего/объект/physical_entity/объект

и

  • оранжевый/цитрусовый/edible_fruit/продукты/продукты питания/твердое вещество/вещества/physical_entity/объект

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