Descargar

Similitud entre cadenas y estandarización de direcciones postales


    1. Resumen
    2. Medidas de Semejanza entre Cadenas
    3. Medida de Levenshtein y Estandarización de Direcciones
    4. Conclusiones
    5. Bibliografía

    Resumen

    Existen diversas métricas para medir la distancia o similitud entre dos cadenas. De ellas son muy conocidas la "Distancia de Hamming" y la "Distancia Levenshtein". Esta última tiene múltiples aplicaciones sobre todo en los últimos años, debido al auge que han tomado los problemas de procesamiento de textos y del lenguaje natural. Como subconjunto de este problema y en el cual también existe aplicación de las medidas de semejanza entre cadenas, se encuentra el procesamiento de direcciones postales, el cual tiene vital importancia para las empresas cuya credibilidad y profesionalidad dependen altamente de la información de sus clientes.

    Palabras Clave: Distancia Levenshtein, Distancia Hamming, Semejanza entre cadenas, Estandarización de Direcciones.

    Introducción

    La distancia o medida de similitud entre dos cadenas es ampliamente utilizada para solucionar diversos problemas. Existen diferentes métricas de este tipo ya definidas como son la "Distancia de Hamming" [1] y la "Distancia Levenshtein" [1]. Esta última es usada frecuentemente en correctores ortográficos para sugerir palabras, almacenadas en un fichero o diccionario del sistema, que se asemejan a la detectada con problemas ortográficos según una medida de similitud entre cadenas.

    Esta misma idea puede ser útil en el procesamiento de direcciones postales que se quieren etiquetar o estandarizar para una mejor explotación de la información que en sí llevan.

    En este trabajo se ofrece una breve descripción de las medidas antes mencionadas a través de ejemplos, se mencionan sus posibles aplicaciones y más puntualmente la utilización de la distancia de Levenshtein durante el proceso de estandarización de direcciones postales que serán llevadas a un almacén de datos.

    Medidas de Semejanza entre Cadenas

    Es usual hablar de distancia o diferencias entre objetos, es por ello que no resulta extraño el término distancia o medida de similitud entre dos cadenas.

    Al hablar de distancia entre cadenas se estaría hablando de medir las diferencias que hay entre estas. Algunas de las diferencias interesantes podrían ser encontradas en las longitudes de las cadenas que se están comparando, o, en palabras de una misma longitud los cambios de unas letras por otras.

    Esta métrica ha sido utilizada en la solución de diversos problemas, sobre todo en los de procesamiento de textos o del lenguaje natural.

    Los procesadores de textos de última generación son capaces de sugerir posibles palabras que pueden servir de reemplazo para una palabra encontrada en un texto con errores ortográficos. Estos procesadores saben cómo evaluar la distancia entre una palabra mal escrita y palabras que ya se encuentran almacenadas en sus ficheros o diccionarios; aquellas palabras cuyas distancias evaluadas son la más pequeñas, son ofrecidas como candidatas para el reemplazo.

    Existen diferentes medidas de distancia entre dos cadenas ya definidas. Una de ellas es la "Distancia de Hamming" (DH) [1], la cual es definida solo para cadenas que tengan la misma longitud. Esto quiere decir que para dos cadenas de igual longitud "x" y "z", DH(x, z) es el número de lugares en los cuales dos cadenas se diferencian.

    Por ejemplo:

    • Si x="casa" y z="caza", entonces DH (x, y) = 1, porque la palabra "z"se diferencia en un carácter ( s/z ) de la palabra "x".

    Otra medida de distancia o de similitud entre dos cadenas ampliamente utilizada es la "Distancia Levenshtein" (DL) [2]. Esta es un poco más elaborada que la de Hamming, pues no solo es aplicable a cadenas de la misma longitud, sino que toma en cuenta otros factores.

    La "Distancia Levenshtein" o "Distancia de Edición", como también se le conoce a esta métrica, es el número de eliminaciones, inserciones o sustituciones requeridas para transformar una cadena fuente "x" en una cadena objetivo "z".

    Por ejemplo:

    • Si x = "mesa" y z = "mesa", entonces DL (x,z) = 0, porque no es necesario hacer ninguna transformación. Las cadenas fuente y objetivo son idénticas.
    • Si x = "enojo" y z = "enajo", entonces DL (x,z) = 1, porque es necesaria una transformación para que la cadena fuente y objetivo sean iguales (cambiar la "o" por la "a").
    • Si x = "enojo" y z = "enojar", entonces DL (x,z) = 2, porque son necesarias dos transformaciones para que la cadena fuente y objetivo sean iguales (insertar la "r" al final de la palabra fuente y cambiar la "o" por la "a").

    De lo expuesto anteriormente tenemos que, mientras mayor es el valor de la DL, mayor diferencia hay entre las cadenas analizadas.

    La Distancia Levenshtein toma este nombre del científico ruso Vladimir Levenshtein, quien ideó el algoritmo en 1965 [4]. Desde entonces y mayormente en la actualidad, este algoritmo ha sido utilizado en el desarrollo de varias aplicaciones, tales como:

    1. Sistemas para la revisión de faltas ortográficas automatizada en textos.
    2. Sistemas de reconocimiento de voz.
    3. Sistemas para el análisis de ADN.
    4. Sistemas para la detección de plagios.

    En los sistemas para la revisión de faltas ortográficas automatizada si el texto contiene una palabra "p", que no está en el diccionario, una palabra semejante o cercana (alguna con una distancia de edición pequeña), puede ser sugerida como la corrección de la palabra "p".

    Los errores de transposición son comunes en la escritura de textos. Una transposición puede ser tratada como una eliminación, una inserción o un cambio de letra. [2]

    En los sistemas de reconocimiento de voz se emplea, por ejemplo, para encontrar la pareja más cercana entre una expresión y otra que se encuentra en una biblioteca de expresiones ya clasificadas. [2]

    Por otra parte, en los sistemas de análisis de ADN la distancia de edición da una indicación de cuán cercanas están dos cadenas. Medidas semejantes son usadas para calcular la distancia entre secuencias de ADN (cadenas sobre el alfabeto {A, C, G, T}, o secuencia de proteínas sobre el alfabeto de 20 aminoácidos), para varios propósitos:

    • para encontrar genes o proteínas que puedan tener funciones o propiedades compartidas.
    • para inferir relaciones de familia y árboles evolutivos sobre diferentes organismos.

    Medida de Levenshtein y Estandarización de Direcciones

    Ya se vio que era posible utilizar la Distancia de Levenshtein para sugerir posibles palabras que pueden servir de reemplazo para una palabra encontrada con errores ortográficos. En un final lo que ocurre es que, el corrector ortográfico al detectar la palabra con error hace una búsqueda automática en los diccionarios asociados a este donde busca las palabras con mayor similitud para luego ser mostradas como posibles candidatas de reemplazo.

    Esta misma idea puede ser utilizada dentro del proceso de limpieza de datos de un almacén de datos al cual se quiere llevar un conjunto de direcciones de forma estandarizada para hacer un uso más efectivo de estas [3].

    Para lograr estandarizar direcciones lo primero es separarlas en las partes que la conforman. Una de las formas posibles de separar una dirección en sus partes es analizándola palabra a palabra y determinando a qué parte de dirección pertenece cada una de ellas.

    Por ejemplo, dada la siguiente dirección:

    Esta dirección podría ser separada en los siguientes elementos:

    Este proceso, en otras palabras, sería el de etiquetar cada palabra o conjunto de palabras de la dirección dada con la parte de dirección o etiqueta correcta. Una forma de llevar a cabo esta tarea de forma automatizada es definiendo un autómata para analizar las direcciones, de forma que los nodos de dicho autómata son las partes ya definidas en las que se desea separar la dirección (Calle, Entre Calle, Número de Casa, Reparto, etc.), y los arcos de un estado a otro están asociados a una probabilidad de transición [5] (Ver Fig.1)

    Fig. 1 Ejemplo de posible autómata para analizar direcciones

    Si además se tiene asociado a cada nodo un diccionario, formado por palabras de ejemplo del tipo del nodo al que está asociado, del cual se seleccionan elementos para comprobar la pertenencia o no al nodo en cuestión, se necesitaría entonces una medida de similitud para poder reducir las posibles fallas de selección por causa de errores ortográficos en las palabras que conforman la dirección.

    Utilizando, por ejemplo, como medida de semejanza entre dos cadenas la Distancia de Levenshtein con valor de selección igual a "1", si se tiene en el diccionario asociado al nodo "Calle Principal" el nombre de calle "Porvenir", se seleccionaría correctamente en el nodo "Calle Principal" la palabra "Porveniw" que aparece escrita en la dirección con errores ortográficos, ya que la DL (Porveniw, Porvenir)=1 debido a que solo hay que hacer una transformación para convertir la palabra fuente en la palabra objetivo.

    Por supuesto que este proceso podría tener variaciones tales como, la medida de distancia para llevar a cabo la selección, que podría ser definida por el usuario que estuviera llevando a cabo el proceso de etiquetar las direcciones en sus partes; así como la decisión de corregir o no la palabra escrita con errores en la dirección.

    El modelo anteriormente mostrado sin muchos detalles es una de las aplicaciones de los modelos ocultos de Markov [5], los cuales se han hecho muy populares en el campo del procesamiento del lenguaje natural. Su simplicidad hace que los procesadores obtenidos sean bastante eficientes, y su carácter probabilístico permite que los modelos aprendan de manera automática a partir de conjuntos de ejemplos.

    De modo que utilizando este modelo unido a una buena medida de semejanza entre cadenas, como la distancia de Levenshtein, se obtiene una herramienta útil y de gran ayuda para el proceso de estandarizar y etiquetar direcciones postales.

    Conclusiones

    1. La distancia o medida de similitud entre dos cadenas es ampliamente utilizada para solucionar diversos problemas.
    2. Existen varias medidas de similitud entre cadenas ya definidas, tales como la "Distancia de Hamming" y la "Distancia Levenshtein", esta última muy utilizada para resolver problemas en el campo del procesamiento de textos y del lenguaje natural.
    3. La distancia de Levenshtein en unión con los modelos ocultos de Markov pueden ser usados durante el proceso de estandarización de direcciones postales.

    Bibliografía

    [1] A. Bogomolny (Feb/2006) – Distance between strings, http://www.cut-the-knot.org/do_you_know/Strings

    [2] L. Allison (Feb/2006) – Dynamic Programming Algorithm (DPA) for Edit-Distance,

    http://www.csse.monash.edu.au/~lloyd/tildeAlgDS/Dynamic/Edit/

    [3] L. Padrón (Feb/2006) – Almacenes de Datos: Importancia de la estandarización de las direcciones para las empresas de hoy en día, http://www.ilustrados.com/publicaciones/EEFAAVpAEAMsuJmGDv.php

    [4] M. Gilleland (Feb/2006) – Levenshtein Distance, in Three Flavors, http://www.merriampark.com/ld.htm#WHATIS

    [5] V. Borkar, K. Deshmukhy, S. Sarawagiz – Automatic segmentation of text into structured records, http://www.cs.washington.edu/homes/kd/papers/sigmod01.pdf

     

    DATOS DE LA AUTORA

    Liudmila Padrón Torres

    Profesión: Especialista Informática. Graduada en Licenciatura en Ciencias de la Computación. Actualmente cursando Maestría en Ciencias de la Computación.

    Entidad donde trabaja: Empresa de Telecomunicaciones de Cuba S.A (ETECSA V.C.)

    Fecha de realización del trabajo: 04/03/2006

    Categorías del Trabajo: ComputaciónGeneral

    Foto: