fréquences des syllables et types

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Faute de frappe dans le titre, c'est syllabes et pas syllables x)

Salut !

Pour un petit projet vite fait (commencé y 15 minutes, plié en 5, mais j'aimerai l'améliorer ^^), j'ai besoin de connaitre les types de syllabes.

Pour le moment j'en ai identifié 4 :

01, 012, 001, 010, et 10

explications : un nombre pair désigne une consonne (et un impair une voyelle). si on réutilise un même nombre dans une règle, on réutilisera la même lettre que l'on avait choisi

le code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import random

voyelles = "aeiouy"
consonnes = "".join(chr(c) for c in range(ord('a'), ord('z') + 1) if chr(c) not in voyelles)
all_rules = [
    # pair : consonnes
    # impair : voyelles
    "01", "012", "001", "010", "10"
]
rules_choice = list(map(int, input("Rules Choice :\n\t" + "\n\t".join("[%i] %s" % (i, ar) for i, ar in enumerate(all_rules)) + "\n> ").split(" ")))
rules = [rule for i, rule in enumerate(all_rules) if i in rules_choice]
min_len, max_len, count = list(map(int, input("Min length, max length, count : ").split(" ")))
for e in range(count):
    length, work = random.randint(min_len, max_len + 1), ""
    while len(work) < length:
        rule = list(map(int, list(random.choice(rules))))
        syllabe = ""
        for i, c in enumerate(rule):
            syllabe += syllabe[rule.index(c)] if rule[:i].count(c) > 1 else random.choice(voyelles if c % 2 else consonnes)
        work += syllabe
    print("[%3i] %s" % (e, work))

Merci de votre aide :)

EDIT: et pour montrer que ça marche plutôt bien :

 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
H:\Atom>pseudo_generator
Rules Choice :
        [0] 01
        [1] 012
        [2] 001
        [3] 010
        [4] 10
> 0 1 2 3 4
Min length, max length, count : 5 8 20
[  0] babegunwmo
[  1] baqavsar
[  2] tcoytukpul
[  3] gizajpwuwef
[  4] zybnuh
[  5] hesib
[  6] zetxaep
[  7] veubxju
[  8] vasuen
[  9] quiwmebux
[ 10] qinkbukjo
[ 11] qypbuqezcoz
[ 12] todbotcyv
[ 13] minxsexeyl
[ 14] sfoaxym
[ 15] kawbiacdip
[ 16] jalhujka
[ 17] tejnev
[ 18] wzaseq
[ 19] fyffuyp

Édité par Cithoran

Ma chaine YouTube ! | Seventh, un micro langage communautaire ! | Mon projet : Unamed (en pleine reprogrammation en C++11/SFML2.4) | Mon tuto sur Pygame !

+0 -0

Sans lire le code, je pense que j'aurais rien compris. Un exemple aurait peut-être aidé.

Bon, maintenant que j'ai compris.

Tu veux quoi au juste ? Ton programme génère des mots peu probable en français mais génère des mots prononçables, et c'est déjà cool.

Pour avoir des mots qui ressemblent vraiment à une langage en particulier, il faudrait analyser les mots de la langue en partant d'un dictionnaire. En gros, analyser les syllabes et association de lettres, garder ceux qui correspondent à un son et sélectionner ces syllabes là uniquement.

Justement, en ce moment, je travail sur un projet de dictionnaire français hors-ligne …

ache.one                                                                                   🦊

+2 -0

Et que veux-tu au juste du coup ?

Car ton programme donne bien de mots prononçable :D

Difficilement, certes, mais prononçable :D

ache.one                                                                                   🦊

+1 -0

Cette réponse a aidé l'auteur du sujet

Salut,

Des noms juste "prononçables" ça sera jamais joli je pense (sauf coup de chance). Si tu veux quelque chose de plus cohérent je partirai sur l'approche de ache, à savoir analyser des mots d'une langue (notamment avec des chaînes de Markov). Quand une langue se construit, on a tendance à garder les mêmes syllabes car elles sonnent bien. Les mots on en quelque sorte déjà subi le filtre de l'oreille humaine, donc ça sera forcément plus joli.

Anciennement AlphaZeta

+1 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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