НЛП программное обеспечение для классификации больших наборов данных - PullRequest
9 голосов
/ 30 августа 2011

Фон

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

Существует три типакатегоризации, выполненной для каждого элемента:

  1. 30 категорий, где каждый элемент должен принадлежать к одной категории, и не более двух категорий.
  2. 10 других категорий, где каждый элемент связан толькос категорией, если есть сильное совпадение, и каждый элемент может принадлежать к числу совпадающих категорий.
  3. 4 других категории, где каждый элемент должен принадлежать только одной категории, и если нет сильного совпадениясоответствует элемент назначен категории по умолчанию.

Каждый элемент состоит из английского текста около 2000 символов.В моем учебном наборе данных содержится около 265 000 элементов, которые содержат приблизительную оценку в 10 000 000 элементов (уникальные фразы из трех слов).

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

Вопрос

Какие имеются готовые инструменты НЛПкоторые могут эффективно классифицировать такой большой набор данных?

Те, которые я пробовал до сих пор:

  • NLTK
  • TIMBL

Iпопытался обучить их с помощью набора данных, который составлял менее 1% от доступных данных обучения: 1700 предметов, 375 000 функций.Для NLTK я использовал разреженный двоичный формат и такой же компактный формат для TIMBL.

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

Я смотрел на Google Prediction API, который, кажется, делает большую часть того, что яищу но не все.Я также хотел бы не полагаться на внешнюю службу, если это возможно.

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

Ответы [ 4 ]

3 голосов
/ 31 августа 2011

После этого поста и исходя из личного опыта я бы порекомендовал Vowpal Wabbit .Говорят, что он имеет один из самых быстрых алгоритмов классификации текста.

2 голосов
/ 20 сентября 2011

Я бы порекомендовал Mahout, так как он предназначен для обработки очень больших наборов данных. Алгоритмы ML построены на основе Apache Hadoop (отображение / уменьшение), поэтому масштабирование присуще.

Взгляните на раздел классификации ниже и посмотрите, поможет ли это. https://cwiki.apache.org/confluence/display/MAHOUT/Algorithms

2 голосов
/ 31 августа 2011

MALLET имеет несколько классификаторов (NB, MaxEnt, CRF и т. Д.).Это написано группой Эндрю МакКаллума.SVMLib - еще один хороший вариант, но для моделей SVM обычно требуется немного больше настройки, чем для MaxEnt.В качестве альтернативы, в этом случае может быть неплохая онлайн-кластеризация, такая как K-means.

SVMLib и MALLET работают довольно быстро (C и Java), если вы обучили свою модель.Обучение модели может занять некоторое время, хотя!К сожалению, не всегда легко найти пример кода.У меня есть несколько примеров того, как использовать MALLET программно (вместе со Стэнфордским парсером, который работает медленно и, вероятно, излишне для ваших целей).NLTK - это отличный инструмент обучения, он достаточно прост и позволяет создавать прототипы того, что вы там делаете, это идеально.

NLP больше относится к функциям и качеству данных, чем к тому, какой метод машинного обучения вы используете.3 грамма могут быть хорошими, но как насчет n-граммов персонажей?То есть все символы в 3 граммах для учета вариаций правописания / основы / и т. Д.?Именованные объекты также могут быть полезны, или что-то в этом роде.

0 голосов
/ 30 августа 2011

Вы пробовали MALLET ?

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

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

...