Não tenho certeza se esta pergunta pertence aqui e peço desculpas se não. O que pretendo fazer é desenvolver uma maneira programática na qual eu possa determinar probabilisticamente se uma determinada string "pertence" a um pacote de strings. Por exemplo, se eu tiver um pacote de 10.000 nomes de cidades dos EUA e a sequência "Filadélfia", gostaria de obter uma medida quantitativa da probabilidade de "Filadélfia" ser um nome de cidade dos EUA com base nos nomes de cidades dos EUA que eu já conheço. Embora eu saiba que não vou conseguir separar nomes de cidades reais de nomes de cidades falsos nesse contexto, eu pelo menos esperaria ter seqüências de caracteres como "123,75" e "A rápida raposa vermelha saltou sobre os preguiçosos cães marrons" excluídas algum limiar.
Para começar, observei o Levenshtein Distance e dei uma olhada em como isso foi aplicado a problemas pelo menos um pouco semelhantes ao que estou tentando resolver. Uma aplicação interessante que encontrei foi a detecção de plágio, com um artigo descrevendo como a distância de Levenshtein foi usada com um algoritmo Smith-Waterman modificado para pontuar documentos com base na probabilidade de serem uma versão plagarizada de um determinado papel base. Minha pergunta é se alguém poderia me apontar na direção certa com outros algoritmos ou metodologias estabelecidos que possam me ajudar. Tenho a sensação de que isso pode ser um problema que alguém no passado tentou resolver, mas até agora meu Google-fu me falhou.