
[Rubyml | RubyDataScience | Rubyinterop]
Impresionante PNL con Ruby 
Recursos útiles para el procesamiento de texto en Ruby
Esta lista curada comprende recursos impresionantes , bibliotecas, fuentes de información sobre el procesamiento computacional de textos en lenguajes humanos con el lenguaje de programación Ruby. Ese campo a menudo se conoce como PNL, lingüística computacional, HLT (tecnología del lenguaje humano) y puede traerse junto con inteligencia artificial, aprendizaje automático, recuperación de información, minería de texto, extracción de conocimiento y otras disciplinas relacionadas.
Esta lista proviene de nuestro trabajo diario en modelos de idiomas y herramientas de PNL. Lea por qué esta lista es increíble. Nuestras preguntas frecuentes describen las decisiones importantes y las respuestas útiles en las que puede estar interesado.
¡Cada contribución es bienvenida! Agregue enlaces a través de solicitudes de extracción o cree un problema para comenzar una discusión.
¡Síganos en Twitter y por favor, difundir la palabra usando la etiqueta hash #RubyNLP !
Contenido
- Tutoriales
- Subtareas de tuberías de PNL
- Generación de tuberías
- Motores multipropósito
- Identificación del idioma
- Segmentación
- Procesamiento léxico
- Derivado
- Lemmatización
- Estadísticas léxicas: tipos de conteo y tokens
- Palabras de detención de filtrado
- Procesamiento a nivel frasal
- Procesamiento sintáctico
- Análisis de la circunscripción
- Análisis semántico
- Análisis pragmático
- Tareas de alto nivel
- Corrección de ortografía y error
- Alineación de texto
- Traducción automática
- Análisis de sentimientos
- Números, fechas y análisis de tiempo
- Reconocimiento de entidad nombrado
- Texto a voz a texto
- Agentes de diálogo, asistentes y chatbots
- Recursos lingüísticos
- Bibliotecas de aprendizaje automático
- Visualización de datos
- Reconocimiento óptico de caracteres
- Extracción de texto
- Búsqueda de texto completo, recuperación de información, indexación
- Manipulación de cadenas consciente del idioma
- Artículos, publicaciones, charlas y presentaciones
- Proyectos y ejemplos de código
- Libros
- Comunidad
- ¡Necesita su ayuda!
- Recursos relacionados
- Licencia
Tutoriales
¡Ayúdanos a completar esta sección! ?
Subtareas de tuberías de PNL
Una tubería NLP comienza con un texto sin formato.
Generación de tuberías
- Composible_Operations - Marco de definición para las tuberías de operación.
- Ruby -Spark: ataduras con un DSL fácil de entender.
- Phobos: cliente rubí simplificado para Apache Kafka.
- Paralelo: supervisor para la ejecución paralela en múltiples CPU o en muchos hilos.
- Pwrake: extensiones de rastrillo para ejecutar tareas locales y remotas en paralelo.
Motores multipropósito
- Open -NLP - Bindejas Ruby para el Kit de herramientas OpenNLP.
- Stanford-Core-NLP-Bonedas Ruby para las herramientas Stanford Corenlp.
- TRATAR - Marco de procesamiento del lenguaje natural para Ruby (como NLTK para Python).
- NLP_Toolz: envoltura sobre algunas clases de OpenNLP y el analizador de Berkeley original.
- Open_NLP - Jintos de JRuby para el kit de herramientas OpenNLP.
- Ruby-Spacy-Módulo de envoltura para la biblioteca Spacy NLP a través de Pycall.
API en línea
- Alchemyapi_ruby - Legacy Ruby SDK para Alchemyapi/Bluemix.
- Wit -Ruby - Biblioteca de clientes Ruby para la plataforma Wit.Ai Language Entends.
- Wlapi - Biblioteca de clientes Ruby para Wortschatz Leipzig Web Services.
- Monkeylearn -Ruby - Análisis de sentimientos, modelado de temas, detección de idiomas, reconocimiento de entidad nombrado a través de un cliente de API web basado en Ruby.
- Google-Cloud-Language: la API del servicio de lenguaje natural de Google para Ruby.
Identificación del idioma
La identificación del idioma es uno de los primeros pasos cruciales en cada tubería de PNL.
- Scylla - Categorización e identificación del lenguaje.
Segmentación
Herramientas para la tokenización, la detección de límites de palabras y oraciones y desambiguación.
- Tokenizer: tokenizador multilingüe simple. [tutorial]
- Pragmatic_Tokenizer - Tokenizer multilingüe para dividir una cadena en tokens.
- NLP -Pure: algoritmos de procesamiento del lenguaje natural implementados en rubí puro con dependencias mínimas.
- Textoken - Biblioteca de tokenización de texto simple y personalizable.
- Pragmatic_segmenter - desambiguación del límite de palabras con muchas cookies.
- Punkt -segmenter - Implementación de Ruby puro del segmento Punkt.
- TACTFUL_TOKINIZER - Tokenizer basado en regexp para diferentes idiomas.
- Scapel - Herramienta de desambiguación del límite de oraciones.
Procesamiento léxico
Derivado
Stemming es el término utilizado en la recuperación de la información para describir el proceso para reducir las formas de palabras a alguna representación base. Se debe distinguir la derivación de la lematización, ya que stems no necesariamente tienen una motivación lingüística.
- Ruby-Smitmer-Ruby-Smitmer expone la API de la bola de nieve a Ruby.
- UEA -STEMMER - STEMMER conservador para la búsqueda e indexación.
Lemmatización
La lemmatización se considera un proceso para encontrar una forma base de una palabra. Los lemas a menudo se recogen en diccionarios.
- Lemmatizer - Lemmatizer basado en WordNet para textos en inglés.
Estadísticas léxicas: tipos de conteo y tokens
- WC - Instalaciones para contar ocurrencias de palabras en un texto.
- Word_Count - Contador de palabras para los objetos
String y Hash . - Words_Counted - Pure Ruby Biblioteca Contando estadísticas de palabras con diferentes opciones personalizadas.
Palabras de detención de filtrado
- Palabras de parada -filtro: filtra y detiene el léxico de la palabra basado en el lemmatizador de la bola de nieve.
Procesamiento a nivel frasal
- N_GRAM - Generador N -Gram.
- Ruby -ngram: rompa palabras y frases en ngrams.
- Raingrams: biblioteca de ngrams flexible y de uso general escrita en puro rubí.
Procesamiento sintáctico
Análisis de la circunscripción
- Stanfordparser - Envoltura con sede en Ruby para el analizador Stanford.
- Rley - Implementación pura de Ruby del algoritmo de analgésico Earley para gramáticas de circunscripción sin contexto.
- Rsyntaxtree: visualización de árboles sintácticos en Ruby basado en Rmagick. [DEP: ImageMagick]
Análisis semántico
- Amatch: conjunto de cinco tipos de distancia entre cadenas (incluidos Levenshtein, Sellers, Jaro -Winkler, 'Par de distancia de par').
- Damerau-Levenshtein: calcula la distancia de edición utilizando el algoritmo Damerau-Levenshtein.
- Agua caliente: algoritmos de distancia de edición de cadena FFI FFI rápida Ruby.
- Levenshtein-Ffi-Cálculo de distancia de edición de cadena rápida, utilizando el algoritmo Damerau-Levenshtein.
- TF_IDF - Frecuencia de frecuencia de término / documento inverso en Ruby puro.
- TF-IDF-Similarity: calcule la similitud entre los textos usando TF/IDF.
Análisis pragmático
- Sentimentlib - Gema de análisis de sentimiento extensible simple.
Tareas de alto nivel
Corrección de ortografía y error
- Gingericia: ortografía y correcciones de gramática a través de la API de jengibre.
- HUNSPELL -I18N - Bonedas de rubí al corrector ortográfico estándar de Hunspell.
- FFI -Hunspell - Bindejas Ruby basadas en FFI para Hunspell.
- HUNSPELL - Bindeos de rubí a Hunspell a través de Ruby C API.
Alineación de texto
- Alineación: rutinas de alineación para textos bilingües (implementación de Gale -Church).
Traducción automática
- Google-API-Client-Google API Ruby Client.
- Microsoft_translator - Cliente Ruby para la API de traductor de Microsoft.
- Termit: Traducir Google con síntesis del habla en su terminal.
- ZIPF - Implementación de BLU y otros algoritmos base.
Análisis de sentimientos
- Stimmung - Polaridad semántica basada en el léxico de Sentiws.
Números, fechas y análisis de tiempo
- crónico - Pure Ruby Natural Language Date Parser.
- cronic_between - Lenguaje natural de Ruby Simple Parser para rangos de fecha y hora.
- cronic_duration - Pure Ruby Parser para el tiempo transcurrido.
- Kronic - Métodos para analizar y formatear fechas legibles humanas.
- Níquel: información de extractos, hora y mensajes del texto redactado naturalmente.
- Tickle - analizador para eventos recurrentes y repetidos.
- Numerizador - Parser Ruby para expresiones de números en inglés.
Reconocimiento de entidad nombrado
- Ruby -Ner - Reconocimiento de entidad nombrado con Stanford Ner y Ruby.
- Ruby-NLP-Ruby Binding para Stanford POS-Tagger y Name Entity Reconocyer.
Texto a voz a texto
- Espeak-Ruby: una pequeña API Ruby para utilizar 'espeak' y 'cojo' para crear archivos mp3 de texto a voz.
- TTS-Conversión de texto a voz utilizando el servicio de traducción de Google.
- ATT_SPEECH - Ruby Wrapper sobre la AT&T Speech API para el discurso al texto.
- PocketsPhinx -Ruby - PocketsPhinx Bindings.
Agentes de diálogo, asistentes y chatbots
- Chatterbot: el marco de bot de Twitter sencillo basado en Ruby, utilizando OAuth para autenticarse.
- LITA: marco de bots de operación de chat altamente extensible escrito con almacenamiento persistente en Redis.
Recursos lingüísticos
- RWORDNET - Biblioteca API autónoma de Ruby Pure para Princeton WordNet®.
- WordNet: enlaces sintonizados de rendimiento para Princeton WordNet®.
Bibliotecas de aprendizaje automático
Algoritmos de aprendizaje automático en rubí puro o escritos en otros lenguajes de programación con enlaces apropiados para Ruby.
Para una lista más actualizada, mire la impresionante ML con la lista de Ruby.
- RB -LIBSVM - Máquinas de vectores de soporte con Ruby.
- Weka - Jruby Bindings para Weka, diferentes algoritmos ML implementados a través de Weka.
- DecisionTree - Algoritmo de árbol de decisión ID3 en Pure Ruby [post] .
- RTIMBL - ALICIONES basados en memoria del marco TIMBL.
- Clasificador -Reborn - Módulo de clasificación general para permitir que Bayesian y otros tipos de clasificaciones.
- LDA -Ruby - Implementación de Ruby de la LDA (Asignación de Dirichlet latente) para el modelado automático de temas y la agrupación de documentos.
- Liblineal-Ruby-Swig-Interfaz Ruby para Liblineal (mucho más eficiente que LibsVM para la clasificación de texto).
- Linnaeus - Clasificador bayesiano respaldado por Redis.
- Maxent_String_Classifier - Jruby Clasificador de entropía máxima para datos de cadena, basado en el marco OpenNLP Maxent.
- Naive_Bayes - Clasificador de Bayes Naive Simple.
- Nbayes: implementación de Ruby de ingenuos bayes con todas las funciones.
- OMNICAT - Marco de bastidor generalizado para clasificaciones de texto.
- Omnicat -Bayes - Implementación de clasificación de texto de Bayes Naive como una estrategia de clasificador Omnicat.
- Ruby -Fann - Binkings Ruby a la rápida Biblioteca de la Red Neural Artificial (Fann).
- RBLEARN - Libración de extracción de características y validación cruzada.
Visualización de datos
Consulte la sección de visualización de datos sobre la ciencia de datos con la lista de Ruby.
Reconocimiento óptico de caracteres
- Wrapper basado en Tesseract -OCR - FFI sobre el motor Tesseract OCR.
Extracción de texto
- YOMU - Biblioteca para extraer texto y metadatos de archivos y documentos utilizando el kit de herramientas de análisis de contenido de Apache Tika.
Búsqueda de texto completo, recuperación de información, indexación
- RSOLR - Biblioteca de clientes Ruby and Rails para Apache Solr.
- Sunspot - Cliente centrado en Rails para Apache Solr.
- pensamiento -sphinx: complemento de registro activo para usar Sphinx en proyectos basados en rieles (no solo).
- Elasticsearch - Ruby Client y API para Elasticsearch.
- Elasticsearch -Rails - Integraciones de Ruby and Rails para Elasticsearch.
- Google-API-Client-Biblioteca de API Ruby para servicios de Google.
Manipulación de cadenas consciente del idioma
Bibliotecas para la manipulación de cadenas consciente del lenguaje, IE Búsqueda, coincidencia de patrones, conversión de casos, transcodificación, expresiones regulares que necesitan información sobre el lenguaje subyacente.
- Fuzzy_match: comparación de cadenas difuso con medidas de distancia y expresión regular.
- Fuzzy-String-Match-Library Fuzzy String Matching Biblioteca para Ruby.
- Active_Support: la gema ROR
ActiveSupport tiene varias extensiones de cadena que pueden manejar el caso. - Fuzzy_Tools: conjunto de herramientas para búsquedas difusas en Ruby Tuned para su precisión.
- U - extiende el soporte Unicode de Ruby.
- Unicode - Biblioteca de normalización de Unicode.
- Commonegexruby: encuentre muchos tipos de información común en una cadena.
- Ejemplos de regexp: genere cadenas que coincidan con una expresión regular dada.
- verbal_expressions: facilite las expresiones regulares difíciles.
- Translit_kit - Translitere el texto hebreo y yiddish en caracteres latinos.
- RE2 - Biblioteca de expresión regular de velocidad alta para minería de texto y extracción de texto.
- Regex_Sample - Generación de cadenas de muestra a partir de una expresión regular dada.
- Iuliia - Transliteración cirílica a latín de muchas maneras posibles (definido por la implementación de referencia).
Artículos, publicaciones, charlas y presentaciones
- 2019
- Extraer texto de imágenes usando Ruby por Aonemd [POST | código]
- 2018
- Procesamiento del lenguaje natural y análisis de sentimientos de tweets por Cassandra Corrales [post]
- 2017
- La API de Google NLP se encuentra con Ruby de Aja Hammerly [POST]
- La sintaxis no lo es todo: PNL para rubyistas de Aja Hammerly [diapositivas]
- Computación científica en Jruby por Prasun Anand [diapositivas | Video | Diapositivas | diapositivas]
- Normalización unicode en Ruby por Starr Horne [post]
- 2016
- Cree rápidamente un bot de telegrama en Ruby de Ardian Haxha [Tutorial]
- Aprendizaje profundo: una introducción para los desarrolladores de Ruby por Geoffrey Litt [diapositivas]
- Cómo hice un programa Pure-Ruby Word2Vec más de 3 veces más rápido por Kei Sawada [diapositivas]
- Dōmo Arigatō, Sr. Roboto: Aprendizaje automático con Ruby de Eric Weinstein [diapositivas | video]
- 2015
- Análisis de N-gram para diversión y ganancias de Jesús Castello [Tutorial]
- El aprendizaje automático se hizo simple con Ruby de Lorenzo Masini [Tutorial]
- Uso de Ruby Machine Learning para encontrar citas de Paris Hilton de Rick Carlino [Tutorial]
- Explorando el procesamiento del lenguaje natural en Ruby por Kevin Dias [diapositivas]
- El aprendizaje automático se hizo simple con Ruby de Lorenzo Masini [POST]
- Ciencia práctica de datos en Ruby de Bobby Grayson [diapositivas]
- 2014
- Lenguaje natural análisis con Ruby de Glauco Custódio [Tutorial]
- Desmitificante de ciencia de datos: analizando las conversaciones de conferencias con rieles y ngrams de Todd Schneider [Video | código]
- Procesamiento del lenguaje natural con Ruby por Konstantin Tennhard [Video | Video | Video | diapositivas]
- 2013
- Cómo analizar 'ir' - Procesamiento del lenguaje natural en Ruby por Tom Cartwright [Diapositivas | video]
- Procesamiento del lenguaje natural en Ruby por Brandon Black [diapositivas | video]
- Procesamiento del lenguaje natural con Ruby: N-Grams de Nathan Kleyn [Tutorial | código]
- Buscando Lovecraft, Parte 1: Una introducción a PNL y The Treat Gem de Robert Qualls [Tutorial]
- 2012
- Aprendizaje automático con Ruby, parte uno de Vasily Vasinov [Tutorial]
- 2011
- Ruby One-Finers de Benoit Hamelin [post]
- Agrupación en Ruby por Colin Drake [post/)]
- 2010
- Bayes_Motel - Clasificación bayesiana para Ruby por Mike Perham [Post]
- 2009
- Portando el UEA-Lite Stemmer a Ruby por Jason Adams [Post]
- Recursos de la PNL para Ruby de Jason Adams [Post]
- 2008
- Máquinas de vectores de soporte (SVM) en Ruby por Ilya Grigorik [Post]
- Clasificación práctica de texto con Ruby de Gleicon Moraes [POST | código]
- 2007
- Aprendizaje de árboles de decisión en Ruby por Ilya Grigorik [post]
- 2006
- Habla mi idioma: procesamiento del lenguaje natural con Ruby de Michael Granger [diapositivas | redacción | redacción]
Proyectos y ejemplos de código
- Ir a la distancia: implementaciones de varios algoritmos de distancia con cálculos de ejemplo.
- Reconocimiento de entidades nombrado con Stanford Ner y Ruby - Ner Ejemplos en Ruby y Java con algunas explicaciones.
- Palabras contadas - Ejemplos de estadísticas de palabras personalizables alimentadas por palabras_COUNTED.
- Rsyntaxtree - demostración basada en la web de la visualización del árbol sintáctico.
Libros
- Miller, Rob. Procesamiento de texto con Ruby: extraiga el valor de los datos que lo rodean. Programadores Pragmáticos, 2015. [Enlace]
- Watson, Mark. Inteligencia de secuencias de comandos: recopilación y procesamiento de información web 3.0. APRESS, 2010. [Enlace]
- Watson, Mark. Semántica práctica web y aplicaciones de datos vinculados. Lulu, 2010. [Enlace]
Comunidad
- Reddit
- Desbordamiento de la pila
- Gorjeo
¡Necesita su ayuda!
Todos los proyectos en esta sección son realmente importantes para la comunidad, pero necesitan más atención. Por favor, si tiene tiempo libre y dedicación, pase algunas horas en el código aquí.
- hurto - Recuperación de información en C y Ruby.
- Resumir - Ruby Native Wrapper para resumen de texto abierto.
Recursos relacionados
- Implementaciones de traducción automática neural
- Awesome Ruby: entre otros elementos impresionantes, una breve lista de proyectos relacionados con la PNL.
- Ruby NLP-Colección de bibliotecas Ruby de última generación para PNL.
- Procesamiento del habla y lenguaje natural: lista general de recursos relacionados con PNL (en su mayoría no para programadores de rubí).
- Ruby científico: álgebra lineal, visualización y computación científica para Ruby.
- Iruby - Iruby Kernel para Jupyter (Formelly Ipython).
- Impresionante OCR - Multitud de recursos de OCR (reconocimiento de caracteres ópticos).
- Awesome TensorFlow - Aprendizaje automático con bibliotecas TensorFlow.
- ImageMagick
Licencia
Awesome NLP with Ruby de Andrei Beliankou y colaboradores.
En la medida de lo posible bajo la ley, la persona que asoció CC0 con Awesome NLP with Ruby ha renunciado a todos los derechos de autor y derechos relacionados o vecinos para Awesome NLP with Ruby .
Debería haber recibido una copia del CC0 LegalCode junto con este trabajo. Si no, consulte https://creativecommons.org/publicdomain/zero/1.0/.