Text Mining: Distancia de Levenshtein



Documentos relacionados
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO. Introducción FACULTAD DE INGENIERÍA. Ordenación

Modulo 1 El lenguaje Java

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

11. Algunas clases estándar de Java (II)

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

Prof. Dr. Paul Bustamante

Informática FACULTAD DE FÍSICAS

Estructura de datos tipo vector.

MATERIAL 2 EXCEL 2007

Trabajo Práctico N 4: Diseño por Contratos

1. Manejo de memoria estática 2. Manejo de memoria dinámica

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

DISEÑO DEL SOFTWARE TRAFFIC ANALYZER. Analyzer. En este capítulo se reporta el desarrollo que se llevó a cabo para realizar el software

QUÉ ES UN NÚMERO DECIMAL?

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Aplicaciones Windows con Microsoft Visual Studio

Curso Taller de Matemáticas Olímpicas. Principio Fundamental del Conteo

Curso Excel Básico - Intermedio

UNIDAD EJECUTORA DE CONSERVACION VIAL MANUAL DEL USUARIO DEL SISTEMA INTEGRAL DE CONTROL DE PROYECTOS

Guía para el Portal de Profesores del Sistema de Información CLASS Académico

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Kaldeera Advanced Forms 2009 Guía del usuario

INDEX GUÍA INSTRUCTIVA PARA PASOS INICIALES DEL SITE BUILDER

Reservas - Rooming List

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Manual para el uso del Correo Electrónico Institucional Via Webmail

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

TEMA 5: HOJAS DE CÁLCULO. Edición de hojas de cálculo con OpenOffice Calc

Word. Qué es Office? Cuando se abre el programa, se muestra una pantalla como la siguiente. Manual Microsoft Office MS Word

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

Enunciado unidades fraccionarias fracción fracciones equivalentes comparar operaciones aritméticas fracciones propias Qué hacer deslizador vertical

Guía Notas Parciales. Intermedio

28 = =

MODELOS DE RECUPERACION

CARGA MASIVA EMOV 7/1/2013

5 Ecuaciones lineales y conceptos elementales de funciones

Árboles AVL. Laboratorio de Programación II

SISTEMAS DE NUMERACIÓN. Sistema decimal

Herramientas computacionales para la matemática MATLAB: Arreglos

Clases y Objetos. Informática II Ingeniería Electrónica

Administración de Clientes 4

Vectores y matrices. Arrays Declaración Creación Acceso a los elementos de un array Manipulación de vectores y matrices

Operación Microsoft Access 97

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Programación Orientada a Objetos en Java

Manual Ingreso Notas y Acta Electrónica

Programación I: Funciones y módulos

Manual. Sistema De. Plataforma Virtual. Docente. Estudiante MANUAL MANUAL DE MANUAL. del Usuario. Coordinador. MICROSOFT PowerPoint v2.

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Práctica sobre compartición de instancias remotas.

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

CURSO INSTALACION E IMPLEMENTACION ALOJA SOFTWARE HOTEL MODULO 02: Datos Adicionales de configuración [1]

Relaciones entre Tablas en una Base de Datos Access

Mantenimiento Limpieza

IV. CARGUE DE SOPORTES

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Una breve introducción a Excel c

CÓMO AÑADIR UN FORMULARIO NUEVO O MODIFICAR EL DE CONTACTO DE LA WEB

La ventana de conceptos muestra los conceptos de una partida en el presupuesto activo.

Matrices Invertibles y Elementos de Álgebra Matricial

Combinar comentarios y cambios de varios documentos en un documento

Clases y funciones amigas: friend

Proyecto visual C# 2005 Express Edition: Imprimir Página 1 de 5

no descompone no descompone no descompone

MANUAL DE INICIACIÓN A JOVELLANOS VIRTUAL J. A. Espejo coordinador.tic@iesjovellanos.org 1

Unidad: Representación gráfica del movimiento

