Estoy buscando una biblioteca de Python que me ayude a identificar la similitud entre dos palabras u oraciones.
Haré la conversión de audio a texto, lo que dará como resultado un diccionario de inglés o palabras que no estén en el diccionario (podría ser el nombre de una persona o compañía). Después de eso, necesito compararlo con una palabra o palabras conocidas.
Ejemplo:
1) Resultado de texto a audio: Gracias por llamar a America Expansion se comparará con American Express .
Ambas oraciones son de alguna manera similares pero no iguales.
Parece que es posible que necesite ver cuántos caracteres comparten. Cualquier idea será genial. Parece una funcionalidad como la función de búsqueda de Google "quiso decir"
Además de muy buenas respuestas aquí, puede probar SequenceMatcher en la biblioteca difflib python.
https://docs.python.org/2/library/difflib.html
Ahora considere el siguiente código:
Ahora puede comparar el valor d para evaluar la similitud.
fuente
Si su diccionario no es demasiado grande, un enfoque común es tomar la distancia de Levenshtein, que básicamente cuenta cuántos cambios tiene que hacer para pasar de una palabra a otra. Los cambios incluyen cambiar un personaje, eliminar un personaje o agregar un personaje. Un ejemplo de Wikipedia :
lev (gatito, sentado) = 3
Aquí hay algunos implementos de Python en Wikilibros.
Sin embargo, el algoritmo para calcular estas distancias no es barato. Si necesita hacer esto a gran escala, hay formas de usar la similitud del coseno en los vectores de dos gramos que son mucho más rápidos y fáciles de distribuir si necesita encontrar coincidencias para muchas palabras a la vez. Sin embargo, son solo una aproximación a esta distancia.
fuente
Una técnica antigua y bien conocida para la comparación es el algoritmo Soundex . La idea es comparar no las palabras en sí mismas, sino aproximaciones de cómo se pronuncian. Hasta qué punto esto realmente mejora la calidad de los resultados, no lo sé.
Sin embargo, se siente un poco extraño aplicar algo como Soundex a los resultados de un motor de reconocimiento de voz a texto. Primero desecha información sobre cómo se pronuncian las palabras, luego intenta volver a agregarla. Sería mejor combinar estas dos fases.
Por lo tanto, espero que la tecnología de punta en esta área lo haga y sea una forma de clasificación adaptativa, por ejemplo, basada en redes neuronales. Google devuelve investigaciones recientes sobre Reconocimiento de voz con redes neuronales .
fuente