Experimentando co NLTK en Debian
Xoves, Novembro 11th, 2004Para algúns pode ser unha chorrada, pero eu tiven que buscalo por Internet. Decidín instalar o Natural Language Tool Kit na Debian que teño no iBook. O caso é que baixei o código fonte e ao tentar executar o programa de instalación, non funcionaba porque lle faltaba un módulo, en concreto, o Distutils, que é o módulo que se emprega como estándar para instalar librerías de Python. O módulo Distutils do Python non o tiña instalado porque só tiña instalado o paquete python-base da Debian, e o módulo Distutils está dentro do paquete de Debian python-dev. O primeiro que pensei foi que os que levan os paquetes de Debian se pasaran un pouco, pero polo visto cada distribución fai o mesmo tipo de separación, deixando o módulo Distutils sempre fóra da instalación básica de Python.
Xa probei a demo do parser recursivo descencente (o rdparser.py). É unha pasada, un pode ir mirando paso a paso como fai o parseado da frase de exemplo, coa visualización gráfica en árbore.
Polo que levo lido, o NLTK é unha pequena marabilla para os que queiran facer algún traballiño de procesamento da linguaxe natural. De momento xa me mirei a documentación referente ao tokenizador e aos etiquetadores. Velaí un resumo:
- o “tokenizador”: para partir o texto en palabras, funciona con expresións regulares e un pode definir as súas propias.
- os etiquetadores:
- un que pon unha etiqueta por defecto a cada token;
- outro baseado en expresións regulares que pode definir un mesmo;
- etiquetadores de unigrama, bigrama ou n-gramas: estes necesitan un corpus de adestramento para funcionar, colocan as etiquetas cando atopan uni, bi ou n-gramas aprendidos do corpus de adestramento.
- etiquetador Brill: este tamén necesita un corpus de adestramento, polo que entendín, vai poñendo etiquetas e comparando cos datos que ten do corpus de adestramento para corrixir posibles erros que cometera previamente.
Unha das cousas que me encanta é que o NLTK soporta ademais a combinación dos etiquetadores, de tal xeito que un pode implementar un programa (na documentación poñen o código dun exemplo) que etiquete o corpus con varios etiquetadores e despois ver unha estatística da precisión de cada un deles. Marabillado estou co NLTK, e iso que aínda non mirei cómo funciona o chunk parser nin o clasificador nin o resto de módulos que ten (por ter, ten ata módulos para traballar con modelos ocultos de Markov).