www spanish pos part org ner guide book nltk mallet

part - pos tagging spanish nltk



Modelado de temas en MALLET vs NLTK (3)

La pregunta es si estás trabajando en Python o Java (o ninguna de las anteriores). Mallet es bueno para Java (por lo tanto, Clojure y Scala) ya que puedes acceder fácilmente a su API en Java. Mallet también tiene una bonita interfaz de línea de comandos para que puedas usarla fuera de una aplicación.

Por la misma razón que con Python, NLTK es genial para python, y no tendrás que hacer ninguna locura de Jython para que estos jueguen bien juntos. Si estás usando python, Gensim acaba de agregar un envoltorio de mazo que vale la pena revisar. En este momento, es básicamente una característica alfa básica, pero puede hacer lo que necesites.

Acabo de leer un artículo fascinante sobre cómo MALLET podría usarse para el modelado de temas, pero no pude encontrar nada en línea que comparara MALLET con NLTK, con el que ya tengo experiencia.

¿Cuáles son las principales diferencias entre ellos? ¿Es MALLET un recurso más ''completo'' (por ejemplo, tiene más herramientas y algoritmos debajo del capó)? ¿O dónde están algunos buenos artículos que responden a estas dos primeras preguntas?


No es que uno sea más completo que el otro, es más una cuestión de que uno tenga algunas cosas que el otro no, y viceversa. También es una cuestión de público objetivo y propósito.

Mallet es un kit de herramientas de aprendizaje automático basado en Java que tiene como objetivo proporcionar implementaciones robustas y rápidas para varias tareas de procesamiento de lenguaje natural.

NLTK se construye utilizando Python y viene con muchas cosas adicionales como cuerpos como WordNet. NLTK está orientado más a las personas que aprenden PNL y, como tal, se usa más como plataforma de aprendizaje y quizás menos como solución de ingeniería.

En mi opinión, la principal diferencia entre los dos es que NLTK está mejor posicionada como un recurso de aprendizaje para las personas interesadas en el aprendizaje automático y la PNL, ya que incluye una gran cantidad de documentación, ejemplos, corpus, etc.

Mallet está más dirigido a investigadores y profesionales que trabajan en el campo y ya saben lo que quieren hacer. Viene con menos documentación (aunque tiene buenos ejemplos y la API está bien documentada) en comparación con la extensa colección de cosas de PNL en general de NLTK.

ACTUALIZACIÓN: los buenos artículos que describan estos serían los documentos y ejemplos de Mallet en http://mallet.cs.umass.edu/ - la barra lateral tiene enlaces a etiquetado de secuencias, modelado de temas, etc.

y para NLTK, el libro NLTK Natural Language Processing with Python es una buena introducción tanto a NLTK como a NLP.

ACTUALIZAR

Recientemente he encontrado la biblioteca de sklearn Python. Esto está orientado al aprendizaje automático de manera más general, no directamente para la PNL, pero también puede usarse para eso. Viene con una gran selección de herramientas de modelado y la mayoría parece depender de NumPy, por lo que debería ser bastante rápido. Lo he usado bastante y puedo decir que está muy bien escrito y documentado y tiene una comunidad de desarrolladores activa que lo impulsa (al menos desde mayo de 2013).

ACTUALIZACIÓN 2

Ahora también he estado usando el mazo durante algún tiempo (específicamente la API del mazo) y puedo decir que si planea integrar el mazo en otro proyecto, debería estar muy familiarizado con Java y listo para dedicar mucho tiempo a la depuración de errores. Base de código completamente sin documentar.

Si todo lo que quieres hacer es usar las herramientas de la línea de comando del mazo, está bien, el uso de la API requiere una gran cantidad de excavación en el propio código del mazo y, por lo general, también corrige algunos errores. Tenga en cuenta que el mazo viene con una documentación mínima con respecto a la API.


No estoy familiarizado con el kit de herramientas de modelado de temas de NLTK, así que no intentaré compararlo. Las fuentes de Mallet en Github contienen varios algoritmos (algunos de los cuales no están disponibles en la versión ''lanzada''). Que yo sepa, hay

  • SimpleLDA (LDA con muestreo de Gibbs colapsado)
  • ParallelTopicModel (LDA que funciona en varios núcleos)
  • HierarchicalLDA
  • LabeledLDA (un enfoque semi-supervisado de LDA)
  • Asignación de Pachinko con LDA.
  • WeightedTopicModel

También tiene

  • Un par de clases que ayudan en el diagnóstico de modelos LDA. (TopicModelDiagnostics.java)
  • La capacidad de serializar y des-serializar un modelo LDA entrenado.

En definitiva, es un excelente conjunto de herramientas para experimentar con modelos de temas, con una licencia de código abierto accesible (CPL).