Savoir si une chaîne de caractères est prononçable

a marqué ce sujet comme résolu.

Salut à tous !

J'ai besoin de créer une fonction qui permet de savoir si une chaîne de caractères est prononçable.

Quels sont les critères qui définissent si une chaîne de caractères est prononçable ? Quels sont les critères qui diffères selon les langues ?

Voilà, je suis sûr que c'est très simple à faire, mais j'ai besoin de faire algo de qualité …

+0 -0

Salut,

De manière naïve, j'opterais pour une analyse de chaque mot composant la chaîne afin de vérifier si ceux-ci se composent tous de syllabes correctes dans la langue souhaitée. Ceci implique de mettre en place une base de données comportant toutes les syllabes existantes pour chaque langue.

Sinon, je doute qu'il soit possible de trouver une règle générale pour détecter une syllabe étant donné les divergenses entre les différentes langues.

+0 -0

Je ne suis pas spécialiste, du domaine, et encore moins spécialiste en langues.

Ceci dit, voici quelques idées :

  • Tu peux lire le contenu d'un dictionnaire de mot (tu peux en trouver facilement sur le net, qui contiennent des dizaines de milliers de mots français, parfois même conjugués), et tu répertories toutes les syllabes que tu croises : tu les découpes avec des règles explicites (propres au français), tu t'interdis de couper au milieu d'un ensemble de voyelles, tu coupes au milieu des consonnes lorsqu'il y a répétition (par exemple "ll" ou "mm") ou à la fin d'un groupe de voyelles, etc… tu obtiendras une liste de syllabes dont tu es sûr qu'elles sont prononçables puisque appartenant à la langue française, tu peux ainsi créer une base de données et chercher à "matcher" ces syllabes avec ta chaine de caractère : si tu trouves une syllabe dans ta base de données pour chaque ensemble de lettres (découpé de la façon qui te plaira) tu en concluras que ta chaine de caractère est prononçable.
    Ici le seuil de tolérance est assez bas, car tu n'autorises pas des inventions peut-être prononçables mais présentes dans aucun mot : tu utilises une liste blanche.

  • Plutôt que d'identifier les motifs prononçables, tu identifies ceux qui en le sont pas, sur des critères heuristiques tels qu'une suite contigüe trop longue de voyelles ou de consonnes par exemple, ou certaines associations de consonnes qui ne fonctionnent pas. Ici le seuil de tolérance sera très élevé puisque tu fonctionnes par "liste noire".

Dans tout les cas, il faudra choisir un nombre de lettres pour servir à définir la taille de chacun de tes phonèmes : s'il est trop petit ton algo sera stupide car trop peu nuancé, s'il est trop élevé ton algo sera difficile à paramétrer car tu assisteras à une explosion combinatoire (tu as $26^N$ mots de N lettres sur un alphabet de 26 lettres).

Tu peux te ramener à un alphabet de 26 lettres en considérant que les "ç" sont identiques aux "s" dans certains contextes (avant des voyelles, mais pas à la fin d'un mot) ou les "é" les "è" et les "ê" identiques aux "e"…

Le principal problème de ton, euh.. problème, c'est pas tant l'algo que la définition précise de ce qui est "prononçable", car dans l'absolu, tout l'est, y compris "zlptfrrrnkv", mais ce qui va varier c'est la fluidité de prononciation, etc… voilà pourquoi j'ai une préférence pour la méthode numéro 1 qui fonctionne sur une base d'apprentissage, qui à rajouter des extensions "explicites" pour la rendre plus tolérante.

Tu peux construire un graphe, à l'aide d'un arbre lexicographique, des successeurs "habituels" de chaque lettre ou groupe de lettre (typiquement les essais montrent qu'un français, 3 lettres est ce qui marche le mieux), ainsi on ne trouve jamais de "r" après un "l" par exemple (bien que ce soit prononçable !).

+0 -0

Je dirais décomposer un mot en phonèmes. Et voir si la suite de phonemes est prononcable ou non (j'ai pas mieux que faire une liste de suites prononcables). Mais j'avoue que le sujet est intéressant et je serais intéressé par une réponse.

Voilà, je suis sûr que c'est très simple à faire

Non. C'est au contraire assez compliqué.

Déjà, comme soulevé par Algue-Rythme, il y a un problème de définition : c'est quoi un mot prononçable ?

  • Est-ce un mot qu'un locuteur ordinaire d'une langue donnée sera capable de prononcer ? C'est extrêmement variable d'une langue à l'autre : par exemple, le son -u- du français est très difficile à prononcer pour beaucoup d'étrangers. Et donner une description précise de cela est très hasardeux.
  • Est-ce un mot qui, entendu par un locuteur natif, pourra être considéré comme appartenant à sa langue, même s'il ne le connaît pas ? Par exemple, le mot prononcé /pétrikor/ sonne français, même si vous ne le connaissez pas, alors que /gwadalkivir/ n'est clairement pas un mot français. J'ignore s'il existe des études plus poussées sur le sujet que déterminer la forme que peut prendre une syllabe ; en tout cas, je n'en ai pas trouvé après une recherche rapide.

Ensuite, si tu pars d'un texte écrit et non d'une transcription phonétique, tu vas te heurter à un deuxième problème : l'orthographe du français ou celle de l'anglais n'ont rien de simple. Pire encore : elle sont ambiguës ! Il est ainsi impossible, en l'absence de contexte, de savoir comment doit se prononcer « convergent » ou « fils » ou read en anglais.

Du coup, ton problème n'a rien d'anodin. Et je te poserai une dernière question : selon toi, est-ce que « denstlibrasque » est prononçable ? Le mot n'existe bien évidemment pas, et ne peut pas exister en français.

+1 -0

C'est à mon avis quelque chose qui est loin d'être aussi trivial que tu le penses.

Une approche (aucune idée de sa valeur) pourrait être se baser sur cette page et avec une analyse par fenêtre glissante croissante sur ta chaine de caractère, voir si tu détectes que des patterns qui sont présents dans la liste (et donc à priori prononçable). Même si j'ignore s'il n'y pas des couples de phonèmes incompatibles ou autres subtilités de ce genre.

D'autres pistes ici

Mais c'est le genre de thématique qui doit bien occuper certains labos et chercheurs en linguistiques

+0 -0

Très intéressent tout ça :)

Je vais essayer de faire un petit algo qui génère des "mots" aléatoires qui soient prononçables (en français) en prenant en compte tout ce que vous m'avez dit précédemment. D'ailleurs je vous invites à le faire aussi si ça vous tentes ;)

P.S : Pour ma part, l’idéale serait de pouvoir créer un algorithme qui génère des mots prononçables dans un maximum de pays (des mots comme Adidas, Coca Cola …).

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte