You are on page 1of 4

¿Que es Procesamiento de Texto Natural?

Un relato coloquial y crudo de mi comienzo en estas ciencias..

by Andrés Hohendahl as of 2nd Qtr. 2010

Hace unos años.. (por el 2005) por innumerables señales del mercado y razones que deduje, decidí
desarrollar (en realidad intentar) un sistema de conversación hombre-máquina, inicialmente usable por
SMS en castellano y puse manos a la obra…(no sabía en lo que me había metido!)

La primer Desilusión
Estudié el tema un poco más por lo que me puse a tratar de conseguir un diccionario español..
Lo cual me resultó bastante difícil (en especial por el tema disponibilidad y licencias).
Los diccionarios que conseguí en la WEB gratis eran espantosos, por su pobre cobertura de palabras y
mala calidad, ni hablar que decían poco y nada de las palabras halladas (eran básicamente para
corrección ortográfica spell-correct) Luego me tomé con los oficiales Espasa, Encarta, Salvat, Larousse,
María Moliner, (Locademias de letras) como Academia Argentina de Letras, y los más serios tipo DRAE:
Real Academia Española.

Todo ellos tienen definiciones no-normalizadas, es decir entras con una palabra y... si tenés suerte.. salís
con un montón de palabras... abreviaturas propias, en un orden poco ortodoxo, pero en general no tenés
la más reputa idea de que es cada una, eso si las metes en una base de datos y las buscas como
resultado… genial.. pero si las volvés a buscar a todas, obtenés otro montón de palabras más grande aún
(un puñado por cada palabra buscada.. y así) pero para obtener algo útil para procesar, eso… es otro
cantar. Para colmo de estos diccionarios, no hay versiones para desarrolladores, tampoco te dan la base
de datos ni por casualidad! Traté de contactar la RAE, la de Argentina y casi todas las editoriales de
diccionarios como Larousse y no me dieron respuesta alguna, en ningún sitio!

Ah! y los investigadores de las universidades… ellos tienen (en países mas avanzados como en Europa o
USA) muchos recursos y acceso a diccionarios piolas (no sé como los consiguen) aunque nunca salen de
ese ambiente, pero la mayoría prueban sus algoritmos sobre un ‘set’ o conjunto de pruebas que ellos
mismos arman, por lo general acotados; los cuales son geniales para sus desafíos, pero no sirven de
nada para un sistema real que interactúe con la gente común.

Entrando en tema más profundamente, descubrí que aquellos diccionarios convencionales, por más que
pueda transcribirlos, además no sirven de mucho, pues solamente tienen en su gran mayoría las palabras
raíz (llamado lema). Es decir verbos están en infinitivo (amar/correr/decir) y los sustantivos y adjetivos en
singular y masculino (salvo vaca). No contienen conjugaciones, peyorativos, diminutivos, aumentativos y
demás accidentes morfológicos, ni hablar de raíces morfológicas o derivación.

Eso es muy malo (pensé) en otras palabras ‘no te sirve un diccionario por más que lo consigas o lo
armes’. Además la tarea megalómana de armar un diccionario con los verbos conjugados es monumental,
por no decir imposible para una pequeña organización (son mas de 200.000 horas-lexicógrafo), para que
lo puedas evaluar simplemente, estos son los datos: 35.000 verbos x 2 géneros x 3 personas (yo-tu-el) x
2 plural/singular x 6 tiempos (presente /pasado / indicativo / subjuntivo / pretéritos / gerundios / participios
/ participios activos) eso da como 70 variaciones (en realidad son 116 agregando los tiempos
compuestos).

Si fuese fácil genial! lo hago a mano.. pero hete aquí las malas noticias: los verbos españoles tienen mas
de 49 maneras diferentes de conjugarse! (según Larousse), y NADIE te dice a cual manera pertenece
cada verbo de los 30 mil y pico mas comunes. Encima casi el 30% son irregulares. (ni el diccionario de
verbos y conjugaciones de Larousse cubre al de la Real Academia) . A eso hay que pensar lo siguiente :
por cada verbo/ sustantivo/ adjetivo/ adverbio hay variaciones por prefijos: de- pre- auto- ante- post- in- (y
muchos mas,,, suman mas de 900 en general) es decir: 900 x 35.000 x 70 es un número muy pero muy
grande.

Resumiendo un diccionario con capacidad morfológica debe poder reconocer al menos 2-5 millones de
palabras, idealmente deberían ser como 30 millones basado en 50 a 80 mil raíces comunes. Ni hablar de
los que se pueden combinar como los de medicina ciencias duras y naturales como biología y botánica,
Para satisfacer curiosos con 300 millones cubrimos el 99% de palabras comunes, y con 3.000 millones
podríamos cubrir una gran mayoría de las palabras inventadas.

Eso es monumental hacerlo uno mismo y encima eficientemente, me pregunto: ¿se puede comprar
hecho..? genial! ¿dónde? (en Ecuador y/o Finlandia) en donde saben menos Español que nosotros y
estimo lo armaron automáticamente por traducción (CONEXXOR). La licencia? ah! (pequeño detalle) es
por cliente/usuario/tipo-de-aplicación/servidor/etc. (mas compleja que las de Microsoft) y bastante caras
por cierto (7000 euros para arriba, hasta 50.000 euros anuales para una licencia "open" para usar con
celulares y algunos Millones de usuarios en un solo país, que era mi caso) Les pedí una licencia de
DEMO (Académica por la UBA) para probar el producto, estaba entusiasmado… pero paf! un desastre!
Una librería gigante tipo DLL en windows, de 12 megas, complicada de instalar, no ampliable, tarda un
huevo en cargar, es leeeeeenta y le pifia a muchas de las palabras mas comunes del español
rioplatense!, no tiene listado ni detalle de contenidos y alcances, no es customizable, las etiquetas que te
entrega las conoce Mandrake! (no están normalizadas, salvo por ellos) y la documentación es horrorosa...
mente pobre y confusa, en resumidas: es una “CAJA NEGRA” bastante cara y sin muchas garantías.

Esto, sumando al precio me decidió ponerme a estudiar el tema y buscar soluciones viables..
No fué sencillo y decidí volver a mi época de las cruzadas... como investigador de la UBA y
Conicet, me fui a la UBA, consulté a mis antiguos compañeras (hoy docentes) pues yo fui
investigador como por 10 años, ostento el premio nacional de electrónica del 1985.

Me re-inscribí en la UBA, y cursé + aprobé 10 materias optativas y algunas para doctorado, para
actualizarme luego de 20 años de no pisar la UBA, y de paso completar los créditos para poder presentar
una tesis y hacer un doctorado en ingeniería (a pedido de mis compañeros y el público). Luego de 6
meses de cursar entre Exactas y la UBA + haciendo contactos con todo el mundo académico... me
encontré este panorama: no hay (al menos entre 2006 y 2009) un carajo de nadie que sepa suficiente de
esto en Argentina (al menos no los pude hallar) y menos que esté dispuesto a compartir conocimiento y/o
trabajo, hay unos pocos en España, México y casi nadie en USA (con todas las universidades de reputa-
madre como: Harvard, MIT, UCSD, UPENN, CMU, etc.) Eso si en inglés tienen algo más (tampoco gratis
ni potable)

¡Que panorama! Ante esto.. la única solución era hacerlo yo… o dedicarme a otra cosa!

Y como no me suelo dejar vencer… Puse manos a la obra.. me replegué, invertí tiempo, leí, consulté a
lingüistas, estudié lingüística.. trabajé mucho y desarrollé (inventé) algunas cosas nuevas.

