¿Dónde puedo encontrar estadísticas de erratas del mundo real?¿Errores de tipografía del mundo real?
Estoy tratando de hacer coincidir el texto de entrada de las personas con los objetos internos, y la gente tiende a cometer errores ortográficos.
Hay 2 tipos de errores:
typos
- "Helllo" en lugar de "Hola"/"Satudray" en lugar de "Sábado", etc.Spelling
- "Shikago" en lugar de "Chicago"
utilizo Damerau-Levenshtein distance para los errores tipográficos y Double Metaphone para la ortografía (implementaciones Python here y here).
Quiero centrarme en Damerau-Levenshtein (o simplemente edit-distance
). Las implementaciones de libros de texto siempre usan '1' para el peso de eliminaciones, sustituciones de inserciones y transposiciones. Si bien esto es simple y permite buenos algoritmos, no coincide con "realidad"/"probabilidades del mundo real".
Ejemplos:
- estoy seguro de que la probabilidad de "Helllo" ("Hola") es mayor que "Helzlo", sin embargo, son ambos 1 editar distancia.
- "Gello" está más cerca que "Qello" a "Hola" en un teclado QWERTY.
- Transcripciones en Unicode: ¿Cuál es la distancia "real" entre "München" y "Munchen"?
¿Cuáles deberían ser los pesos del "mundo real" para las eliminaciones, inserciones, sustituciones y transposiciones?
Incluso Norvig's very cool spell corrector usa la distancia de edición no ponderada.
Por cierto, estoy seguro de que los pesos deben ser funciones y no flotadores simples (por los ejemplos anteriores) ...
puedo ajustar el algoritmo, pero donde puedo "aprender" estos pesos? No tengo acceso a Google-scale data ...
¿Debería adivinarlos?
EDITAR - tratando de responder a las preguntas de los usuarios:
- Mi actual algoritmo no ponderado falla a menudo cuando se enfrentan a los errores tipográficos, por las razones anteriores. "Regresar el jueves": cada "persona real" puede decir con facilidad que el jueves es más probable que el martes, ¡pero están a una distancia de 1 edición! (Sí, registro y mido mi rendimiento).
- Estoy desarrollando un motor de búsqueda de viajes NLP, por lo que mi diccionario contiene ~ 25K destinos (se espera que crezca a 100K), Expresiones de tiempo ~ 200 (esperado 1K), Expresiones de personas ~ 100 (esperado 300), Expresiones de dinero ~ 100 (esperado 500), "palabras lógicas de pegamento" ("desde", "hermoso", "apartamento") ~ 2K (esperado 10K) y así sucesivamente ...
- El uso de la distancia de edición es diferente para cada uno de los anteriores grupos de palabras. Intento "autocorregir cuando sea obvio", p. Ej. 1 edita la distancia desde solo 1 palabra más en el diccionario.Tengo muchas otras reglas ajustadas a mano, p. Ej. Doble corrección de Metaphone que no está a más de 2 horas de distancia de una palabra de diccionario con una longitud> 4 ... La lista de reglas continúa creciendo a medida que aprendo de la información del mundo real.
- "¿Cuántos pares de entradas de diccionario están dentro de su umbral?": Bueno, eso depende del "sistema de ponderación elegante" y de la entrada del mundo real (futuro), ¿no es así? De todos modos, tengo pruebas unitarias extensas para que cada cambio que haga en el sistema solo lo haga mejor (basado en entradas pasadas, por supuesto). La mayoría de las palabras con letras inferiores a 6 están dentro de una distancia de edición de una palabra que está a una distancia de edición de otra entrada del diccionario.
- Hoy cuando hay 2 entradas de diccionario a la misma distancia de la entrada trato de aplicar varias estadísticas para adivinar mejor lo que el usuario quería decir (por ejemplo, París, es más probable que aparezcan en mi búsqueda que Pārīz, Irán).
- El costo de elegir una palabra incorrecta es devolver resultados semialeatorios (a menudo ridículos) al usuario final y potencialmente perder un cliente. El costo de no comprender es un poco menos costoso: se le pedirá al usuario que reformule.
- ¿Vale la pena el costo de la complejidad? Sí, estoy seguro de que así es. No creería la cantidad de errores tipográficos que la gente lanza al sistema y espera que lo entienda, y podría usar el impulso en Precision and Recall.
Quizás MS ha realizado un estudio (aunque la corrección de hechizos de Word no es tan inteligente, de hecho, creo que realmente solo comprueba cada ortografía contra una lista de errores comunes). Además, Google está bastante comprometido con el desarrollo de código abierto, ¿quizás te den esos datos si lo preguntas bien? –
Que los datos a escala de Google son interesantes.¿Es algo a lo que uno puede acceder y consultar o solo es una página de ejemplo? –
Podría ser útil si tiene en cuenta la proximidad de las claves de alguna manera en su ponderación. Escribir Hellp es más probable que ocurra que Hellz porque la tecla q está cerca de la tecla o "correcta" (asumiendo QWERTY ...) –