2009-06-16 17 views
63

Estoy buscando hacer un análisis de oraciones (principalmente para aplicaciones de Twitter) e inferir algunas características generales. ¿Hay alguna buena biblioteca de procesamiento de lenguaje natural para este tipo de cosas en Ruby?Procesamiento de lenguaje natural en Ruby

Similar a Is there a good natural language processing library pero para Ruby. Preferiría algo muy general, ¡pero cualquier pista es apreciada!

+0

¿Por qué no probar con ingenio? Es un servicio externo gratuito. Escribí una joya que envuelve su funcionalidad: [wit_bot] (// bensites.com/wit_bot) –

Respuesta

23

Hay algunas cosas en Ruby Linguistics y algunos enlaces desde allí, aunque todavía no parece estar cerca de lo que NLTK es para Python.

2

Debe ser mucho más específico sobre cuáles son estas "características generales".

En NLP "características generales" de una oración puede significar un millón de cosas diferentes - análisis del sentimiento (es decir, la actitud del hablante), parte básica del etiquetado del habla, uso de pronombre personal, ¿contiene la oración activa o pasiva? verbos, cuál es el tiempo y la voz de los verbos ...

No me importa si usted es vago acerca de describirlo, pero si no sabemos lo que está preguntando, es muy poco probable que podamos ser específicos en ayudarte

Mi sugerencia general, especialmente para NLP, es que debe obtener la herramienta mejor diseñada para el trabajo en lugar de limitarse a un idioma específico. Limitarse a un idioma específico está bien para algunas tareas donde las herramientas generales se implementan en todas partes, pero NLP no es una de ellas.

El otro problema al trabajar con Twitter es que muchas de las oraciones estarán medio cocidas o comprimidas de maneras extrañas y maravillosas, que la mayoría de las herramientas de PNL no están capacitadas. Para ayudar allí, el NUS SMS Corpus consiste en "alrededor de 10.000 mensajes SMS recopilados por los estudiantes". Debido a las restricciones y el uso similares, el análisis puede ser útil en sus exploraciones con Twitter.

Si es más específico, intentaré enumerar algunas herramientas que ayudarán.

11

Siempre puede usar jruby y usar las bibliotecas java.

EDITAR: La capacidad de hacer ruby ​​nativamente en el jvm y aprovechar fácilmente las bibliotecas de Java es una gran ventaja para los rubyistas. Esta es una buena opción que debe considerarse en una situación como esta.

Which NLP toolkit to use in JAVA?

+4

No debería solo decir que debería usar bibliotecas de Java, pero qué bibliotecas de Java. Puede que ni siquiera existan, para todo lo que un lector pueda saber. –

+0

http://stackoverflow.com/questions/895893/which-nlp-toolkit-to-use-in-java – jshen

9

He encontrado un excelente artículo que detalla algunos algoritmos de PNL en Ruby here. Esto incluye stemmers, analizadores de tiempo de fecha y analizadores gramaticales.

+0

+1 por señalarme crónicamente solo ... – cbmeeks

60

Tres paquetes excelentes y maduras PNL son Stanford Core NLP, Open NLP y LingPipe. Hay enlaces de Ruby a las herramientas Stanford Core NLP (licencia GPL) así como a las herramientas OpenNLP (licencia Apache).

En el lado más experimental de las cosas, mantengo un Text Retrieval, Extraction and Annotation Toolkit (Treat), publicado bajo la GPL, que proporciona una API común para casi todas las gemas relacionadas con la PNL que existe para Ruby. La siguiente lista de características de Treat también puede servir como una buena referencia en términos de gemas estables de procesamiento de lenguaje natural compatibles con Ruby 1.9.

  • segmenters de texto y tokenizers (punkt-segmenter, tactful_tokenizer, srx-english, scalpel)
  • analizadores de lenguaje natural para Inglés, extracción de entidades francés y alemán y el nombre de Inglés (stanford-core-nlp).
  • Palabra de inflexión y la conjugación (linguistics), derivados (ruby-stemmer, uea-stemmer, lingua, etc.)
  • interfaz de WordNet (rwordnet), etiquetadores de punto de venta (rbtagger, engtagger, etc.)
  • Lengua (whatlanguage), fecha/tiempo (chronic, kronic, nickel), palabra clave (lda-ruby) extracción.
  • Recuperación de texto con indexación y búsqueda de texto completo (ferret).
  • Extracción de entidad con nombre (stanford-core-nlp).
  • Aprendizaje automático básico con árboles de decisión (decisiontree), MLP (ruby-fann), SVM (rb-libsvm) y clasificación lineal (tomz-liblinear-ruby-swig).
  • Métricas de similitud de texto (levenshtein-ffi, fuzzy-string-match, tf-idf-similarity).

No incluido en la invitación, pero relevante a la PNL: hotwater (algoritmos distancia cadena), yomu (ligantes a Apache Tiki para leer .doc, .docx, .pages, .odt, .rtf, .pdf), graph-rank (una implementación de GraphRank).

4

prueba este

https://github.com/louismullie/stanford-core-nlp

sobre Gem Stanford-core-PNL

Esta joya genera un alto nivel de fijaciones de Ruby al paquete de Stanford Core PNL, un conjunto de herramientas de procesamiento de lenguaje natural para tokenización , segmentación de oraciones, etiquetado de parte de la voz, lematización y análisis de inglés, francés y alemán. El paquete también proporciona reconocimiento de entidad nombrada y resolución de correferencia para inglés.

http://nlp.stanford.edu/software/corenlp.shtml página de demostración http://nlp.stanford.edu:8080/corenlp/

5

Ten en cuenta también el uso de las API de SaaS como MonkeyLearn. Puede entrenar fácilmente clasificadores de texto con el aprendizaje automático e integrarlos a través de una API. Hay un Ruby SDK disponible.

Además de crear sus propios clasificadores, puede elegir módulos creados previamente para análisis de opinión, clasificación de temas, detección de idioma y más. También tenemos extractores como extracción de palabras clave y entidades, y seguiremos agregando más módulos públicos.

Otras características interesantes:

  • Usted tienen una interfaz gráfica de usuario para crear algoritmos/prueba.
  • Los algoritmos se ejecutan muy rápido en nuestra plataforma de computación en la nube.
  • Puede integrarse con Ruby o cualquier otro lenguaje de programación.
Cuestiones relacionadas