Avant l’explication, une capture d’écran et le lien de téléchargement (pour ceux qui ne sont pas intéressé par la technique).

Télécharger le programme.
Hier j’avais envie de me mettre sérieusement au chinois, en prenant un texte à bras le corps.
Évidemment il ne m’a pas fallu plus de 30 secondes pour me rendre compte que la non segmentation des phrases allait me poser problème, notamment pour chercher du vocabulaire.
Je me suis donc mis à la recherche du segmenter, un lexer, un word splitter, bref appelez ça comme vous voulez, mais il me fallait quelque chose qui découpe mes phrases.
Comme je n’ai rien trouvé j’ai décidé de faire le travail moi-même, sur la base d’un algorithme particulièrement stupide (d’où le nom réel du programme, qui n’est pas vraiment « simple ») suivant :
On utilise un pointeur sur le caractère courant, initialisé au début de la chaîne
TANT QUE ce pointeur n’a pas atteint la fin de la chaîne à analyser
on regarde si les 4 prochain caractères existent dans le dictionnaires
SI un tel mot existe ALORS on l’affiche sur la sortie et on augmente le pointeur de 4
SINON on ressaye avec une longueur de 3, puis 2, puis 1 et si quelque chose est trouvé on l’affichage et on augmente le pointeur en conséquence.
En fait, comme un dictionnaire est utilisé, l’affichage n’est pas seulement celui de l’élément trouvé : il est également accompagné de sa définition.
Le dictionnaire cfdict.xml à été utilisé. Il a été modifié pour obtenir une version plus petite qui ne contient que les entrées qui existent sous forme traditionnelles et qui font au plus 4 caractères.
Le programme va donc chercher les mots qu’il trouve et les affiche. Il est codé à l’arrache, mais il fait le boulot 🙂
Record personnel du temps de développement d’un soft utile battu : quelques heures.