Estoy intentando limpiar una base de datos que, a lo largo de los años, había adquirido muchos registros duplicados, con nombres ligeramente diferentes. Por ejemplo, en la tabla de empresas, hay nombres como "Some Company Limited" y "SOME COMPANY LTD!".Técnicas para encontrar cerca de registros duplicados
Mi plan era exportar las tablas ofensivas a R, convertir nombres a minúsculas, reemplazar sinónimos comunes (como "limitado" -> "ltd"), eliminar caracteres no alfabéticos y luego usar agrep
para ver qué aspecto similar.
Mi primer problema es que agrep
solo acepta un único patrón para que coincida, y el bucle sobre cada nombre de compañía para que coincida con los demás es lento. (Algunas mesas para ser limpiados tendrán decenas, posiblemente cientos de miles de nombres para comprobar.)
he mirado muy brevemente en la tm
paquete (JSS article), y parece muy potente, pero orientado hacia el análisis de grandes trozos de texto, en lugar de solo nombres.
tengo unas pocas preguntas relacionadas:
es la
tm
paquete adecuado para este tipo de tarea?¿Existe una alternativa más rápida a
agrep
? (Función Said utiliza el Levenshtein editar distancia que es anecdóticamente lento.)¿Hay otras herramientas adecuados en R, aparte de
agrep
ytm
?¿Debería incluso estar haciendo esto en R, o debería este tipo de cosa ser hecho directamente en la base de datos? (Se trata de una base de datos Access, así que será más bien evitar tocarlo si es posible.)
relacionada con los [¿Cómo medir la similitud entre las cuerdas?] (http://stackoverflow.com/questions/6044112/r-how-to-measure-similarity-between-strings) –