Hola,
Gracias por el A2A.
Como Patricia J Hawkins escribió desde su propia experiencia, tienen una base de datos de todas las respuestas posibles que se extiende de vez en cuando. Gracias Patricia por esa idea, ¡no lo sabía!
- ¿Cuáles son los principales cambios en los algoritmos de Google en 2017?
- ¿Cómo analizaría la complejidad temporal de fibbonacci?
- ¿Cuáles son algunos problemas informáticos para los que no existe un enfoque de fuerza bruta?
- ¿Qué algoritmos de aprendizaje funcionan basados en datos desequilibrados (eventos raros)?
- ¿Aproximadamente cuántas personas en el mundo pueden resolver un cubo rubix sin algoritmos?
Ahora, mi respuesta va a ser un poco diferente. Dado que el problema de cómo Duolingo lo hace está resuelto, intentaré explicar cómo un sistema de cheques podría funcionar solo, si eso es lo que le interesaba.
Saber cuándo una traducción es buena es, por ejemplo, muy importante para la traducción automática estadística, así que voy a tratar de dar un poco de información general al respecto.
Tasa de error de palabras
Bien, digamos que tienes una oración como “Ich nachhause gehen” (“Quiero ir a casa”), que un niño alemán tiene que traducir al inglés. Tal vez el niño dirá: “Quiero casa”
Bien, entonces que pasa. Podemos tokenizar fácilmente la entrada, para que la traducción correcta se vea así:
“Quiero ir a casa”
Y la traducción verificada será:
“I”, “want”, “home”
Ahora, podemos verificar fácilmente cuántas palabras son realmente iguales. La diferencia es que, en la traducción correcta, todavía tiene “to” y “go”. Eso significa que tienes 2 eliminaciones allí. (Eliminaste 2 palabras que deberían estar allí).
La fórmula para WER es así:
Las sustituciones (S) son como cambiar “ir” a “caminar” o “correr”
Las inserciones (I) ponen más palabras que no pertenecen, como en la siguiente oración: “Realmente quiero ir a casa”
Las eliminaciones (D) ya están cubiertas
Número (N) es el número total de S + D + CorrectOnes
Entonces, en este caso tenemos 0 S, 2 D, 0 I y N es igual a: 2 + 3
Entonces, tienes un WER de 2/5, o 20%.
El número de inserciones y eliminaciones se puede encontrar con un algoritmo llamado Distancia mínima de edición (solo para que sepa qué buscar).
El problema es que simplemente usar esto no incorpora el conocimiento de sinónimos y demás, y tal vez quieras sopesarlo para que “Él se vaya a casa” (correcto sería “Se va a casa”) no es tan penalizado, pero eso es lo básico de eso.
Entonces, tal vez pueda decir que si una palabra se cambia a un sinónimo (camina, anda …), entonces sigue siendo correcta y sintoniza el algoritmo como desee.
Este algoritmo no tiene en cuenta que el reordenamiento es posible a veces (si lo es).
Velocidad de edición de traducción
TER mejora WER al permitir turnos (al menos no penalizarlos tanto)
REF: **** **** ARABIA SAUDITA negó ESTA SEMANA información publicada en el AMERICAN new yorktimes
HYP: ESTA SEMANA LOS SAUDÍAS negaron información **** **** publicada en el ******** new yorktimes
Como puede ver, ESTA SEMANA se desplazó al frente. TER permite esto diciendo que un cambio solo cuesta 1 punto, con WER esto habría sido 2 Inserciones y 2 Eliminaciones, etc., por lo que habría tenido un costo enorme.
Más para encontrar aquí: https://www.cs.umd.edu/~snover/p…
Avíseme si pudiera darle una breve descripción general sobre la verificación de la traducción que podría implementar por su cuenta.
Entonces, al final, podría ajustar su algoritmo, permitir sinónimos o hacer otras revisiones, como las siguientes:
¿Verifica si la secuencia de etiquetas POS es correcta? Etiquetado de parte del discurso
Codifique algunas reglas (después de un He, She or It, si el Verbo está presente, debe poner “va” y “camina”, no “ir” y “caminar”)
Entrenar a un modelo de lenguaje en una gran cantidad de texto para ver qué tan probable es una secuencia. Modelo de lenguaje Porque “Él va” será más probable que “Él va” si usa un Modelo de lenguaje Bigram, por ejemplo, pero puede ser igualmente probable que “Él caminó” porque ambos son correctos.
Saludos