Tous les défis
Facile 0 résolus 0 % de réussite

Tokeniseur de mots et vocabulaire

Découpez un texte en mots en minuscules et construisez un vocabulaire trié par fréquence, la première étape de tout modèle de langage.

Ce que vous allez apprendre

  • Découper un texte en jetons de mots en minuscules
  • Compter la fréquence des mots
  • Trier un vocabulaire par fréquence, puis par ordre alphabétique

Problème

Les modèles de langage travaillent sur des tokens, pas sur du texte brut. Un tokeniseur simple met le texte en minuscules et traite chaque suite de lettres a-z et de chiffres 0-9 comme un mot ; tout le reste (espaces, ponctuation, autres caractères) sépare les mots.

Construisez le vocabulaire : les mots distincts triés par fréquence (le plus fréquent en premier), avec les égalités départagées par ordre alphabétique. La position d'un mot dans cette liste est son identifiant de token.

Implémentez build_vocabulary(text).

Entrée

text : Un texte quelconque.

Sortie

Renvoyez le vocabulaire sous forme de liste de mots. Si le texte ne contient aucun mot, renvoyez une liste vide.

Contraintes

0 ≤ longueur de text ≤ 100 000

Exemples

Exemple 1
Entrée :
text = "The cat sat on the mat. The end!"

Sortie attendue :
expected = ["the", "cat", "end", "mat", "on", "sat"]
Entrée :
std::string text = "The cat sat on the mat. The end!";

Sortie attendue :
std::vector<std::string> expected = {"the", "cat", "end", "mat", "on", "sat"};
Entrée :
string text = "The cat sat on the mat. The end!";

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

Explication

En minuscules, les mots sont the, cat, sat, on, the, mat, the, end. "the" apparaît 3 fois ; les autres apparaissent une fois et sont triés par ordre alphabétique : ["the", "cat", "end", "mat", "on", "sat"].

Exemple 2
Entrée :
text = "AI, ai and A.I. (2024)"

Sortie attendue :
expected = ["ai", "2024", "a", "and", "i"]
Entrée :
std::string text = "AI, ai and A.I. (2024)";

Sortie attendue :
std::vector<std::string> expected = {"ai", "2024", "a", "and", "i"};
Entrée :
string text = "AI, ai and A.I. (2024)";

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

Explication

Mots : ai, ai, and, a, i, 2024. "ai" apparaît deux fois ; les autres une fois, triés par ordre alphabétique avec les chiffres avant les lettres : ["ai", "2024", "a", "and", "i"].

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.