Методы для классификации строк на естественном языке? - PullRequest
2 голосов
/ 26 марта 2011

Что доступно с точки зрения библиотек / программного обеспечения с открытым исходным кодом для обработки и классификации естественного языка? У меня есть база данных, полная строк, которые представляют собой пользовательские описания конкретного элемента. Я хотел бы классифицировать эти слова, чтобы отсеять бесполезные и сделать обоснованное предположение относительно того, к какой категории относится элемент (например, технология, спорт, музыка).

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

Я бы предпочел сделать это в Ruby, однако Python или Java также приемлемы.

Ответы [ 5 ]

3 голосов
/ 26 марта 2011

Что касается Python, на данный момент я могу порекомендовать посмотреть:

http://www.nltk.org/

Имеет хорошую документацию и множество функций в области обработки естественного языка. Также есть пакет в репозитории Ubuntu (python-nltk), поэтому его легко установить и поэкспериментировать.

В большинстве случаев вам потребуется доступ к корпусу хорошего качества.

2 голосов
/ 26 марта 2011

К сожалению, в Ruby нет качественного НЛП, однако, если вы используете JRuby , вы можете воспользоваться такими качественными НЛП, как:

GATE

LingPipe

OpenNLP

1 голос
/ 27 марта 2011

Проверьте этот список наборов инструментов для обработки естественного языка http://en.wikipedia.org/wiki/List_of_natural_language_processing_toolkits. Некоторые из них не упомянуты здесь: Weka, Mallet, Stanford Classifier

1 голос
/ 26 марта 2011

Итак, у вас есть куча текстовых блоков, которые вы хотите классифицировать по разным категориям.Проблема идентична фильтрации спама.За исключением спам-фильтра только классифицирует электронные письма на две категории, но у вас есть несколько, но те же принципы ( теорема Байеса ) все еще применяются Наивный байесовский классификатор является одним из самых простых и наименее требовательных к вычислительным методам методов решения этой проблемы.Затем вы можете использовать эти знания и использовать более сложные методы, такие как нейронные сети, для более точной классификации.Отличная книга на эту тему - Программирование Коллективного Разума .

См. Также dANN , которая представляет собой библиотеку Java с реализацией наивного байесовского классификатора и многими другими инструментами для прогнозного анализа.И это видео о Google Predict , которое показывает, как классифицировать предложения на языки.Тот же метод можно использовать для классификации описаний почти дословно.

1 голос
/ 26 марта 2011

Одна из лучших лингвистических библиотек для любого языка программирования называется Wordnet .Он используется для анализа текста, его разбивки и определения частей речи.Если вы видели, как IBM Watson конкурирует на телешоу Jeopardy, вы увидели Wordnet в действии, поскольку это была одна из используемых технологий.Я не использовал его, но я использовал Wordnet много раз.Надеюсь, установка Wordnet станет проще, поскольку в прошлом это было мучительно.

В Perl есть модуль Lingua :: Wordnet , который я использовал.Кроме того, быстрый поиск "Python + wordnet" возвращает несколько обращений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...