Consulté con Expertos, Lluis Padró en España me sugirió publicar mis hallazgos, así lo hice para cuando
me parecieron potables. Finalmente publiqué algunas para someterlas a juicio académico y/o criterio del
estado del arte.. y me las aceptaron en algunos congresos medio pelo pero internacionales (CACIC 2006)
y otros. Luego presenté más papers (WICC 2006) y me fui armando de un paquete de utilidades para el
español e inglés, que hoy me permite decir que debo tener uno de los únicos lematizadores EFICIENTES
y POTABLES (léase diccionarios que pueden reconocer palabras como plurales, diminutivos, verbos
conjugados y demás cambios usuales) (con código fuente en C# de autoría propia) capaces de atacar
problemas tan complejos como lo es el castellano de hoy... además con éxito. Luego y como me gustó…
fui por más!

Hice con el lematizador y una lista de traducciones de palabras base (recopiladas de múltiples
diccionarios), el primer diccionario-traductor con capacidad de reconocer verbos conjugados, palabras en
plural, diminutivo y demás. Lo puse a funcionar para ser usado por un celular con SMS y se lo ofrecí al
estado Argentino (Ministerio de Educación) ¿El resultado? Era de esperarse: no les interesa aportar a la
cultura nacional (a ver si se avivan y no los votan mas)..

Pero como no me dejé vencer.. se lo ofrecí a un país al cual le interesa su cultura: Ecuador y se lo vendí a
MoviStar, allí está funcionando desde fines del 2005.

Con esta experiencia, luego de decenas de miles de consultas me topé de frente con miles de errores de
ortografía, mas bien horrores de ortografía!. Era de esperarse, pues cuando la gente consulta por SMS,
pone cualquier cosa.. un poco limitado por el sistema del teclado celular y otro poco porque no sabe
deletrear lo que le dijeron, recuerda u oyó, por lo cual pude ver decenas de de variantes de muchas
palabras comunes, inexistentes en todo diccionario, al igual que el argot del chat.. (eso es otro kilombo
mayúsculo, que abordaré en otro momento.)

Ud. quería decir…


Construí para esto un sistema de corrección de errores.. pero.. aquí aparecieron otras cuestiones no
simples ni fáciles de solucionar: ¿como decidir cual es la palabra correcta? Si tengo como 3 o 5 similares,
¿cual es el criterio? similitud... como ¿letras iguales? ¿por como suena? y ¿cómo era eso de las reglas de
ortografía?.. todo un dilema!.

Me suena que me dijo…


Investigué sobre similitud fonética, y no había nada en el horizonte científico sobre el tema, solo un pobre
algoritmo en desuso llamado Soundex y uno mas moderno llamado Metaphone (pero son índices
fonéticos y no miden similitud), para colmo andan para el inglés, más o menos bien, pero para el español..
¡bien gracias! Ni por puta! Y entonces.. decidí inventar uno: (como trabajé varios años en investigación
aplicado a fonoaudiología y fui co-autor del primer implante intra-coclear en 1982 en sudamérica) Decidí
crear una teoría nueva basada en el modelo fono-articulatorio humano.. lo armé y lo probamos con ayuda
de un par de doctores del IByME (Conicet)... con alrededor de 100 alumnos de la facultad.

El resultado? Una grata sorpresa! Más del 85% de coincidencia en la predicción del algoritmo respecto a
lo que piensa o percibe un humano de cuanto se parecen las palabras.. luego lo sometimos a escrutinio
académico y lo presentamos en el “X Congreso Latinoamericano de Neuro Psicología” (SLAN 2007) todo
una sensación, NADIE había hecho algo similar. Aparentemente fui uno de los primeros en el Mundo! (lo
cual no dice mucho, pero es una satisfacción al menos)

Ahora el kilombo es.. tengo el puñado de palabras, sé que quieren decir, tengo sus raíces, sus múltiples
funciones gramaticales y significados,.. ahora ¿cual de ellos es el que va en esta conversación? Eso te
lleva al tercer desafío:

LA DESAMBIGUACIÖN
No es tema fácil, en el mundo (estado del arte) lo hacen estadísticamente, con unos métodos bastante
complejos, se llaman POS-Taggers (Part Of Speech) (etiquetadores de partes de la oración) y usan
métodos entre HMM: Hidden Markov Models, SVM: Support Vector Machines, Maximum Entropy,
Simulated Anhealing, Relaxation Labelling, Neural Networks, etc. Todos estos algoritmos son geniales en
su tipo.. pero pocos de ellos con datos disponibles y adecuados para el castellano irrestricto y todos
necesitan un diccionario lematizador muy completo como mínimo.
1
Tampoco andan bien con habla espontánea1 . Hay que entrenarlos con un corpus inexistente y no logran
demasiado éxito (tienen un techo acotado).

Una vez que (supongamos) tenemos todo funcionando bien, sabemos que (por ejemplo):

"EL GATO COME CARNE HOY"


"artículo-sustantivo-verbo-sustantivo-adverbio"

Genial! Pero entonces


¿que cuernos hacemos con esto?
¿cuál palabra consigna a la persona que habla?
¿cuál es el sujeto, el predicado, el objeto directo, el circunstancial? ¿dónde están?..

Si, lamentablemente me recuerda eso tan HORRIBLE de castellano de la secundaria

Y por último los sentidos de cada significado: GATO se refiere a una persona con habilidades felinas, una
prostituta fina, un animal-felino o una sistema hidráulico de elevación?

A este tema se lo llama en la jerga: WSD (Word-Sense-Desambiguation) y hay bastante poco


que ande decentemente y sea robusto1.

Para WSD se usan algoritmos de Lesk y media docena de distancias con nombres raros (sus autores).

Luego hay que entender eso bajo un esquema de lenguaje (gramática española) eso de saber cual es
cada parte, se llama en espanglish: parseo (parsing), pero el drama es que esta gramática nuestra.. es
muy ambigua y compleja.

Los sistemas convencionales de parsing por lo general fallan en su etapa más temprana y teórica por la
ambigüedad, tamaño y recursividad de la gramática humana; sin siquiera poder abordar el problema
satisfactoriamente (Estos métodos se llaman: LR / LALR / LL(k) / CYK / Earley.. etc.) Hay un único tipo
que sirve un poco y es viable en espacio de memoria y tiempos, se llama GLR, pero tampoco hay mucho
hecho con esto.. y menos para el castellano y accesible fácilmente a cualquier mortal.

¿Qué dijo?
Luego.. y para poder entender que demonios dijo el usuario.. hay que hacer algo para entender lo que
quiso decir el usuario en español (Deep Understanding)… Ese tema está hoy abierto!

Y no hay mucho que funcione ni siquiera potablemente1, unos pocos con vocabularios muy acotados en
inglés, chino, ruso y alemán… pero como por supuesto… casi nada en Español.

1
* Cuando digo algo que funcione, hablo de algo útil y aplicable a la vida real.
No hablo de un “super-paper-académico” presentado en un congreso de reputa-madre que arrojó en un FScore del 82% y una curva
ROC muy bonita, con un grupo acotado de frases con un mini-diccionario con gramática ajustada inteligentemente al experimento para
que funcione genial.. de eso hay demasiado!
Y para contestar en forma coloquial?
Bueno podríamos poner todas las respuestas ya escritas, suponiendo que sabemos todo lo que nos van a
preguntar, pero como eso es imposible…ni permitiría que un sistema “elabore una respuesta” entonces
hay que poder elaborar una frase en base a conocimiento de algo:

Por ejemplo poder elegir un verbo, luego conjugarlo en el tiempo, modo, persona y número apropiados,
ponerle un artículo con el mismo género y número del sustantivo al cual afecta, elegir el adjetivo que le
corresponde, ponerlo en diminutivo con el género y número apropiado, poner el circunstancial.. y…
decirlo!

¿Qué Hice Entonces?


Los amigos me llaman Andy y los sistemas de diálogo se llaman Bots, entonces pensé en crear AndyBot,
un sistema para crear Bots. Junté todo lo hecho en una sola caja, le puse moño, cree un compilador de
lenguaje natural, una especie de pseudo-lenguaje que llamé AndyScript ¿no le suena?.

El sistema2 es programable como todo lenguaje de programación y ampliable, hoy puede imitar
burdamente un humano (aún es medio tonto a mi entender…), pero sigue diálogos ingeniosamente, no se
distrae, contesta cosas potables incluso ante puteadas o burradas, tiene buena memoria y también se
olvida algunas cosas... (hay un documento en desarrollo de ya 120 páginas que lo describe)

Estimo que en la medida que incorpore algoritmos mejores, que le ponga garra el moderador del diálogo,
el sistema va a parecer cada día mas útil e inteligente, ¿el límite? No lo sé! pero sin duda será interesante
descubrirlo!.

Preg.: ¿con qué se hace todo esto?


Rta.: con un montón de trabajo, horas-culo, ganas e ingenio.. y creo estar en el camino!

¡Bienvenidos al Fascinante Mundo del Procesamiento de Lenguaje Natural!

© 2010 - Andrés Hohendahl


1

2
Un sistema nuestro está andando desde el 14 de diciembre del 2009, imitando un asesor de turismo de
Uruguay por MSN, llamado Yorugua y ya charló con más de 18 mil usuarios únicos sosteniendo cientos
de miles de diálogos en castellano. Otro bot que creamos unos meses antes, imita un afilado chef de
cocina llamadoMaestro SAMAN y ya tuvo 8 millones de diálogos en 3 meses. Microsoft está usando uno
nuestro para asesorar el uso de MSN por celular usando SMS para Colombia.

You might also like