La nueva criba de Eratóstenes Efraín Soto Apolinar 1 F.I.M.E. U.A.N.L. San Nicolás, N.L. México. efrain@yalma.fime.uanl.mx

1.- INTRODUCCIÓN 2.- PARÁMETROS

Cálculo Simbólico también es posible con GeoGebra

Informática I Notas del curso

ARREGLOS DEFINICION GENERAL DE ARREGLO

CÓMO HACER UN PEDIDO POR INTERNET EN YOURAVON.COM

LECCIÓN 4ª Operaciones Numéricas

Lección 4: Suma y resta de números racionales

4794: Se añade la columna "Comercial" a la lista de servicios encontrados del Buscador de Servicios de Camión Completo.

3.1 Definir objetivos y contenidos de la página web

Clase 32: Árbol balanceado AVL

Estimado usuario. Tabla de Contenidos

Lección 24: Lenguaje algebraico y sustituciones

MANUAL DE USUARIO SISTEMA DE ALMACEN DIF SONORA

Créditos académicos. Ignacio Vélez. Facultad de Ingeniería Industrial. Politécnico Grancolombiano

Módulo Cédulas de Auditorías desde Excel

Listas, Pilas, Colas y Punteros. Semana 3

Lección 9: Polinomios

Manual para para becarios CONACYT de CIATEQ Registro de CVU

Microsoft Office: EXCEL. Objetivos curso

La ventana de Microsoft Excel

MANUAL DE AYUDA MÓDULO GOTELGEST.NET PREVENTA/AUTOVENTA

PROGRAMA DE GESTIÓN. Tutorial para usuarios del sistema de información

Manual de Uso Transpotista de Hormigón TECNOLOGÍA DE SEGUIMIENTO DE CAMIONES HORMIGONERA MANUAL DE USO TRANSPORTISTA DE HORMIGÓN

Manual de uso. Empresas. H.Ayuntamiento de Puerto Vallarta Servicio de Bolsa de Trabajo

MEDIDAS DE TENDENCIA CENTRAL

Movimiento a través de una. José San Martín

SMS Gestión. manual de uso

PROYECTO EDUCATIVO LA CALERA

Base de datos en Access

Análisis de los datos

Instructivo de Instalación y Uso de software MasterControl

EXTRACTO Descripción del uso y manejo de SIRAIS 1.2

Transcripción:

Text Mining: Distancia de Levenshtein La distancia de Levenshtein es un potente algoritmo que puede ser aplicado para tareas de Text Mining. Determina una medida de similaridad o cercanía entre dos cadenas de caracteres. Por ejemplo, la distancia de Levenshtein entre honda y onda es de 1, ya que se necesitan solo una edición elemental para cambiar uno en el otro: 1. honda onda (eliminación de h ) Este algoritmo fue propuesto por Vladimir Levenshtein en 1965 y desde entonces ha sido ampliamente usado para realizar el matching entre cadenas, por ejemplo, para correctores ortográficos. La implementación del algoritmo requiere el uso de una matriz de tamaño (n + 1) (m + 1), donde n y m son las longitudes de los cadenas que se comparan. Su implementación es sencilla, por ejemplo comparemos las palabras honda (para la cual n = 5) y onda (para la cual m = 4) Se acomodan en una matriz de (n, m) y se numeran como se muestra en la figura. o 1 n 2 d 3 a 4 La idea básica es comparar cada letra y asignar pesos, para ello si las letras son iguales el peso asignado es 0, sino el paso es 1, se toman los valores de la casilla de la izquierda, esquina superior izquierda y la casilla superior de las cuales se escoge el menor y se le suma el peso asignado. Por ejemplo para comparar la o y la h se consideran los pesos marcados de amarillo, el menor de ellos es 0 por lo tanto el valor nuevo de la casilla será 0 + 1 = 1, esta misma idea se hace con todas las otras casillas. La primera pasada quedaría: h 0 1 o 1 1 La segunda pasada: o 1 1 n 2 2 d 3 3 a 4 4 o 1 1 1 n 2 2 2 d 3 3 3 a 4 4 4 Aurelio López Ovando 1

Tercera pasada Cuarta pasada Quinta pasada h O n d a o 1 1 1 2 n 2 2 2 1 d 3 3 3 2 a 4 4 4 3 5 o 1 1 1 2 n 2 2 2 1 d 3 3 3 2 a 4 4 4 3 5 o 1 1 1 2 3 n 2 2 2 1 2 d 3 3 3 2 1 a 4 4 4 3 2 Sexta pasada Obtenemos la ruta mas corta 5 o 1 1 1 2 3 4 n 2 2 2 1 2 3 d 3 3 3 2 1 2 a 4 4 4 3 2 1 5 o 1 1 1 2 3 4 n 2 2 2 1 2 3 d 3 3 3 2 1 2 a 4 4 4 3 2 1 Concluimos que la distancia entre estas palabras es de 1, solo hay que hacer un cambio entre las palabras para que sean iguales. Este algoritmo es utilizado para comparar textos, existe una versión extendida que proporciona una mejor información en el parecido de las palabras utilizados por correctores ortográficos y buscadores en internet. Aurelio López Ovando 2

Distancia de Levenshtein en C# Creamos un nuevo proyecto al que llamamos DistanciaLevestein Creamos un formulario que nos muestre la información que queremos, como se muestra en la figura: Aurelio López Ovando 3

Agregamos una clase donde podamos desarrollar el algoritmo de la distancia de Levenshtein, la clase la llamaremos Levenstein. A la clase se le agrega el siguiente código como se muestra en el cuadro de texto siguiente: using System; using System.Collections.Generic; namespace DistanciaLevenstein class Levenstein public int LevenshteinDistance(string s, string t, out double porcentaje) porcentaje = 0; // d es una tabla con m+1 renglones y n+1 columnas int costo = 0; int m = s.length; int n = t.length; int[,] d = new int[m + 1, n + 1]; // Verifica que exista algo que comparar if (n == 0) return m; if (m == 0) return n; // Llena la primera columna y la primera fila. for (int i = 0; i <= m; d[i, 0] = i++) ; for (int j = 0; j <= n; d[0, j] = j++) ; /// recorre la matriz llenando cada unos de los pesos. /// i columnas, j renglones for (int i = 1; i <= m; i++) // recorre para j for (int j = 1; j <= n; j++) /// si son iguales en posiciones equidistantes el peso es 0 /// de lo contrario el peso suma a uno. costo = (s[i - 1] == t[j - 1])? 0 : 1; d[i, j] = System.Math.Min(System.Math.Min(d[i - 1, j] + 1, //Eliminacion d[i, j - 1] + 1), //Inserccion d[i - 1, j - 1] + costo); //Sustitucion /// Calculamos el porcentaje de cambios en la palabra. if (s.length > t.length) porcentaje = ((double)d[m, n] / (double)s.length); else porcentaje = ((double)d[m, n] / (double)t.length); return d[m, n]; Aurelio López Ovando 4

En el botón agregamos el siguiente código: private void btncalculadistancia_click(object sender, RoutedEventArgs e) Levenstein l = new Levenstein(); double h; int umbral = l.levenshteindistance(txpalabra1.text, txplabra2.text, out h); txumbral.text = umbral.tostring(); txpercent.text = h.tostring(); Obtenemos un resultados como se muestran a continuación: Entre mas se acerca al cero, las palabras son mas parecidas y entre mas elevado es el porcentaje indica que hay que hacer mas movimientos para que las palabras se parezcan, el porcentaje ayuda en el caso de que existan varias palabras muy parecidas, ese valor nos indica cual es la mas parecida. Aurelio López Ovando 5