Un buen línea de base, probablemente, uno práctico en términos de su relativamente alto coste computacional y lo más importante su producción de muchos falsos positivos, sería algoritmos genéricos distancia cadena como
Dependiendo del nivel de precisión requerido (que, por cierto, debe especificarse tanto en términos de su recall and precision, es decir, en general, expresando si es más importante que se pierda una correlación de identificar falsamente uno), un proceso de cosecha propia en base a [algunos de] los siguientes heurística e ideas podrían hacer el truco:
- tokenize la entrada, es decir, ver la entrada como una matriz de palabras en lugar de una cadena
- tokenización también debe mantener la información de número de línea
- normalizar la entrada con el uso de un diccionario breve de substituions comunes (por ejemplo, "dr" al final de una línea = "unidad", "Jack" = "John", "Bill" = "William" ..., "W." al comienzo de una línea es "Oeste", etc.
- Identificar (un poco como el etiquetado, como en el etiquetado POS) la naturaleza de algunas entidades (por ejemplo, código postal y código postal ampliado, y también ciudad
- Identificar (buscar) algunas de estas entidades (por ejemplo, una tabla de base de datos relativamente corta puede incluir todas las ciudades/población en el área de destino
- Identificar (buscar) algunas entidades relacionadas con el dominio (si todas/muchas de las direcciones tienen que ver con gente de la profesión legal, una búsqueda) de nombres de firmas de abogados o de edificios federales pueden ser de ayuda.
- En general, ponga más peso en los tokens que provienen de la última línea de la dirección
- Ponga más (o menos) peso en tokens con un tipo de entidad particular (por ejemplo: "Drive", "Street", "Court" debe con mucho menos que las fichas que los preceden.
- Considere un SOUNDEX algoritmo modificado para ayudar con la normalización de
con lo anterior en mente, implementar un evaluador basado en reglas. provisionalmente, la las reglas podrían implementarse como visitantes de un árbol/ar estructura de tipo rayo donde la entrada se analiza inicialmente (Visitor design pattern).
La ventaja del marco basado en reglas es que cada heurística tiene su propia función y las reglas se pueden priorizar, es decir, colocar algunas reglas al principio de la cadena, lo que permite abortar la evaluación anticipadamente, con algunas heurísticas fuertes (por ejemplo: diferente Ciudad => Correlación = 0, nivel de confianza = 95%, etc. ...).
Una consideración importante con la búsqueda de correlaciones es la necesidad de a priori comparar cada artículo (en este caso frente) con todos los demás elementos, por lo que requieren un máximo de 1/2 n^2
comparaciones a nivel de artículo. Debido a esto, puede ser útil almacenar los elementos de referencia de una manera en la que estén preprocesados (analizados, normalizados ...) y también para tener un compendio/clave del tipo que pueda usarse como [muy rough] indicador de una posible correlación (por ejemplo, una clave hecha con el código postal de 5 dígitos seguido por el valor SOUNDEX del nombre "principal").
Gracias, algunos buenos consejos allí. –