Estou procurando uma biblioteca Python que me ajude a identificar a semelhança entre duas palavras ou frases.
Farei a conversão de áudio em texto, o que resultará em um dicionário em inglês ou em palavras que não sejam do dicionário (este pode ser um nome de pessoa ou empresa). Depois disso, preciso compará-lo a uma ou mais palavras conhecidas.
Exemplo:
1) Resultado do texto ao áudio: obrigado por ligar para a America Expansion será comparado ao American Express .
Ambas as frases são de alguma forma semelhantes, mas não são as mesmas.
Parece que eu preciso analisar quantos caracteres eles compartilham. Todas as idéias serão ótimas. Parece uma funcionalidade como o recurso "você quis dizer" na pesquisa do Google.
Além das respostas muito boas aqui, você pode tentar o SequenceMatcher na biblioteca python difflib.
https://docs.python.org/2/library/difflib.html
Agora considere o código abaixo:
Agora você pode comparar o valor d para avaliar a semelhança.
fonte
Se o seu dicionário não for muito grande, uma abordagem comum é fazer a distância de Levenshtein, que basicamente conta quantas alterações você precisa fazer para passar de uma palavra para outra. As alterações incluem alterar um personagem, removê-lo ou adicioná-lo. Um exemplo da Wikipedia :
lev (gatinho, sentado) = 3
Aqui estão alguns implementos Python nos Wikilivros.
O algoritmo para calcular essas distâncias não é barato, no entanto. Se você precisar fazer isso em larga escala, existem maneiras de usar a semelhança de cosseno em vetores de dois gramas muito mais rápidos e fáceis de distribuir, se você precisar encontrar correspondências para muitas palavras de uma só vez. No entanto, eles são apenas uma aproximação a essa distância.
fonte
Uma técnica antiga e bem conhecida para comparação é o algoritmo Soundex . A idéia é comparar não as próprias palavras, mas aproximações de como elas são pronunciadas. Até que ponto isso realmente melhora a qualidade dos resultados que eu não sei.
No entanto, parece um pouco estranho aplicar algo como o Soundex a resultados de um mecanismo de reconhecimento de fala para texto. Primeiro você joga fora as informações sobre como as palavras são pronunciadas e depois tenta adicioná-las novamente. Seria melhor combinar essas duas fases.
Portanto, espero que a tecnologia de ponta nessa área faça isso e seja alguma forma de classificação adaptativa, por exemplo, baseada em redes neurais. O Google retorna pesquisas recentes sobre reconhecimento de fala com redes neurais .
fonte