Je dois trouver un moyen assez efficace de détecter les syllabes dans un mot. Par exemple,
Invisible -> in-vi-sib-le
Il existe certaines règles de syllabation qui pourraient être utilisées :
V CV VC CVC CCV CCCV CVCC
*où V est une voyelle et C une consonne. Par exemple,
Prononciation (5 Pro-nun-ci-a-tion ; CV-CVC-CV-V-CVC)
J'ai essayé plusieurs méthodes, parmi lesquelles l'utilisation de regex (qui n'est utile que si l'on veut compter les syllabes) ou la définition de règles codées en dur (une approche par force brute qui s'avère très inefficace) et enfin l'utilisation d'un automate à états finis (qui n'a rien donné d'utile).
Le but de mon application est de créer un dictionnaire de toutes les syllabes d'une langue donnée. Ce dictionnaire sera ensuite utilisé pour des applications de correction orthographique (à l'aide de classificateurs bayésiens) et de synthèse vocale.
J'apprécierais si quelqu'un pouvait me donner des conseils sur une autre façon de résoudre ce problème en dehors de mes approches précédentes.
Je travaille en Java, mais toute astuce en C/C++, C#, Python, Perl... me conviendrait.
0 votes
Voulez-vous vraiment les points de division réels ou juste le nombre de syllabes dans un mot ? Dans ce dernier cas, envisagez de rechercher les mots dans un dictionnaire de synthèse vocale et de compter les phonèmes qui codent les voyelles.
0 votes
La méthode la plus efficace (en termes de calcul et non de stockage) serait d'avoir un dictionnaire Python avec des mots comme clés et le nombre de syllabes comme valeurs. Cependant, vous auriez toujours besoin d'une solution de repli pour les mots qui ne figurent pas dans le dictionnaire. Faites-moi savoir si vous trouvez un tel dictionnaire !