Ответ 1
Это не тот, кто более совершенен, чем другой, это скорее вопрос о том, что у кого-то есть что-то другое, а другое нет. Это также вопрос целевой аудитории и цели.
Mallet - это инструментарий для машинного обучения на базе Java, который предназначен для обеспечения надежных и быстрых реализаций для различных задач обработки естественного языка.
NLTK построен с использованием Python и поставляется с большим количеством дополнительных материалов, таких как корпуса, такие как WordNet. NLTK нацелена больше на людей, изучающих НЛП, и поэтому используется больше как платформа обучения и, возможно, меньше как инженерное решение.
По моему мнению, основное различие между ними заключается в том, что NLTK лучше позиционируется как учебный ресурс для людей, заинтересованных в машинных процессах и НЛП, поскольку он поставляется с целым кучей документации, примеров, корпусов и т.д. и т.д.
Маллет больше нацелен на исследователей и практиков, которые работают на местах и уже знают, что они хотят делать. Он поставляется с меньшим количеством документации (хотя он имеет хорошие примеры, и API хорошо документирован) по сравнению с обширной коллекцией NLP NLTK.
UPDATE: Хорошие статьи, описывающие их, - это документы и примеры Mallet в http://mallet.cs.umass.edu/ - на боковой панели есть ссылки на теги последовательности, моделирование тем и т.д.
а для NLTK - книга NLTK Обработка естественного языка с помощью Python - это хорошее введение как в NLTK, так и в NLP.
UPDATE
Недавно я нашел библиотеку sklearn Python. Это нацелено на машинное обучение в более общем плане, а не непосредственно на НЛП, но может быть использовано и для этого. Он поставляется с очень большим набором инструментов для моделирования, и большинство из них, похоже, полагаются на NumPy, поэтому это должно быть довольно быстро. Я использовал его совсем немного и могу сказать, что он очень хорошо написан и документирован и имеет активное сообщество разработчиков, продвигающее его вперед (по крайней мере, с мая 2013 года).
ОБНОВЛЕНИЕ 2
Я также использую mallet в течение некоторого времени (в частности, API-интерфейс mallet) и могу сказать, что если вы планируете интегрировать молоток в другой проект, вы должны быть хорошо знакомы с Java и готовы потратить много времени отлаживая почти полностью недокументированную базу кода.
Если все, что вы хотите сделать, это использовать инструменты командной строки для молотка, это прекрасно, используя API, требуется много копания через сам код молотка и, как правило, исправление некоторых ошибок. Будьте предупреждены, что mallet поставляется с минимальной документацией в отношении API.