Tengo a mano el siguiente problema: tengo una lista muy larga de palabras, posiblemente nombres, apellidos, etc. Necesito agrupar esta lista de palabras, de modo que palabras similares, por ejemplo palabras con una distancia de edición similar (Levenshtein) aparezcan en el mismo grupo Por ejemplo, "algoritmo" y "alogritmo" deberían tener altas posibilidades de aparecer en el mismo grupo.
Conozco los métodos clásicos de agrupación no supervisada, como la agrupación k-means, la agrupación EM en la literatura de reconocimiento de patrones. El problema aquí es que estos métodos funcionan en puntos que residen en un espacio vectorial. Tengo palabras de cuerdas en mi mano aquí. Parece que la pregunta de cómo representar cadenas en un espacio vectorial numérico y calcular "medias" de grupos de cadenas no está suficientemente respondida, según los esfuerzos de mi encuesta hasta ahora. Un enfoque ingenuo para atacar este problema sería combinar el agrupamiento de k-medias con la distancia de Levenshtein, pero la pregunta sigue siendo "¿Cómo representar" medios "de cuerdas?". Hay una ponderación denominada ponderación TF-IDF, pero parece que está relacionada principalmente con el área de agrupación de "documentos de texto", no para la agrupación de palabras individuales. http://pike.psu.edu/cleandb06/papers/CameraReady_120.pdf
Mi búsqueda en esta área aún continúa, pero también quería obtener ideas de aquí. ¿Qué recomendaría en este caso? ¿Alguien conoce algún método para este tipo de problema?
It seems that there are some special string clustering algorithms
. Si proviene específicamente del campo de minería de texto, no de estadísticas / análisis de datos, esta declaración está garantizada. Sin embargo, si aprende la rama de agrupación tal como está, encontrará que no existen algoritmos "especiales" para los datos de cadena. El "especial" es cómo preprocesar dichos datos antes de ingresarlos en un análisis de clúster.