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 ficheiroparsers. 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-splitsepara as contraccións de palabras e os clíticos verbais. O parámetro-sortordena 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-tokensdevolve 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) exml.
- 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) exml. 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).