Todos los desafíos
Fácil 0 resueltos 0% de aceptación

Tokenizador de palabras y vocabulario

Divide un texto en palabras en minúsculas y construye un vocabulario ordenado por frecuencia, el primer paso de todo modelo de lenguaje.

Lo que aprenderás

  • Dividir el texto en tokens de palabras en minúscula
  • Contar la frecuencia de las palabras
  • Ordenar el vocabulario por frecuencia y luego alfabéticamente

Problema

Ver original (inglés)

Los modelos de lenguaje trabajan con tokens, no con texto sin procesar. Un tokenizador simple pasa el texto a minúsculas y trata cada secuencia de letras a-z y dígitos 0-9 como una palabra; todo lo demás (espacios, puntuación, otros caracteres) separa palabras.

Construye el vocabulario: las palabras distintas ordenadas por frecuencia (la más frecuente primero), con los empates resueltos por orden alfabético. La posición de una palabra en esta lista es su ID de token.

Implementa build_vocabulary(text).

Entrada

text: Cualquier texto.

Salida

Devuelve el vocabulario como una lista de palabras. Si el texto no tiene palabras, devuelve una lista vacía.

Restricciones

0 ≤ longitud de text ≤ 100.000

Ejemplos

Ejemplo 1
Entrada:
text = "The cat sat on the mat. The end!"

Salida esperada:
expected = ["the", "cat", "end", "mat", "on", "sat"]
Entrada:
std::string text = "The cat sat on the mat. The end!";

Salida esperada:
std::vector<std::string> expected = {"the", "cat", "end", "mat", "on", "sat"};
Entrada:
string text = "The cat sat on the mat. The end!";

Salida esperada:
string[] expected = new string[] {"the", "cat", "end", "mat", "on", "sat"};

Explicación

En minúsculas, las palabras son the, cat, sat, on, the, mat, the, end. "the" aparece 3 veces; las demás aparecen una vez y se ordenan alfabéticamente: ["the", "cat", "end", "mat", "on", "sat"].

Ejemplo 2
Entrada:
text = "AI, ai and A.I. (2024)"

Salida esperada:
expected = ["ai", "2024", "a", "and", "i"]
Entrada:
std::string text = "AI, ai and A.I. (2024)";

Salida esperada:
std::vector<std::string> expected = {"ai", "2024", "a", "and", "i"};
Entrada:
string text = "AI, ai and A.I. (2024)";

Salida esperada:
string[] expected = new string[] {"ai", "2024", "a", "and", "i"};

Explicación

Palabras: ai, ai, and, a, i, 2024. "ai" aparece dos veces; las demás una vez, ordenadas alfabéticamente con los dígitos antes que las letras: ["ai", "2024", "a", "and", "i"].

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.