Prototipado Rápido de un Sistema de Normalización de Tuits: Una Aproximación Léxica∗ Rapid prototyping of a Tweet Normalization System: A Lexical Approach Jesús Vilares y Miguel A. Alonso y David Vilares Departamento de Computación, Universidade da Coruña Campus de Elviña s/n, 15071 – A Coruña {jesus.vilares, miguel.alonso, david.vilares}@udc.es – www.grupolys.org Resumen: Este trabajo describe el sistema de normalización de tuits en español desarrollado por el Grupo de Lengua Y Sociedad de la Información (LYS) de la Universidade da Coruña para el Tweet-Norm 2013. Se trata de un sistema concep- tualmente sencillo y flexible que emplea pocos recursos y que aborda el problema desde un punto de vista léxico. Palabras clave: Twitter en español; normalización de tuits; variación léxica; pro- cesamiento léxico; arquitectura en pipeline Abstract: This work describes the system for the normalization of tweets in Spanish designed by the Language in the Information Society (LYS) Group of the University of A Coruña for Tweet-Norm 2013. It is a conceptually simple and flexible system, which uses few resources and that faces the problem from a lexical point of view. Keywords: Twitter in Spanish; tweet normalization; lexical variation; lexical pro- cessing; pipeline architecture 1. Introducción y objetivos ficultan. Una solución es transformar dicho texto a lenguaje estándar, es decir, normali- El uso del lenguaje en microtextos como los zarlo. Si bien existen precedentes para otros de Twitter y los SMS, denominado texting, se idiomas (predominando el inglés) (Xue, Yin, aleja mucho del estándar (López Rúa, 2007; y Davison, 2011; Costa-Jussà y Banchs, 2013; Oliva et al., 2013): empleo de ciertas conven- Beaufort, 2011; Han, Cook, y Baldwin, 2013; ciones en la comunicación (p.ej. usar emoti- Liu, Weng, y Jiang, 2012), apenas existen tra- conos para mostrar emociones), ignorar la or- bajos para el español (Oliva et al., 2013). Se tografı́a (p.ej. falta de tildes, intercambio de trata, además, de propuestas complejas, fru- consonantes homófonas como b/v o c/q/k, to de un largo desarrollo. En contraste, para etc.), ajustar el mensaje a la longitud máxi- nuestra participación en Tweet-Norm hemos ma permitida (p.ej. 140 letras en un tuit) me- optado por una propuesta sencilla aunque fle- diante acortamientos, contracciones, trans- xible, que emplease pocos recursos. Nuestro formaciones, etc. Hablaremos entonces de va- objetivo no ha sido tanto buscar un alto ren- riantes léxicas para referirnos a los términos dimiento como mostrar hasta dónde es posi- resultantes (Han, Cook, y Baldwin, 2013), ble avanzar empleando técnicas sencillas. siendo tales fenómenos, mayormente de ba- La estructura del artı́culo es como sigue. se fonética, especı́ficos del idioma. Trabajos La Sección 2 aborda la arquitectura del sis- como los de Thurlow (2003) para el inglés y tema, su funcionamiento y los recursos em- López Rúa (2007) para el español describen pleados. La Sección 3 detalla los resultados su fenomenologı́a particular. obtenidos. Finalmente, la Sección 4 presenta Asimismo, aplicar técnicas de Procesa- nuestras conclusiones y trabajo futuro. miento del Lenguaje Natural a los millones de tuits generados a diario serı́a de gran in- 2. Arquitectura y recursos terés para la inteligencia empresarial, pero las Buscando simplicidad y flexibilidad, optamos alteraciones del lenguaje antes descritas lo di- por una arquitectura en pipeline que nos per- ∗ mitı́a integrar, eliminar e intercambiar módu- Trabajo parcialmente subvencionado por el Minis- terio de Economı́a y Competitividad y FEDER (pro- los de forma sencilla. Dichos módulos se co- yecto TIN2010-18552-C03-02) y por la Xunta de Ga- munican empleando un formato de represen- licia (ayudas CN 2012/008 y CN 2012/319). tación intermedia codificado como texto y de (a) (b) naturaleza estructurada y jerarquizada. En este esquema un tuit está formado por térmi- tuits tuits nos y para cada término existe una serie de candidatos para su normalización. Twokenize [ARK Tools] Dado que la tarea de normalización con- siste en etiquetar una palabra fuera-de- BÚSQUEDA EN analyze [Freeling] vocabulario (OOV, out-of-vocabulary word) DICCIONARIOS como correcta o bien proponer su forma (Aspell & ad-hoc) correcta, dicha tarea puede verse como un RECONOCIMIENTO proceso en dos fases. Primero, identificar DE ENTIDADES (diccionarios ad-hoc) las palabras dentro-del-vocabulario (IV, in- no implementada Diccionario SMS vocabulary word) del tuit, y ası́ saber cuáles son las OOVs. Segundo, proponer la forma PROCESA. RISAS correcta de las OOVs detectadas, lo que a su vez implica: (a) identificar si se trata de una GENERACIÓN DE CANDIDATOS palabra correcta pero desconocida (que de- REPETICIONES nominaremos OOVs propias) o bien de una IDENTIFICACIÓN DE VARIANTES LÉXICAS variante léxica; (b) en este último caso, ob- Y NORMALIZACIÓN DIACRÍTICOS no implementada tener su forma estándar normalizada. ERRS. ORTOGRÁFICOS Esto nos llevó a plantear la arquitectura general del sistema en tres etapas: (1) los SELEC. CANDIDATOS tuits se tokenizan y preprocesan; (2) identifi- camos las IVs en base al vocabulario del siste- tuits tuits normalizados normalizados ma, obteniendo el conjunto inicial de OOVs; (3) clasificamos las OOVs en propias y va- riantes léxicas, y proponemos para éstas su Figura 1: Arquitectura del sistema: (a) forma estándar normalizada, aplicando para planteada inicialmente; (b) implementada ello una serie de procesos de normalización sobre el conjunto inicial de OOVs, obtenien- do ası́ sus normalizaciones candidatas para luego elegir la más adecuada. Otras opciones barajadas fueron el Sobre esa arquitectura general se plantea- tokenizador genérico del corpus Euro- ron dos versiones del sistema (véase Figu- parl (Koehn, 2005), ası́ como otros diccio- ra 1), las cuales describimos a continuación. narios del español a los que tenı́amos acceso: el del AnCora (Taulé, Martı́, y Recasens, 2.1. Planteamiento inicial 2008), el del proyecto ERIAL (Barcala et En un principio el sistema se concibió en al., 2002) y el MULTEXT (Véronis, 1999). torno a dos herramientas: el preprocesa- Sin embargo elegimos aquéllos por su libre dor multilingüe Twokenize (Owoputi et al., disponibilidad, lo que facilita la replicabili- 2013), diseñado para tokenizar tuits ası́ co- dad de los experimentos, ası́ como por sus mo identificar ciertas entidades de interés ta- buenas prestaciones. Asimismo, tras detectar les como cifras, emoticonos, URLs, etc.; y la ciertas carencias del diccionario de Aspell herramienta de corrección ortográfica GNU para ciertos tipos de palabras frecuentes Aspell1 (rel. 0.60) junto con su diccionario. en este tipo de textos (jerga del dominio, Debemos señalar que si bien el mecanismo de interjecciones, onomatopeyas, etc.), nos búsqueda de correcciones de Aspell combi- preparamos para ampliar el vocabulario del na una búsqueda por distancia de edición con sistema empleando una serie de diccionarios una búsqueda fonética basada en el algoritmo y gazetteers ad-hoc creados a partir de del metáfono (Philips, 1990), en el caso del es- diversas fuentes web libremente disponibles pañol ésta última no está disponible. Como y de nuestra propia experiencia. También muestra la parte izquierda de la Figura 1, am- se habı́a previsto realizar un proceso de bas herramientas nos permitirı́an abordar de reconocimiento de entidades en base a los forma sencilla las fases de preprocesamiento gazetteers antes referidos. e identificación de OOVs. Finalmente, en la tercera fase del proceso 1 http://aspell.net clasificarı́amos y normalizarı́amos las OOVs. 2.2. Sistema final datos. Aunque no lo parezca, implı́citamente Sin embargo, tal arquitectura no fue la que fi- se está realizando la mencionada clasificación nalmente se implementó, siendo ésta la que se de las OOVs en OOVs propias, aquéllas nor- muestra en la parte derecha de la Figura 1. malizadas a ellas mismas por no tener candi- La razón fue que, por un error de interpre- datos mejores, y en variantes léxicas, aquéllas tación, creı́mos que no se permitı́a emplear que cuentan con otros candidatos mejores y el mismo tipo de preprocesamiento llevado a que son normalizadas a dichos términos. cabo por la organización para la creación del 2.3. Mecanismos de variación corpus de entrenamiento y que empleaba la herramienta analyze de Freeling (Padró y Actualmente consideramos únicamente tres Stanilovsky, 2012).2 Fue después, con el siste- posibles fuentes de variación, que son aborda- ma ya en un estado avanzado de implementa- das desde una perspectiva léxica para ası́ li- ción, cuando nos percatamos del error. Deci- mitar la complejidad del sistema. dimos entonces cambiar a analyze para una En primer lugar, la repetición de caracte- mejor comparabilidad de nuestros resultados res. Si una OOV contiene dos o más letras con los del resto de participantes, que supusi- iguales seguidas podrı́a ser una variante de mos emplearı́an mayormente Freeling. Esto este tipo (p.ej. besooos vs. besos). Las nor- supuso un nuevo retraso que, dado lo ajusta- malizaciones consideradas serán, por orden: do de los plazos, hizo que entre otras cosas la palabra sin repeticiones, con repeticiones no pudiéramos integrar el reconocedor de en- de máximo longitud dos, y las palabras re- tidades previsto. Por contra, la fase de iden- sultantes de eliminar todas sus repeticiones tificación de OOVs se simplificó bastante res- excepto una, reducida a longitud dos.4 pecto a la planteada inicialmente, de tal for- A continuación, los errores en los diacrı́ti- ma que el único diccionario empleado, aparte cos. Cualquier OOV con vocales podrı́a ser del de Freeling, fue uno de jerga SMS.3 una variante de este tipo (p.ej. camion vs. Llegados a este punto, con el conjunto ini- camión). Se eliminan sus diacrı́ticos (de te- cial de OOVs identificado, se pasa a la fase de nerlos) y se comprueba si el término resul- normalización. Primero se detectan y norma- tante es una IV. Si lo es, se toma como úni- lizan las onomatopeyas de risas (p.ej. jajaa) co candidato. En los otros casos se gene- usando patrones. Seguidamente se generan, ran con Aspell sus correcciones candidatas,5 de forma acumulativa, posibles normalizacio- quedándonos sólo con aquéllas que difieren nes para las OOVs remanentes en base a los únicamente en los diacrı́ticos. mecanismos de variación considerados, que Finalmente, otros errores ortográficos. describimos en la Sección 2.3. Dicho proce- Cualquier OOV podrı́a ser una forma mal so es iterativo y se recoge en el Algoritmo 1. escrita de otra palabra (p.ej. palabar vs. Usar una cola de prioridad (Qgen ) como palabra). Los candidatos serán las correccio- estructura de almacenamiento nos permite nes devueltas por Aspell. primar los candidatos según sean o no IVs, Asimismo se intentó incorporar, sin éxito, lo complejo de su generación, y lo frecuen- un cuarto mecanismo de normalización basa- te y factible del mecanismo de variación. Es do en búsqueda fonética empleando el algorit- más fácil, por ejemplo, que una OOV sea mo del metáfono (Philips, 1990), el cual, co- una variante por repetición de vocales que mo se indicaba en la Sección 2.1, no está dis- lo sea por repetición de vocales, eliminación ponible para el español en Aspell. Para ello de diacrı́ticos y errores ortográficos todo a la creamos un ı́ndice invertido del vocabulario vez. De este modo el supuesto mejor candi- en base a sus transcripciones fonéticas usan- dato será siempre el primero. do una adaptación al español del algorit- Finalmente, una vez generados las posibles mo (Mosquera, 2011). A la hora de la búsque- normalizaciones de cada OOV, éstas son nor- da dicha transcripción se combinaba con un malizadas al primero, y mejor, de sus candi- algoritmo de correspondencia vocálica pues las vocales eran obviadas por el algoritmo. 2 Ficheros de configuración en http://devel.cpl. 4 upc.edu/freeling/svn/trunk/src/main/twitter/. Asimismo, se priorizan las repeticiones de cier- 3 Descubrimos después que, por algún error, el tas letras en base a su naturaleza y frecuencia en el volcado del diccionario contenı́a únicamente entra- diccionario. Por orden: e, o, r, l, c y n. 5 das hasta la K, mientras que su web (http://www. Se emplean siempre simultáneamente los sugges- diccionariosms.com) parece haber sido ya cerrada. tion modes ultra y normal de Aspell. Algoritmo 1 Generación de normalizaciones candidatas. Entrada: toov : término OOV a normalizar. gi (): función generadora de normalizaciones candidatas para el fenómeno vi , donde V = (v1 , . . . , vN ) son los fenómenos de variación abordados, ordenados por precedencia y frecuencia. apli (): función booleana que detecta si un término podrı́a ser una variante léxica de tipo vi . Salida: Qgen : lista de candidatos para la normalización. Actúa a modo de cola de prioridad donde los candidatos han sido almacenados por orden de inserción priorizando aquéllos que son IVs sobre los OOVs. De este modo los candidatos IVs se situarán en la parte anterior de la cola y los OOVs en la posterior, y a su vez, dentro de cada clase, los candidatos estarán por orden de creación, habiendo sido generados de forma acumulativa aplicando los diferentes mecanismos de normalización asociados a V. En resumen: primero, los candidatos IVs generados a partir de toov empleando g1 ; luego los generados empleando g2 ; los generados aplicando, secuencialmente, g1 y g2 ; los generados con g1 y g3 ; con g2 y g3 ; con g1 , g2 y g3 ; etc.; y a continuación lo mismo para los candidatos OOVs, con el propio toov en primer lugar. 1: function generar candidatos (toov , hgi , apli ivi ∈V ) 2: Qgen ← (toov ) (* Inicializamos la lista de candidatos al propio toov . *) 3: for all vi ∈ V do (* Para cada fenómeno de variación vi a tratar . . . *) 4: Qaux ← Qgen (*. . . tomamos los candidatos generados hasta entonces . . .*) 5: for all tj ∈ Qaux do (*. . . y para cada uno de dichos candidatos tj . . .*) 6: if (apli (tj ) = true) then (*. . . comprobamos si podrı́a ser una variante de tipo vi . Si lo es . . .*) 7: C ← gi (tj ) (*. . . generamos sus normalizaciones candidatas para ese fenómeno. . .*) 8: for all ck ∈ C do (*. . . y para cada posible normalización ck . . .*) 9: if ck ∈ Q then (*. . . comprobamos si ya habı́a sido generada antes: . . .*) 10: actualizar(Qgen , ck , vi ) (*. . . de ser ası́, actualizamos el conjunto de operaciones por las que dicho candidato ck es generado . . .*) 11: else 12: encolar(Qgen , ck , vi ) (*. . . sino, encolamos el nuevo candidato. *) 13: end if 14: end for 15: end if 16: end for 17: end for 18: return Qgen (* Una vez tratados todos los fenómenos, devolvemos los candidatos obtenidos. *) 19: end function corpus dev100 dev500 test600 como con el script PHP final (accuphp ). base norm base norm base norm Su rendimiento, del 33-34 %, nos sitúa a la cola de los participantes, si bien muy cerca err 8 8 46 46 134 134 de otros, por lo que dada la simplicidad de pos 3 41 62 224 47 219 neg 85 47 406 244 448 276 nuestra aproximación y los pocos fenómenos accupy 2.46 33.61 9.49 34.30 7.10 33.08 de variación tratados, no es un mal resultado. accuphp – – – – 7.10 33.53 4. Conclusiones y trabajo futuro Ésta ha sido nuestra primera incursión for- Cuadro 1: Resultados obtenidos. mal en la normalización de tuits en español. Se trata de un sistema sencillo, que opera a 3. Evaluación nivel léxico usando pocos recursos, y que tie- Por limitaciones de tiempo sólo tenemos dos ne una arquitectura en pipeline que lo hace tipos de runs: (a) un baseline sin normalizar muy flexible. Su rendimiento ha sido satisfac- que toma directamente la salida de analyze torio a pesar de su simplicidad. (base); y (b) el resultado del proceso de nor- En el futuro, además de abordar el resto malización descrito anteriormente (norm). de fuentes de variación más comunes, preten- Los resultados obtenidos se muestran en el demos incluir diversas mejoras: un formato Cuadro 1, indicando: el número de errores de representación intermedia entre módulos de alineamiento (err ), el número de OOVs en XML; integrar un detector del idioma y normalizadas de forma correcta (pos) e inco- un reconocedor de entidades; emplear pun- rrecta (neg), y el accuracy, tanto el calculado tuaciones; y usar información contextual pa- mediante el script Python inicial (accupy ) ra mejorar el filtrado de candidatos. Bibliografı́a Owoputi, O., B. O’Connor, C. Dyer, K. Gim- Barcala, F. M., E. M. Domı́nguez, M. A. pel, N. Schneider, y N. A. Smith. 2013. Alonso, D. Cabrero, J. Graña, J. Vilares, Improved part-of-speech tagging for on- M. Vilares, G. Rojo, M. P. Santalla, y S. line conversational text with word clus- Sotelo. 2002. Una aplicación de RI basa- ters. En Proc. of the 2013 Conference of da en PLN: el proyecto ERIAL. En Actas the North American Chapter of the As- de las I Jornadas de Tratamiento y Recu- sociation for Computational Linguistics: peración de Información (JOTRI 2002), Human Language Technologies (NAACL- págs. 165–172. HLT 2013), págs. 380–390. ACL. Toolkit disponible en http://www.ark.cs.cmu. Beaufort, R. 2011. From SMS gathering edu/TweetNLP/. to SMS normalization: finite-state algo- Padró, L. y E. Stanilovsky. 2012. Free- rithms. TCTS Lab’s seminars, University ling 3.0: Towards wider multilingua- of Mons. Disponible en http://cental. lity. En Proc. of the 8th Int. Conferen- fltr.ucl.ac.be/team/beaufort/file/ ce on Language Resources and Evaluation TCTS2011_beaufort.pdf. (LREC’12). ELRA. Toolkit disponible en Costa-Jussà, M. R. y R. E. Banchs. 2013. http://nlp.lsi.upc.edu/freeling/. Automatic normalization of short texts by Philips, L. 1990. Hanging on the metaphone. combining statistical and rule-based tech- Computer Language, 7(12):39–43. niques. Language Resources and Evalua- tion, 47(1):179–193. Taulé, M., M. A. Martı́, y M. Recasens. 2008. AnCora: Multilevel annotated corpora Han, B., P. Cook, y T. Baldwin. 2013. Le- for Catalan and Spanish. En Proc. of the xical normalization for social media text. 6th Int. Conference on Language Resour- ACM Transactions on Intelligent Systems ces and Evaluation (LREC’08). ELRA. and Technology (TIST), 4(1). Thurlow, C. 2003. Generation Txt? the Koehn, P. 2005. Europarl: A Parallel Cor- sociolinguistics of young people’s text- pus for Statistical Machine Translation. messaging. Discourse Analysis Online, En Proc. of the 10th Machine Transla- 1(1). tion Summit (MT Summit X), págs. 79– Véronis, J. 1999. MULTEXT-corpora. An 86. Corpus disponible en http://www. annotated corpus for five European lan- statmt.org/europarl/. guages. CD-ROM. Distribido por EL- Liu, F., F. Weng, y X. Jiang. 2012. A RA/ELDA. broad-coverage normalization system for Xue, Z., D. Yin, y B. D. Davison. 2011. Nor- social media language. En Proc. of the malizing microtext. En Analyzing Micro- 50th Annual Meeting of the Association text, Papers from the 2011 AAAI Works- for Computational Linguistics (ACL’12): hop, vol. WS-11-05 de AAAI Workshops. Long Papers - Vol. 1, págs. 1035–1044. AAAI. ACL. López Rúa, P. 2007. Teaching L2 vocabu- lary through SMS language: Some didactic guidelines. Estudios de lingüı́stica inglesa aplicada, 7:165–188. Mosquera, A. 2011. The Spanish metaphone algorithm (Algoritmo del metáfono para el español). Código disponible en https:// github.com/amsqr/Spanish-Metaphone. Oliva, J., J. I. Serrano, M. D. del Castillo, y A. Iglesias. 2013. A SMS normalization system integrating multiple grammatical resources. Natural Language Engineering, 19(1):121–141.