¿Cómo funciona Duolingo desde el punto de vista de un programador?

idioma → nivel → lección → pregunta

Algunas suposiciones:

1- Mapear palabras solo puede ser útil en el mismo idioma.

2- Las palabras comunes entre niveles no son muchas, ya que debes aprender nuevas palabras.

3- Cada nivel tiene un máximo de 10 lecciones.

4- Cada lección tiene 10 preguntas.

5- Preguntas tiene un máximo de 500 caracteres.

De acuerdo con estos supuestos, tratar con los datos será común en el nivel de clúster. Además, 500 * 10 * 10 no es un número grande, por lo que una simple coincidencia para corregir la pregunta será suficiente.

Espera: ¿Qué pasa si Duolingo por sí mismo también puede aprender?

Aprenderá los errores tipográficos comunes y no comunes.

Trie: es una estructura de datos en la que cada nodo tiene 26 aristas (26 letras en inglés) que apuntan a otro nodo, si queremos representar una oración en Trie “hola mundo” el primer guiño tendrá arista en ‘h’ al segundo nodo que tener borde ‘e’, ​​y así sucesivamente.

Cada respuesta tendrá Trie y puntuación. Cada nodo en este intento también tendrá puntaje.

Tienes que aprobar con una puntuación del 70% de los caracteres correctos y del 75% de las palabras correctas.

Si pasa, lance la respuesta correcta:

  • Agrega su puntuación, si es el final de la palabra y todos los caracteres son correctos, agregue +1 a la puntuación de las palabras.

Si haces un error tipográfico:

  • Creará un nuevo nodo y pondrá puntaje = 0.
  • Golpeó un nodo tipográfico, así que agregue su puntaje y actualice su puntaje.

Podemos realizar un seguimiento con la mejor puntuación de cada índice de respuesta y si currentScore + bestScore <70%, nos detenemos.

Podemos hacer un tiempo muerto para que los nodos ahorren memoria y no almacenen datos innecesarios.

Hay muchas otras optimizaciones para hacer en un árbol Trie.

PD: esta respuesta puede cambiar después de tomar clases de aprendizaje automático y minería de datos.