Linguakit

Kit lingüístico: dependency parser, PoS tagger, NERC, extractor multipalabra...

LINGUAKIT

Desarrollado por el Grupo ProLNat@GE (http://gramatica.usc.es/pln/), CiTIUS, Universidad de Santiago de Compostela, Galicia.

LinguaKit es una herramienta de Procesamiento del Lenguaje Natural que incluye varios módulos de PLN (actualizados y mejorados constantemente):

  • Analizador de dependencias (DepPattern)
  • Etiquetador PoS
  • NER (reconocimiento de entidades nombradas)
  • NEC (clasificación de entidades nombradas)
  • Resolución de correferencias de entidades nombradas
  • Análisis de sentimientos
  • Extracción de expresiones multipalabra
  • Extracción de palabras clave
  • Extracción de relaciones
  • Reconocimiento de idiomas
  • Tokenizador
  • Segmentación de oraciones
  • Lematización
  • Palabra clave en contexto
  • Enlace de entidades y anotación semántica
  • Resumidor
  • Conjugador de verbos
  • Corrector lingüístico (ortografía, léxico, gramática)

Descripción

El comando linguakit puede procesar 4 idiomas: portugués, inglés, español y gallego. Desde febrero de 2018, se ha añadido una nueva variedad/idioma: el gallego-portugués histórico (histgz), por Xavier Canosa. Están disponibles las siguientes herramientas. Desplácese hacia abajo para consultar documentación adicional y ejemplos de uso.

  • Analizador de dependencias (parámetro dep): Ejecuta los analizadores. Los analizadores están implementados en PERL y almacenados en el archivo parsers. Se compilaron a partir de gramáticas formales (más información). Hay varios parámetros para controlar la salida: tripletas básicas (-a), tripletas con información morfológica (-fa), la misma salida que la entrada (-c) para fines de corrección y formato CoNLL (-conll). Estos parámetros se explican con más detalle en la sección Analizador de dependencias que aparece más abajo.
  • Etiquetador PoS (parámetro tagger): Ofrece el etiquetador PoS CitiusTools. Devuelve una etiqueta PoS y un lema por token. Esto también se conoce como desambiguación del etiquetado PoS. El módulo incluye dos submódulos: NER (-ner) y NEC (-nec). El módulo NEC devuelve etiquetas semánticas para las entidades nombradas: NP0SP00 (Persona), NP00G00 (Lugar), NP00O00 (Organización), NP00V00 (Miscelánea).
  • COREF (parámetro coref) etiqueta las distintas entidades nombradas del texto (identificadas por NER y NEC) con un identificador numérico que representa la entidad discursiva a la que se refieren (p. ej., «Bob Marley NP00SP0 (1)», «Jimi Hendrix NP00SP0 (2)», «Marley NP00SP0 (1)», «Hendrix NP00SP0 (2)», etc.). COREF permite la opción -crnec (experimental), que vuelve a etiquetar algunas entidades nombradas basándose en los resultados del análisis de correferencias. Tenga en cuenta que los módulos COREF pueden ralentizar la ejecución del sistema al analizar textos largos. Recuerde también que COREF se ejecuta documento por documento, por lo que no se recomienda ejecutarlo en un corpus grande que contenga varios documentos.
  • Extracción de expresiones multipalabra (parámetro mwe): Extrae expresiones multipalabra de texto etiquetado con PoS. Hay varios parámetros opcionales, cada uno correspondiente a una medida de asociación léxica específica para ordenar los términos candidatos: chi cuadrado (-chi, por defecto), loglikelihood (-log), información mutua (-mi), probabilidad condicional simétrica (-scp), coocurrencias simples (-cooc).
  • Extracción de palabras clave (parámetro key): Extrae palabras clave (lexemas y nombres propios) de texto etiquetado con PoS y las ordena usando un corpus de referencia y chi cuadrado.
  • Análisis de sentimientos (parámetro sent): Devuelve POSITIVE, NONE (neutral) o NEGATIVE, usando un léxico de polaridad y un clasificador entrenado con tuits anotados. Dado un texto de entrada, este módulo devuelve un valor de polaridad para cada párrafo; es decir, devuelve tres columnas por cada párrafo: el texto en la primera columna, la polaridad (pos, neg, none) en la segunda columna y la puntuación de polaridad (de 0 a 1) en la tercera columna. La última línea de la salida devuelve la puntuación global, calculada como la media de todos los párrafos.
  • Extracción de relaciones (parámetro rel): Devuelve tripletas SUJETO - RELACIÓN - OBJETO usando métodos basados en la extracción abierta de información.
  • Reconocimiento de idiomas (parámetro recog): Devuelve el idioma del texto de entrada: en, es, pt, gl, gz (variedad agal del gallego), fr, eu, ca, bn (bengalí), ur (urdu), hi (hindi), ta (tamil). Este módulo también lo utilizan otros módulos para reconocer el idioma antes del procesamiento (solo para los idiomas compatibles: pt, en, es, gl).
  • Tokenizador (parámetro tok): Devuelve un texto tokenizado. El parámetro -split separa las contracciones de palabras y los clíticos verbales. El parámetro -sort ordena los tokens por frecuencia.
  • Segmentación de oraciones (parámetro seg): Devuelve una oración por línea. La segmentación de oraciones consiste en dividir una cadena de lenguaje escrito en las oraciones que la componen.
  • Lematización (parámetro lem): Devuelve todos los lemas de cada token y toda la información morfológica (etiquetas PoS) asociada a cada lema. Este es el proceso que se ejecuta antes de la desambiguación del etiquetado PoS.
  • Palabra clave en contexto (parámetro kwic): Devuelve una palabra objetivo en contexto (ventana: 10 tokens). La opción -tokens devuelve los tokens como contexto. Este módulo requiere que se indique la palabra clave que se va a buscar como argumento adicional.
  • Enlace de entidades (parámetro link): Devuelve una lista de términos que representan entidades de Wikipedia. Además, el texto de entrada se anota con esos términos y sus enlaces a Wikipedia. Requiere conexión a Internet, ya que funciona mediante un servicio de API web. La salida puede estar en dos formatos: json (por defecto) y xml.
  • Resumidor (parámetro sum): Devuelve un resumen del texto de entrada. Se puede elegir el porcentaje del texto que se resumirá usando como opción un número del 1 al 100. El código fue desarrollado por Fernando Blanco Dosil cuando trabajaba en Cilenis Language Technology.
  • Conjugador (parámetro conj): Devuelve la flexión verbal si se introduce la forma de infinitivo. Tenga en cuenta que la entrada no es un archivo, sino una cadena, el verbo en infinitivo, y que el módulo debe usarse así: ./linguakit conj pt "fazer" -s -pb. El módulo funciona en tres idiomas: gallego, español y portugués. En el caso de los verbos portugueses, se puede elegir entre 4 variedades lingüísticas: portugués europeo posterior al acuerdo ortográfico (-pe), portugués brasileño posterior al acuerdo ortográfico (-pb), portugués europeo anterior al acuerdo ortográfico (-pen), portugués brasileño anterior al acuerdo ortográfico (-pbn). La salida está en formato json. Este módulo requiere conexión a Internet, ya que funciona mediante una API web.
  • Corrector lingüístico (parámetro aval): Devuelve los errores lingüísticos encontrados en la oración de entrada. Se consideran varios tipos de errores: problemas ortográficos, léxicos y gramaticales. También se ofrecen sugerencias de corrección y una explicación lingüística para cada tipo específico de error. Requiere conexión a Internet, ya que funciona mediante un servicio de API web. La salida puede estar en dos formatos: json (por defecto) y xml. Por ahora, solo está disponible para el idioma gallego (gl).

Uso de Make (debe instalarse en un directorio bin accesible):

git clone  https://github.com/citiususc/Linguakit
cd Linguakit
sudo make deps
sudo make install
sudo make test-me

Gracias a José João Almeida (Univ. do Minho) por el archivo Make.

Como todos los módulos se actualizan regularmente, es mejor usar git para instalar y actualizar el sistema.

El 22 de junio de 2017, César Piñeiro publicó una nueva versión más eficiente de LinguaKit (también para Windows: comando linguakit.bat).