¿Cuál es un buen algoritmo de coincidencia para palabras mal escritas?

En primer lugar, puede intentar usar algún tipo de métrica de distancia de cuerda como la distancia de Levenstein. Básicamente, la distancia de Levenstein entre dos secuencias es el número mínimo de ediciones de un solo carácter (inserciones, eliminaciones o sustituciones) requeridas para transferir una secuencia a la otra.

Al usar NLTK se vería así:

importar nltk

print nltk.edit_distance (“lluvia”, “brillo”)
# 3
#transformar “lluvia” para “brillar” requiere tres pasos,
# que consta de dos sustituciones y una inserción:
# “lluvia” -> “sain” -> “shin” -> “brillo”.

print nltk.edit_distance (“bg mac”, “big mac”)
# 1

print nltk.edit_distance (“cuarto de libra”, “cuarto de libra”)
# 2

Pero la desventaja de la distancia de Levenstein proviene de su simplicidad. Solo cuenta las ediciones de un solo carácter sin tener en cuenta los n-gramos.

Para contar n gramos, puede usar la medida BLEU. La medida BLEU se usó inicialmente para evaluar la calidad del texto que ha sido traducido automáticamente de un lenguaje natural a otro. Tenga en cuenta que no es una métrica de distancia, es una métrica de similitud, con valores más cercanos a 1 que representan textos más similares.

Pero, BLEU opera con palabras y no con caracteres. Lo que propongo hacer es separar las secuencias en caracteres y comparar n-gramos de caracteres.

de nltk.translate.bleu_score import *

print oración_bleu ([lista (‘el clima está brillando’)], lista (‘el clima está brillando’))
# 1

print oración_bleu ([lista (‘bg mac’)], lista (‘big mac’))
# 0.643458884161

print oración_bleu ([lista (‘cuarto de libra’)], lista (‘cuarto de libra’))
# 0.660632863603

imprimir oracion_bleu ([list (‘quartr poundr’)], list (‘big mac’))
# 0.31026342035

Para obtener más información sobre la medida BLEU, debe leer la documentación de NLTK. Por cierto, la implementación NLTK de BLEU admite la asignación de diferentes pesos a n-gramos, por lo que 4 gramos tendrían un orden más alto que unigram. Y es compatible con técnicas de suavizado para medir BLEU. Para obtener más información sobre las técnicas de suavizado, debe leer Una comparación sistemática de técnicas de suavizado para BLEU de nivel de oración de Boxing Chen y Colin Cherry.

Básicamente, juegue con ambas técnicas con diferentes parámetros y vea qué funciona mejor para usted.