• # Je ne ferais pas ça comme ça.

    Posté par . En réponse au journal Analyse de texte. Évalué à 4.

    Mon but est d’analyser la fréquence de syllabes ou de mots depuis différents textes.

    Les syllabes ? Les mots ? Les deux ? Dans la même base ???

    Je pense que le problème se situe dans mes interactions avec la base de données.

    As-tu au moins essayé de mettre une trace entre l’analyse du texte et la mise à jour de la base de données pour en être sûr ?

    Pour l’analyse du texte, je ne dis pas que ça impacte les performances (normalement, ça les améliorerait, mais avec le coup du remplacement de chaîne relancé à chaque caractère, c’est moins sûr), mais tu fais un truc genre prise de tête en C avec des MAXLEN, des buf... ce n’est même pas évident de voir ce que ça fait exactement et si c’est ce qui est attendu, alors que tu utilises un langage de script avec un type chaîne dynamique, des expressions régulières...
    Si tu veux la performance pure, ce n’est pas le meilleur langage. Si tu utilises un langage de haut niveau, autant en profiter pour faire quelque chose de plus compréhensible.

    Personnellement, je lirais l’entrée par ligne, je splitterais sur les espaces et signes de ponctuation (ou tout ce qui n’est pas une lettre), comme ça, j’aurais directement les mots et ensuite seulement, pour chaque mot, j’itérerais sur la lettre de départ et la longueur pour avoir les groupes de lettres.
    Là, il ne s’agirait que des groupes de lettres et pas vraiment des syllabes, mais je n’ai pas l’impression que ton code fasse mieux. Le découpage en véritables syllabes d’un mot (est-ce réellement ce dont tu as besoin ?) est un problème nettement moins trivial.

    Si je devais faire ça en C, je ne ferais pas comme toi non plus. Je lirais aussi par ligne (même avec le C, on peut !), voire je chargerais tout le texte en mémoire (mon premier ordinateur avait 8 Ko de mémoire, mais on n’en est plus là), j’itérerais sur le caractère de la ligne (ou du texte complet dans le deuxième cas), si ce n’est pas une lettre, je viderais le mot courant, sinon, je lui ajouterai la lettre et pour les groupes de lettres, j’itérerais sur la longueur jusqu’au caractère courant du mot. Ainsi, pas de remplacements de chaînes ni de popleft...

    « Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone