Bonjour djibril,
Je ne connais pas de module Perl faisant la césure de mot en syllabes, mais j'avais fait çà en C
, il y a près d'une trentaine d'années pour une "phonétisation", plutôt une simplification orthographique pour un thésaurus...
De mémoire, la fonction faisait le découpage en tout au plus une trentaine de lignes.
La piste que j'avais utilisé :
- Mettre le mot dans un tableau, pour accéder à chaque lettre
- Pour chaque lettre déterminer s'il s'agit d'une consonne ou d'une voyelle
Lire le tableau et appliquer les règles :
Celles dont je me souviens de mémoire :
- Si 2 consonnes se suivent on fait une césure entre les deux consonnes
- Si une ou plusieurs voyelles est/sont suivie(s) par une consonne, on coupe juste devant la consonne
Il y a une petite dizaine d'exception...
...
Un mot ne contient pas plus de 5 consonnes successives, le seul que j'ai rencontré à ce jour est
NietzscheTiens, je viens de trouver
çà, ça ne devrait pas te poser de pb de programmation Perl
Je n'ai plus l'utilité d'un tel module, mais l'idée est excellente !
[EDIT 06:55] Code C
Tiens je viens de retrouver dans mes archives un bout de code C, ce n'est probablement pas le dernier...
NB : Il ne s'agissait pas de coller absolument aux règles de grammaire, mais de contourner avant tout les fautes d'orthographes de textes écrits par de nombreux personnels...
Le module gérait également les locutions et leurs synonymies... Ex :
Transport de matière dangereuse = Transport matière fissile = Transport matière radioactive...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| /* CESURES */
cesu(motinit,motcesures)
char motinit[];
char motcesures[];
{
int i=0,j=0,voyrencontre=0;
while (motinit[i]!='\0')
{
if (estvoy(motinit[i])) /* VOYELLES */
if (estvoy(motinit[i]) && /* glu-ant */
(motinit[i-1]=='u' && /* mar-quant */
motinit[i-2]!='q' && /* u-a -quant */
motinit[i-2]!='g') &&
(motinit[i]=='i' &&
motinit[i+1]=='n'))
{
motcesures[j++]='-';
motcesures[j++]=motinit[i++];
}
else
{ /* cas general */
motcesures[j++]=motinit[i++]; /* te-te */
voyrencontre=1;
}
else /* CONSONNES */
if (motinit[i+1]=='l' && motinit[i]!='l' /* e-xem-ple */
&& motinit[i]!='h' /* a-phro-di-te */
&& motinit[i]!='r' /* sur-li-gne */
&& i!=0) /* -phr -pl */
{
motcesures[j++]='-';
motcesures[j++]=motinit[i++];
voyrencontre=0;
}
else /* im-pri-me */
if (motinit[i+1]=='r' && motinit[i]!='r' /* -pr */
&& motinit[i]!='h'
&& motinit[i]!='n' /* en-registre */
&& i!=0)
{
motcesures[j++]='-';
motcesures[j++]=motinit[i++];
voyrencontre=0;
}
else /* am-phi-thea-tre */
if (motinit[i+1]=='h' && i!=0 && /* de-clen-cher */
(motinit[i]=='c' || /* embau-cher */
motinit[i]=='p' || /* -ch -ph -th */
motinit[i]=='t'))
{
motcesures[j++]='-';
motcesures[j++]=motinit[i++];
voyrencontre=0;
}
else /* cham-pa-gne */
if (motinit[i+1]=='n' && /* -gn */
motinit[i]=='g' && i!=0)
{
motcesures[j++]='-';
motcesures[j++]=motinit[i++];
voyrencontre=0;
}
else
if (estvoy(motinit[i+1]) && /* cas generaux */
i!=0 && voyrencontre) /* voyelle deja */
{ /* rencontree */
motcesures[j++]='-';
motcesures[j++]=motinit[i++];
}
else
motcesures[j++]=motinit[i++]; /* voyelle pas */
} /* encore ren- */
motcesures[j]='\0'; /* contree */
} |
NB : Les commentaires expriment l'idée générale de la règle et ne correspondent pas systématiquement au code C qui précède
J'ai perdu le reste
Je m'étais également aidé du
Dictionnaire des rimes orales et écrites
Bon courage
0 |
0 |