¿Qué tan difícil es el algoritmo de verificación de traducción de Duolingo? ¿Existen otras herramientas de código abierto similares por ahí?

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!

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

Este documento ofrece una buena encuesta de los diversos enfoques para esta tarea (evaluación de traducción):

http://www.euromatrix.net/delive

Parece omitir Ribes, que es importante para pares de idiomas como inglés / japonés:

Métrica de evaluación automática para traducción automática
(Código fuente allí también)

La métrica “estándar” es BLEU, que se implementa en NLTK:
nltk.align.bleu: documentación de NLTK 3.0

TERp es otra técnica común (de UMD, cuya mascota es la tortuga acuática):
snover / terp

Los programadores de Duolingo son muy inteligentes, ¡solo usan el crowdsourcing! Cada ejercicio tiene una base de datos de posibles traducciones, que los usuarios pueden agregar al informar las respuestas que creen que deberían haber sido aceptadas, que el equipo de Duolingo luego revisa. (Y si tu respuesta es aceptada, recibes un correo electrónico que te lo dice … es algo entretenido, porque esperan un rato y luego hacen un gran lote. Tengo cientos de estos correos electrónicos, porque me gusta contribuir a Duolingo, es tan una gran herramienta gratuita)