Tenho o seguinte problema em mãos: Tenho uma lista muito longa de palavras, possivelmente nomes, sobrenomes etc. É necessário agrupar essa lista de palavras, de modo que palavras semelhantes, por exemplo palavras com distância de edição semelhante (Levenshtein), apareçam no mesmo cluster. Por exemplo, "algoritmo" e "alogritmo" devem ter grandes chances de aparecer no mesmo cluster.
Conheço bem os métodos clássicos de cluster não supervisionado, como o k-means cluster, o clustering EM na literatura de reconhecimento de padrões. O problema aqui é que esses métodos funcionam em pontos que residem em um espaço vetorial. Eu tenho palavras de cordas na minha mão aqui. Parece que a questão de como representar strings em um espaço vetorial numérico e calcular "meios" de agrupamentos de strings não é suficientemente respondida, de acordo com meus esforços de pesquisa até agora. Uma abordagem ingênua para atacar esse problema seria combinar o agrupamento k-Means com a distância de Levenshtein, mas a questão ainda permanece: "Como representar" os meios "das cordas?". Existe um peso chamado de peso TF-IDF, mas parece que ele está relacionado principalmente à área de agrupamento de "documentos de texto", não ao agrupamento de palavras únicas. http://pike.psu.edu/cleandb06/papers/CameraReady_120.pdf
Minha pesquisa nessa área ainda está em andamento, mas eu também queria obter idéias daqui. O que você recomendaria neste caso, alguém conhece algum método para esse tipo de problema?
It seems that there are some special string clustering algorithms. Se você vem especificamente de um campo de mineração de texto, não de estatísticas / análise de dados, esta declaração é garantida. No entanto, se você aprender a ramificação de clustering, descobrirá que não existem algoritmos "especiais" para dados de string. O "especial" é como você pré-processa esses dados antes de inseri-los em uma análise de cluster.