Linguakit

Kit lingüístico: analizador de dependencias, etiquetador PoS, NERC, extractor de expresións multipalabra...

LINGUAKIT

Desenvolvido polo Grupo ProLNat@GE (http://gramatica.usc.es/pln/), CiTIUS, Universidade de Santiago de Compostela, Galiza.

LinguaKit é unha ferramenta de Procesamento da Linguaxe Natural que inclúe varios módulos de PLN (actualizados e mellorados constantemente):

  • Analisador de dependencias (DepPattern)
  • Etiquetador PoS
  • NER (recoñecemento de entidades nomeadas)
  • NEC (clasificación de entidades nomeadas)
  • Resolución de correferencias de entidades nomeadas
  • Análise de sentimentos
  • Extracción de expresións multipalabra
  • Extracción de palabras clave
  • Extracción de relacións
  • Recoñecemento de linguas
  • Tokenizador
  • Segmentación de oracións
  • Lematización
  • Palabra clave en contexto
  • Ligazón de entidades e anotación semántica
  • Resumidor
  • Conxugador de verbos
  • Corrector lingüístico (ortografía, léxico, gramática)

Descrición

O comando linguakit pode procesar 4 linguas: portugués, inglés, español e galego. Desde febreiro de 2018, engadiuse unha nova variedade/lingua: o galego-portugués histórico (histgz), de Xavier Canosa. Están dispoñibles as seguintes ferramentas. Desprácese cara abaixo para consultar documentación adicional e exemplos de uso.

  • Analisador de dependencias (parámetro dep): Executa os analizadores. Os analizadores están implementados en PERL e gardados no ficheiro parsers. Compiláronse a partir de gramáticas formais (máis información). Hai varios parámetros para controlar a saída: triplas básicas (-a), triplas con información morfolóxica (-fa), a mesma saída ca entrada (-c) para fins de corrección e formato CoNLL (-conll). Estes parámetros explícanse máis polo miúdo na sección Analisador de dependencias que aparece máis abaixo.
  • Etiquetador PoS (parámetro tagger): Ofrece o etiquetador PoS CitiusTools. Devolve unha etiqueta PoS e un lema por cada token. Isto tamén se coñece como desambiguación da etiquetaxe PoS. O módulo inclúe dous submódulos: NER (-ner) e NEC (-nec). O módulo NEC devolve etiquetas semánticas para as entidades nomeadas: NP0SP00 (Persoa), NP00G00 (Lugar), NP00O00 (Organización), NP00V00 (Miscelánea).
  • COREF (parámetro coref) etiqueta as distintas entidades nomeadas do texto (identificadas por NER e NEC) cun identificador numérico que representa a entidade discursiva á que se refiren (p. ex., «Bob Marley NP00SP0 (1)», «Jimi Hendrix NP00SP0 (2)», «Marley NP00SP0 (1)», «Hendrix NP00SP0 (2)», etc.). COREF permite a opción -crnec (experimental), que volve etiquetar algunhas entidades nomeadas baseándose nos resultados da análise de correferencias. Teña en conta que os módulos COREF poden ralentizar a execución do sistema ao analizar textos longos. Lembre tamén que COREF se aplica documento a documento, polo que non se recomenda executalo nun corpus grande que conteña varios documentos.
  • Extracción de expresións multipalabra (parámetro mwe): Extrae expresións multipalabra de texto etiquetado con PoS. Hai varios parámetros opcionais, cada un deles correspondente a unha medida de asociación léxica específica para ordenar os termos candidatos: chi cadrado (-chi, por defecto), loglikelihood (-log), información mutua (-mi), probabilidade condicional simétrica (-scp), coocorrencias simples (-cooc).
  • Extracción de palabras clave (parámetro key): Extrae palabras clave (lexemas e nomes propios) de texto etiquetado con PoS e ordénaas usando un corpus de referencia e chi cadrado.
  • Análise de sentimentos (parámetro sent): Devolve POSITIVE, NONE (neutral) ou NEGATIVE, usando un léxico de polaridade e un clasificador adestrado con chíos anotados. Dado un texto de entrada, este módulo devolve un valor de polaridade para cada parágrafo; é dicir, devolve tres columnas por cada parágrafo: o texto na primeira columna, a polaridade (pos, neg, none) na segunda columna e a puntuación de polaridade (de 0 a 1) na terceira columna. A última liña da saída devolve a puntuación global, calculada como a media de todos os parágrafos.
  • Extracción de relacións (parámetro rel): Devolve triplas SUXEITO - RELACIÓN - OBXECTO usando métodos baseados na extracción aberta de información.
  • Recoñecemento de linguas (parámetro recog): Devolve a lingua do texto de entrada: en, es, pt, gl, gz (variedade agal do galego), fr, eu, ca, bn (bengalí), ur (urdú), hi (hindi), ta (támil). Este módulo tamén o usan outros módulos para recoñecer a lingua antes do procesamento (só para as linguas compatibles: pt, en, es, gl).
  • Tokenizador (parámetro tok): Devolve un texto tokenizado. O parámetro -split separa as contraccións de palabras e os clíticos verbais. O parámetro -sort ordena os tokens por frecuencia.
  • Segmentación de oracións (parámetro seg): Devolve unha oración por liña. A segmentación de oracións consiste en dividir unha cadea de linguaxe escrita nas oracións que a compoñen.
  • Lematización (parámetro lem): Devolve todos os lemas de cada token e toda a información morfolóxica (etiquetas PoS) asociada a cada lema. Este é o proceso que se executa antes da desambiguación da etiquetaxe PoS.
  • Palabra clave en contexto (parámetro kwic): Devolve unha palabra obxectivo en contexto (ventá: 10 tokens). A opción -tokens devolve os tokens como contexto. Este módulo require que se indique a palabra clave que se vai buscar como argumento adicional.
  • Ligazón de entidades (parámetro link): Devolve unha lista de termos que representan entidades da Wikipedia. Ademais, o texto de entrada anótase con eses termos e as súas ligazóns á Wikipedia. Require conexión a Internet, xa que funciona mediante un servizo de API web. A saída pode estar en dous formatos: json (por defecto) e xml.
  • Resumidor (parámetro sum): Devolve un resumo do texto de entrada. Pódese escoller a porcentaxe do texto que se resumirá usando como opción un número do 1 ao 100. O código foi desenvolvido por Fernando Blanco Dosil cando traballaba en Cilenis Language Technology.
  • Conxugador (parámetro conj): Devolve a flexión verbal se se introduce a forma de infinitivo. Teña en conta que a entrada non é un ficheiro, senón unha cadea, o verbo en infinitivo, e que o módulo debe usarse así: ./linguakit conj pt "fazer" -s -pb. O módulo funciona en tres linguas: galego, español e portugués. No caso dos verbos portugueses, pódese escoller entre 4 variedades lingüísticas: portugués europeo posterior ao acordo ortográfico (-pe), portugués brasileiro posterior ao acordo ortográfico (-pb), portugués europeo anterior ao acordo ortográfico (-pen), portugués brasileiro anterior ao acordo ortográfico (-pbn). A saída está en formato json. Este módulo require conexión a Internet, xa que funciona mediante unha API web.
  • Corrector lingüístico (parámetro aval): Devolve os erros lingüísticos atopados na oración de entrada. Considéranse varios tipos de erros: problemas ortográficos, léxicos e gramaticais. Tamén se ofrecen suxestións de corrección e unha explicación lingüística para cada tipo específico de erro. Require conexión a Internet, xa que funciona mediante un servizo de API web. A saída pode estar en dous formatos: json (por defecto) e xml. Polo momento, só está dispoñible para a lingua galega (gl).

Usando Make (debe instalarse nun directorio bin accesible):

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

Grazas a José João Almeida (Univ. do Minho) polo ficheiro Make.

Como todos os módulos se actualizan regularmente, é mellor usar git para instalar e actualizar o sistema.

O 22 de xuño de 2017, César Piñeiro publicou unha nova versión máis eficiente de LinguaKit (tamén para Windows: comando linguakit.bat).