Sujet: Le générateur de vocabulaire Sam 23 Sep 2023 - 18:44
Peut-être que certains ici se souviennent encore de moi, ça fait longtemps que je ne suis pas venu !
J'ai récemment codé, sans prétention (c'est pas du tout mon métier, je suis plus en codeur occasionnel), un générateur de vocabulaire, suivant une langue ou idéolangue donnée. Il suffit de donner une liste plus ou moins fournie de mots dans la langue désirée (quelques dizaines de mots peuvent déjà donner des résultats).
Comme à l'inverse du Kus j'ai un peu de mal à créér du vocabulaire en sétolais (qui me plaise à l'oreille), j'ai eu cette idée pour m'y aider. Depuis j'ai une liste de 300 mots potentiels candidats, reste plus qu'à leur trouver un sens (le revers de la médaille !)
D'après mes expérimentations, la profil de la langue joue beaucoup dans la qualité du vocabulaire généré. Par exemple ça fonctionne très bien en sétolais (une des mes idéolangues) mais moins bien en français, sûrement parce que le français à plus de suites de consonnes que le sétolais.
Principe de fonctionnement :
D'abord l'algorithme fait une analyse de la langue en répertoriant toutes les fréquences de combinaisons de deux lettres, sous forme de tableau : sur les lignes [a,b,c,....] et idem sur les colonnes [a,b,c,...]. À chaque fois que l'algorithme rencontre le schéma lettre 1 + lettre 2 il ajoute +1 dans la case correspondant à la ligne lettre 1 et colonne lettre 2. Le principe est plutôt simple.
Il y a également une analyse de la taille des mots, en répertoriant les différentes fréquences. Plus technique également (ça a été un vrai calvaire à coder !) les lettres sont également répertoriées selon leurs positions dans les différents mots. Enfin, j'ai ajouté une option qui répertorie les triplets (ou plus) de lettres de même type, consonnes ou voyelles, pour éviter les schémas du type prrs, eaoiu,...
Dans un second temps, lors de la génération de mots en elle-même, ceux-ci sont générés aléatoirement : - d'abord en tirant aléatoirement une longueur de mot, suivant des poids de probabilité correspondant aux fréquences des tailles de mots du vocabulaire, - ensuite lettre par lettre, un multipliant la fréquence des lettres entre elles avec les fréquences des positions des lettres dans les différents mot de la liste d'entrée, - si le module de "réécriture" est activé, les triplets de consonnes ou voyelles qui n'ont pas été rencontrés dans le vocabulaire sont réécris (même si en toute honnêteté j'ai l'impression de perdre un peu en qualité en l'appliquant en français).
Quelques exemples
En français, en utilisant 200 mots en entrée, j'obtiens : ['pre', 'oitrue', 'cupoie', 'lain', 'meren', 'sellie', 'iltalene', 'froile', 'plerion', 'étise'] ,
mais aussi des résultats des fois franchement moins bons : ['tenthe', 'clle', 'bisen', 'frleritilis', 'tieariosce', 'viouence', 'tttin', 'llèrne', 'ciletahan', 'tereanttoiean'] (option de réécriture désactivée, on voit bien le problème des suites de consonnes improbables comme 'ttt' ou 'frl' etc.)
Avec le module de réécriture activé : ['plonailenen', 'curon', 'pure', 'préon', 'vaicoa', 'getie', 'guré', 'pinerionn', 'lernou', 'vinorilenule'] - on n'a plus ces problèmes de suites improbables mais je trouve qu'on perd peut-être un peu de vraisemblance.)
En portugais, avec 61 mots : ['car', 'dano', 'arar', 'doiditea', 'ameitoa', 'marado', 'mentanietto', 'alança', 'ssom', 'cecenia']
En sétolais, avec 195 mots : ['torar', 'fora', 'yodona', 'alelya', 'ilan', 'urerendatoria', 'ceiladoreinoa', 'moera', 'irianal', 'foniroa'] - C'est fidèle à la langue et globalement y'a fréquemment des mots qui me plaisent, pas toujours, mais assez quand même.
Bien entendu, le résultat est variable et critiquable, mais je pense qu'il offre quand même la possibilité d'aider la création idéolanguistique si vous êtes dans le même cas que moi (j'entends bien que pour certains d'entre vous, le plaisir est justement dans la création du vocabulaire).
Si vous voulez tester
Vous pouvez faire un liste de votre idéolangue, sous la forme suivante : entre deux crochets [ ], limitez chaque mot par '. Par exemple, ['bonjour', 'moine', 'terre', 'train', 'fraise', 'asticot', 'camionnette', 'anthropologue', 'inconstitutionnel', 'troupeau', 'loin', 'proche', 'semblable','autorité', 'république', 'amande', 'framboise', 'rocher'] est le bon format d'une liste prête à l'emploi.
Si jamais vous avez des caractères spéciaux non présents dans la liste suivante, il faut impérativement me les indiquer, sinon je vais en baver
Également, faites attention aux espaces oubliés, du type 'fraise ', sinon également je vais devoir éplucher chaque mot méticuleusement pour trouver où est l'erreur.
Je peux générer le nombre de mots que vous désirez. Si votre idéolangue possède beaucoup de suites de voyelles ou consonnes, je vous conseille l'option de réécriture.
Je pourrais aussi mettre le code à disposition si certains d'entre vous le souhaitent (même si ça sera peut-être compliqué de le lire !)
Voilà
Anoev, Olivier Simon et Velonzio Noeudefée aiment ce message
Anoev Modérateur
Messages : 37610 Date d'inscription : 16/10/2008 Localisation : Île-de-France
Sujet: Re: Le générateur de vocabulaire Sam 23 Sep 2023 - 19:19
Beau travail, manqdebol, l'aneuvien ne manque pas de diacritiques, mais aussi trois caractères spéciaux (heureusement jamais diacrités) : le Æ, le Œ et le Ψ. En plus de ça, dans un même mot, certaines lettres ne peuvent pas cohabiter, comme par exemple é_è, à_œ. Par contre on peut avoir un mot commençant par rr- (rris = lime) ou hh- (hhir = main). Ç'a arrange pas les choses. consonnes doublables : bb, dd, ff, gg (rare), hh, kk, ll, mm, nn, pp, rr, ss, tt, zz (rare). On peut trouver des chapelets de consonnes, mais vraiment, j'évite, surtout quand je fais des agglutinations* sinon, ph et kh n'existent plus depuis belle lurette, remplacés respectiv'ment par qb et q. et... c'est pas fini ! Sinon, l'orthographa aneuvienne est simple (si, si !).
*Ainsi, infàntdu (enfant < 6 ans) est devenu ifàndu, par contre, kaṅtdu (chanteur) a subsisté (le T est amuï à la prononciation) : on n'est à l'abri de rien !
_________________
Pœr æse qua stane:
Pour ceux qui restent.
Dernière édition par Anoev le Sam 23 Sep 2023 - 19:24, édité 1 fois
PatrikGC
Messages : 6732 Date d'inscription : 28/02/2010 Localisation : France - Nord
Sujet: Re: Le générateur de vocabulaire Sam 23 Sep 2023 - 19:20
Je demande à voir la chose J'ai déjà utilisé ce genre de générateur, j'en ai même écrit. Mon tout premier date du début des années 80.
As-tu prévu d'associer un "poids" à chacun de tes "morceaux" de mot ? Je parle de "morceaux" pour indiquer des choses comme "ou", "ai', "ch", "eau" etc.
Je m'explique pour le poids : Je prends pour exemple les voyelles. En français, le "e" est nettement plus utilisé que le "i" par exemple. On peut arbitrairement associer un poids de 10 au "e" et de 2 au "i", ce qui fait que le "e" aura 5 fois plus de proba de sortir que le "i". On peut aussi raisonner en %.
Anoev Modérateur
Messages : 37610 Date d'inscription : 16/10/2008 Localisation : Île-de-France
Sujet: Re: Le générateur de vocabulaire Sam 23 Sep 2023 - 19:29
PatrikGC a écrit:
Je m'explique pour le poids : Je prends pour exemple les voyelles. En français, le "e" est nettement plus utilisé que le "i" par exemple. On peut arbitrairement associer un poids de 10 au "e" et de 2 au "i", ce qui fait que le "e" aura 5 fois plus de proba de sortir que le "i". On peut aussi raisonner en %.
On peut toujours s'inspirer de nombre de certaines voyelles du Scrabble. Toutes valent 1 point sauf le Y (10), mais y a 15 E, 9 A, 8 I, 6 O et 6 U. Ça peut aider.
_________________
Pœr æse qua stane:
Pour ceux qui restent.
PatrikGC
Messages : 6732 Date d'inscription : 28/02/2010 Localisation : France - Nord
Sujet: Re: Le générateur de vocabulaire Sam 23 Sep 2023 - 19:40
Anoev a écrit:
PatrikGC a écrit:
Je m'explique pour le poids : Je prends pour exemple les voyelles. En français, le "e" est nettement plus utilisé que le "i" par exemple. On peut arbitrairement associer un poids de 10 au "e" et de 2 au "i", ce qui fait que le "e" aura 5 fois plus de proba de sortir que le "i". On peut aussi raisonner en %.
On peut toujours s'inspirer de nombre de certaines voyelles du Scrabble. Toutes valent 1 point sauf le Y (10), mais y a 15 E, 9 A, 8 I, 6 O et 6 U. Ça peut aider.
La fréquence des lettres varie en fonction de la langue visée...
Anoev Modérateur
Messages : 37610 Date d'inscription : 16/10/2008 Localisation : Île-de-France
Sujet: Re: Le générateur de vocabulaire Sam 23 Sep 2023 - 19:47
PatrikGC a écrit:
La fréquence des lettres varie en fonction de la langue visée...
Évidemment, je suppose que, dans un Scrabble slovaque, on n'aura pas le même nombre de jetons par lettre (pour un K, par exemple) que dans un Scrabble portugais ; ça coule de source.
_________________
Pœr æse qua stane:
Pour ceux qui restent.
Setodest
Messages : 431 Date d'inscription : 22/03/2013
Sujet: Re: Le générateur de vocabulaire Dim 24 Sep 2023 - 0:55
Anoev a écrit:
Beau travail, manqdebol, l'aneuvien ne manque pas de diacritiques, mais aussi trois caractères spéciaux (heureusement jamais diacrités) : le Æ, le Œ et le Ψ. En plus de ça, dans un même mot, certaines lettres ne peuvent pas cohabiter, comme par exemple é_è, à_œ. Par contre on peut avoir un mot commençant par rr- (rris = lime) ou hh- (hhir = main). Ç'a arrange pas les choses. consonnes doublables : bb, dd, ff, gg (rare), hh, kk, ll, mm, nn, pp, rr, ss, tt, zz (rare). On peut trouver des chapelets de consonnes, mais vraiment, j'évite, surtout quand je fais des agglutinations* sinon, ph et kh n'existent plus depuis belle lurette, remplacés respectiv'ment par qb et q. et... c'est pas fini ! Sinon, l'orthographa aneuvienne est simple (si, si !).
*Ainsi, infàntdu (enfant < 6 ans) est devenu ifàndu, par contre, kaṅtdu (chanteur) a subsisté (le T est amuï à la prononciation) : on n'est à l'abri de rien !
Merci Anoev. En fait les diacritiques ne sont pas trop un problème, la seule "difficulté" c'est celles qui n'apparaissent qu'une fois par mot, mais j'ai aussi le cas en sétolais. Pour le moment je n'ai pas encore implémenté la solution mais j'y ai déjà pensé : j'ai juste à créer une liste dans laquelle je liste les caractères uniques (par mot). Puis une fois qu'ils apparaissent je modifie leur poids à 0 pour qu'ils n'apparaissent plus. Après si jamais y'a des erreurs ou manques dans les mots générés généralement je corrige ou adapte, c'est d'autant plus facile quand on a beaucoup travaillé l'idéolangue.
Idem pour les Æ, le Œ et le Ψ, ça ne pose aucun problème du moment qu'ils sont référencés dans les listes de départ. Bon, il faut qu'ils soient en minuscule par contre, parce que l'algo différencie minuscule et majuscule. Les mots générés dépendent des mots de la liste de vocabulaire initiale : par exemple, si ψ n'apparaît qu'une fois, sa probabilité d'apparition dans les mots générés sera très faible. La liste d'entrée doit donc être équilibrée.
Je t'invite même à essayer, il n'y a pas besoin d'énormément de mots franchement
PatrikGC a écrit:
Je demande à voir la chose J'ai déjà utilisé ce genre de générateur, j'en ai même écrit. Mon tout premier date du début des années 80.
As-tu prévu d'associer un "poids" à chacun de tes "morceaux" de mot ? Je parle de "morceaux" pour indiquer des choses comme "ou", "ai', "ch", "eau" etc.
Je m'explique pour le poids : Je prends pour exemple les voyelles. En français, le "e" est nettement plus utilisé que le "i" par exemple. On peut arbitrairement associer un poids de 10 au "e" et de 2 au "i", ce qui fait que le "e" aura 5 fois plus de proba de sortir que le "i". On peut aussi raisonner en %.
En fait je ne mesure pas le nombre d'apparition de chaque lettres dans le vocabulaire, je mesure plutôt le nombre d'apparitions de duo de lettres, c'est je dirais le point pivot de toute la méthode de génération. Ça permet à la fois de mesurer la fréquence des lettres individuellement mais aussi dans quel "environnement" elles apparaissent : en français on rencontre souvent le doublet ou mais très peu uo, ce qui est pris en compte lors de l'analyse du vocabulaire, ce qui ne serait pas possible en mesurant seulement le nombre d'apparitions de u et o individuellement.
Par exemple le mot "immense": - l'algorithme étudie d'abord le doublet im -> il cherche la ligne i puis la colonne m -> il existe un cellule qui y correspond, il lui ajoute 1. - ensuite il passe à mm, idem il cherche la ligne m et la colonne m -> il ajoute +1. - ainsi de suite jusqu'au doublet se -> ligne s puis colonne e -> +1 dans la cellule correspondante
J'ai fait le choix de considérer que les lignes constituent les premières lettres des doublets et les colonnes les deuxièmes. À la fin on se retrouve avec un tableau avec des nombres entiers qui correspondent au nombre de fois qu'un doublet est présent dans le vocabulaire. En français, j'ai ra (27 apparitions), ri (20), no (19), on (18).. pour l'exemple qui sont les plus grandes fréquences. Pas besoin de fixer des poids arbitrairement donc. (ça sous-entend que la liste de départ n'est pas biaisée).
Donc pour répondre, ou, ai et ch ont tous un poids défini suite à l'analyse. De même, eau est un triplet de lettres du même type, donc il est répertorié (dans une autre table spécifique). D'ailleurs ce trigramme en particulier est plutôt problématique puisqu'il apparait souvent mais pas l'un de ses "sous-gramme", ea ; mais comme ea a souvent été répertorié dans l'analyse des doublets, il est fréquent dans la génération de mots ! (c'est l'un des problèmes que je devrai corriger dans le futur).
À l'avenir je passerai peut-être à des réseaux de neurones / architectures d'intelligence artificielle du type transformers ou variational autoencoders, je pense que ça vaut le coup de tester.. et de m'y former en même temps
Le code :
Spoiler:
import numpy as np import pandas as pd import random
for mot in vocabulaire: # trouver le nombre de divisions par mot nQ = Q((len(mot)-2) / nl_Qmax) # trouver le nombre de lettre par division par mot nl_Q = int((len(mot)-2)/nQ-0.5)+1 # parcourt des divisions table_pos.loc[mot[0], [1]] += 1 table_pos.loc[mot[-1], [Qmax+2]] += 1
for k in range(1,int(nQ/2+1)): for i in range(1,nl_Q+1): table_pos.loc[mot[i],[2*k]] += 1 table_pos.loc[mot[-(i+1)],[2*k+1]] += 1
# longueur des mots du vocabulaire
long_mots = np.zeros(max(long)) Lm = [i+1 for i in range(len(long_mots))] long_mots = pd.DataFrame(data=long_mots, index=[Lm], columns=['longueur'])
# établissement de la table de la fréquence des lettres entre elles
table = pd.DataFrame(data=table, index = caractères, columns = caractères)
for k in range(len(vocabulaire)):
long_mots.loc[len(vocabulaire[k])] += 1
for i in range(len(vocabulaire[k])-1): table.loc[vocabulaire[k][i],vocabulaire[k][i+1]] += 1
def pos_3(séq, mot): #donne la position d'une séquence donnée dans un mot. 3 positions considérées, début, fin et autre. pos = [0,0,0] if séq in mot: if séq[0] == mot[0]: pos[0] += 1 elif séq[-1] == mot[-1]: pos[-1] += 1 else: pos[1] += 1 else: return 'nope' return pos
def seq_3(mot): #extrait les séquences de + de 3 d'un mot (consonnes ou voyelles à la suite) L=[] Lc = np.zeros(len(mot)) Lv = np.zeros(len(mot)) for l in range(len(mot)): if mot[l] in consonnes: Lc[l]=1 else: Lv[l]=1 #print(Lc, len(mot))
i=0 while i!=len(mot): j = Lc[i] c = 0 while Lc[i]==j: c += 1 #print('i,Lc[i],j=',i,Lc[i],j, 'c=',c) if i == len(mot)-1: i +=1 break else: i += 1
if c>2: m = mot[i-c] #print(m) for k in range(1,c): m = m + mot[i-c+k] #print(k,mot[i-c+k], m) L.append(m)
return L
Lséq = [] Lpos = [] table_3 = pd.DataFrame(columns=['1l','ml','dl']) for mot in vocabulaire: séq = seq_3(mot) if séq!=[]: for k in séq: if séq not in table_3.index.values: table_3.loc[k]=pos_3(k,mot) else: table_3.loc[k]+=pos_3(k,mot)
def reecriture(séq, mot, Lettres): m = séq[0] table_corr = table.copy()
for k in range(1,len(séq)-1): if séq in table_3.index.values: table_corr.loc[séq[k-1],séq[k]] -= table_3.loc[séq].sum() proba = table_corr.loc[séq[k-1]].mul(table_pos[Lettres[mot.find(séq)+k]]) l = random.choices(proba.index, proba[:])[0] m = m + l #print('m=',m)
for k in range(n_mots): # choix aléatoire de la longueur du mot suivant fréquence dans le vocabulaire lg_mot = random.choices(long_mots.index, long_mots['longueur']) nQ = Q((lg_mot[0][0]-2) / nl_Qmax)
for p in range(nl_Q): Lettres[l] = i décompte -= 1 if i%2 == 0: lp += 1 l = lp else: li -= 1 l = li for j in range(len(Lettres)): if Lettres[j]==0: Lettres[j]=i
Mot = random.choices(table_pos.index, table_pos[1])[0] lettre = Mot
#réécriture if rewrite==True: cond=True while cond==True: sequ = seq_3(Mot) if sequ==[]: break for q in sequ: if q not in table_3.index.values: cond=True
elif 2 not in (table_3.loc[q] + pos_3(q,Mot)).values: cond=True else: cond=False if cond==True: new_séq = reecriture(q,Mot,Lettres) Mot = Mot.replace(q,new_séq)
L_mots.append(Mot)
return L_mots
Je suis pas certain que ça soit très compréhensible
Anoev Modérateur
Messages : 37610 Date d'inscription : 16/10/2008 Localisation : Île-de-France
Sujet: Re: Le générateur de vocabulaire Dim 24 Sep 2023 - 11:51
Setodest a écrit:
Idem pour les Æ, le Œ et le Ψ, ça ne pose aucun problème du moment qu'ils sont référencés dans les listes de départ. Bon, il faut qu'ils soient en minuscule par contre, parce que l'algo différencie minuscule et majuscule. Les mots générés dépendent des mots de la liste de vocabulaire initiale : par exemple, si ψ n'apparaît qu'une fois, sa probabilité d'apparition dans les mots générés sera très faible. La liste d'entrée doit donc être équilibrée.
Évidemment, en plein milieu des mots, et même à l'initiale de noms communs ou autres ne commençant pas une phrase, ils sont en minuscule, mais j'ai l'habitude, quand je cite une lettre isolée, de toujours l'écrire en capitale, sinon, j'écris œlj pour "jarret", æt pour "ce, cette, celui, celle" ou "ça" et ψkur pour "obscur". Deux mots qui m'ont bien plu quand j'les ai créés : soqb = sage (prudent) ; pompé au grec et son retourné exact : qbos = fou (tête brûlée, casse-cou, téméraire). Pour le digramme qb, pas d'souci à s'faire !
Cela dit, le Q ne voisine pas avec d'autres consonnes ; un moment, j'avais imaginé des clics en utilisant qk, qx ou qt, et p'is j'me suis dit « ça va bien ! ma langue a d'jà suffisamment d'phonèmes ! trop charger la mule deviendrait indigeste ».
_________________
Pœr æse qua stane:
Pour ceux qui restent.
PatrikGC
Messages : 6732 Date d'inscription : 28/02/2010 Localisation : France - Nord
Sujet: Re: Le générateur de vocabulaire Dim 24 Sep 2023 - 12:37
Merci pour le code. Je m'y penche lundi ou mardi.
Je l'ai lu en diagonale, ça m'a l'air d'équerre. J'ai cru déceler des endroits qui auraient mieux optimisés avec de la prog fonctionnelle, mais du moment que ça fonctionne, c'est le principal. J'ai souvent enseigné le Python à des universitaires et aussi à des chercheurs du CNRS, ce depuis des lustres, donc je connais un peu ce langage
Velonzio Noeudefée Référent Actualités
Messages : 8431 Date d'inscription : 14/02/2015 Localisation : Rhône-Alpes
Sujet: Re: Le générateur de vocabulaire Dim 24 Sep 2023 - 15:14
Super Setodest de retour !
Alors j'ai eu deux réactions en deux temps : - la 1ère : super génial !!!! - le 2nde euh en fait y'a un moyen créatif plus rapide
Pour la 1ère, ben j'ai les mêmes problèmes de développement de vocabulaire, c'est un peu long, même si j'y prends du plaisir à développer et polir chacun de mes mots, du coup c'est super intéressant.
La 2nde : euh en fait la moitié du travail est fait, puisqu'après le plus important il faut lier les propositions retenues à un sens.
Mais si le but est de créer des mots dont la sonorité nous plait, autant prendre une liste de mots français ou anglais ou allemand et leur faire correspondre un mot de sa langue que l'on crée a priori, mais dont la sonorité nous plait, non ?
Après, je reconnais comme idéolinguiste, puisque l'idéolinguisme est une passion que c'est un bon prétexte pour coder et programmer et progresser ainsi. Désolé, si je casse trop le truc.
Le seul cas où ça peut me paraitre un peu intéressant, c'est si les règles de construction des mots sont si compliquées (harmonies vocaliques, lettres qui ne peuvent pas se succéder, s'avoisiner, etc.) que e seul esprit humain ait du mal à les envisager globalement auquel cas un programme devient intéressant.
Niluusu kivanu ki-so∂em-korondo-s-uvi gu koyoodnißju. (dudyi) / Midevim iſeet dotſe iJebiriotoẏot éß umowonêyû. (∂atyit) Je rêve que les humains deviennent les jardiniers de la vie dans le système solaire.
Setodest
Messages : 431 Date d'inscription : 22/03/2013
Sujet: Re: Le générateur de vocabulaire Dim 24 Sep 2023 - 19:14
Anoev a écrit:
Setodest a écrit:
Idem pour les Æ, le Œ et le Ψ, ça ne pose aucun problème du moment qu'ils sont référencés dans les listes de départ. Bon, il faut qu'ils soient en minuscule par contre, parce que l'algo différencie minuscule et majuscule. Les mots générés dépendent des mots de la liste de vocabulaire initiale : par exemple, si ψ n'apparaît qu'une fois, sa probabilité d'apparition dans les mots générés sera très faible. La liste d'entrée doit donc être équilibrée.
Évidemment, en plein milieu des mots, et même à l'initiale de noms communs ou autres ne commençant pas une phrase, ils sont en minuscule, mais j'ai l'habitude, quand je cite une lettre isolée, de toujours l'écrire en capitale, sinon, j'écris œlj pour "jarret", æt pour "ce, cette, celui, celle" ou "ça" et ψkur pour "obscur". Deux mots qui m'ont bien plu quand j'les ai créés : soqb = sage (prudent) ; pompé au grec et son retourné exact : qbos = fou (tête brûlée, casse-cou, téméraire). Pour le digramme qb, pas d'souci à s'faire !
Cela dit, le Q ne voisine pas avec d'autres consonnes ; un moment, j'avais imaginé des clics en utilisant qk, qx ou qt, et p'is j'me suis dit « ça va bien ! ma langue a d'jà suffisamment d'phonèmes ! trop charger la mule deviendrait indigeste ».
Le q est un cas un peu à part dans le générateur, à vrai dire la séquence "qu + consonne" ou "qu" en fin de mot apparaît avec une certaine fréquence. Il faudrait que je me creuse l'esprit pour ce genre de cas de figure.
PatrikGC a écrit:
Merci pour le code. Je m'y penche lundi ou mardi.
Je l'ai lu en diagonale, ça m'a l'air d'équerre. J'ai cru déceler des endroits qui auraient mieux optimisés avec de la prog fonctionnelle, mais du moment que ça fonctionne, c'est le principal. J'ai souvent enseigné le Python à des universitaires et aussi à des chercheurs du CNRS, ce depuis des lustres, donc je connais un peu ce langage
Ah oui ? Tu dois être très calé sur le sujet alors, hâte de voir ce qui va ressortir de ton analyse de mon code. Dans mon cas c'est en prépa puis en première année d'école d'ingé que j'ai appris python, puis j'ai continué de mon côté, par période. J'ai ensuite découvert l'IA ce qui m'a donné un regain d'intérêt pour le sujet. Ça aussi été l'occasion d'apprendre numpy et pandas notamment (pandas m'a été très très utile dans ce code d'ailleurs).
Velonzio Noeudefée a écrit:
Super Setodest de retour !
Alors j'ai eu deux réactions en deux temps : - la 1ère : super génial !!!! - le 2nde euh en fait y'a un moyen créatif plus rapide
Pour la 1ère, ben j'ai les mêmes problèmes de développement de vocabulaire, c'est un peu long, même si j'y prends du plaisir à développer et polir chacun de mes mots, du coup c'est super intéressant.
La 2nde : euh en fait la moitié du travail est fait, puisqu'après le plus important il faut lier les propositions retenues à un sens.
Mais si le but est de créer des mots dont la sonorité nous plait, autant prendre une liste de mots français ou anglais ou allemand et leur faire correspondre un mot de sa langue que l'on crée a priori, mais dont la sonorité nous plait, non ?
Après, je reconnais comme idéolinguiste, puisque l'idéolinguisme est une passion que c'est un bon prétexte pour coder et programmer et progresser ainsi. Désolé, si je casse trop le truc.
Le seul cas où ça peut me paraitre un peu intéressant, c'est si les règles de construction des mots sont si compliquées (harmonies vocaliques, lettres qui ne peuvent pas se succéder, s'avoisiner, etc.) que e seul esprit humain ait du mal à les envisager globalement auquel cas un programme devient intéressant.
Ça fait en effet un bail que je ne suis pas passé
C'est très variable selon le processus créatif de chacun en fait. Pour ma part, j'ai franchement du mal à créer du vocabulaire en sétolais : je créé un mot qui à l'instant t me paraît euphonique, puis quelques temps plus tard le mot me paraît fade, sans substance. Résultat, en dix ans d'existence, j'ai par là seulement 200 mots "cristallisés". L'intérêt du générateur c'est qu'il a analysé ces 200 mots que j'aime et génère sur cette base. La technique que tu suggères est efficace, par contre je ne la trouve pas plus rapide, au contraire même puisqu'il faut rechercher ces mots, que leur conversion donne quelque chose de plaisant etc. Là le générateur retourne une liste de n mots (n au choix) dans lequel tu as juste à choisir ou adapter ce qui te plaît ou non, sachant que ce qui est généré est basé sur ce que tu aimes. Bon, je nuance tout de même, in fine c'est vraiment subjectif et rien ne dit que ce que tu aimes sera capturé ou que le procédé soit compatible avec le plaisir que tu prends à créer des langues. Dans mon cas par exemple je ne l'utiliserai pas pour le Kus, puisque le plaisir que je prends à créer des mots est différent (et étrangement j'ai beaucoup plus de facilités à créer des mots dont la consonance me plaise).
Maintenant pour l'attribution d'un sens, c'est tout un sujet en soi ! Flemmard comme je suis.. je pense que je finirai par bidouiller du code qui me facilitera la tâche Une première esquisse d'idée... je pense que globalement que chaque langue a des sonorités spécifiques selon la qualité / l'objet que représente le mot, ce qui pourrait indiquer qu'on peu extraire d'une liste de vocabulaire ces sonorités pour cibler le sens qu'un mot généré (ou non) peut avoir. Pour illustrer cela, en utilisant le sétolais, le mot qui a été généré 'imeori', dont j'aime beaucoup la consonance : je lui attribuerai bien sûr pas un sens en rapport avec la violence, quelque chose de sale ou que sais-je encore mais à l'inverse un sens en rapport avec quelque chose de beau, d'agréable ou évocateur.. Également, une autre idée serait d'attribuer des sens à des mots dans des "environnements", c'est-à-dire des phrases "à trou" dans lesquelles des mots que l'on rencontre fréquemment employés dans les mêmes phrases, paragraphes etc. seraient choisis en même temps (ou alors en fonction de ceux qui existent déjà). Ça peut permettre une euphonie globale plutôt qu'individuelle.
C'est des idées, par contre les mettre en pratique c'est une autre histoire !
Anoev Modérateur
Messages : 37610 Date d'inscription : 16/10/2008 Localisation : Île-de-France
Sujet: Re: Le générateur de vocabulaire Dim 24 Sep 2023 - 19:28
Setodest a écrit:
Le q est un cas un peu à part dans le générateur, à vrai dire la séquence "qu + consonne" ou "qu" en fin de mot apparaît avec une certaine fréquence. Il faudrait que je me creuse l'esprit pour ce genre de cas de figure.
En aneuvien, le Q n'a pris ses libertés que ces dernières années. À l'origine, il n'apparaissait que dans le trigramme qua (lequel signifie (encore) "qui"). Je m'suis dit que c'était dommage de le brider à c'point ! D'autant plus qu'en bas de casse, il offrait de belles propriétés de symétrie avec les lettres b, d et p. J'm'en suis donc pas privé. Pour ça, j'ai tourné l'dos à l'espéranto (mais pas l'ido), au kotava, à l'uropi et au volapük, qui l'ont banni de leur alphabet. Chez moi, y a des mots comme soqb (d'jà évoqué), qbob, qud, qob...
Par contre, le psolat (langue-vestige depuis la mort d'Idéolexique) fait beaucoup moins preuve d'originalité, à-postériori latiniste oblige.
_________________
Pœr æse qua stane:
Pour ceux qui restent.
PatrikGC
Messages : 6732 Date d'inscription : 28/02/2010 Localisation : France - Nord
Sujet: Re: Le générateur de vocabulaire Lun 25 Sep 2023 - 21:07
Je me demande si l'algo LZW ne serait pas une réponse à ce genre de pb. Il suffit ensuite d'utiliser le dictionnaire généré pour obtenir des statistiques sur N caractères...
Velonzio Noeudefée Référent Actualités
Messages : 8431 Date d'inscription : 14/02/2015 Localisation : Rhône-Alpes
Sujet: Re: Le générateur de vocabulaire Lun 25 Sep 2023 - 22:10
Pour nuancer mon propos un peu critique, je trouve qu'en français (déjà cupoie, lain, plérion, étise, je me demande si ça n'existerait pas_pré lui existe_mérène et selie seraient dérivable des résultats) même parmi les mots que tu as rejeté, ça fait effectivement assez français ou ça peut le devenir assez facilement
Pour ma part dans un essai récent j'avais déterminé le genre harmonieux et celui réel, chacun des deux ne pouvant pas employer toujours les mêmes phonèmes, même si certains étaient communs, ça peut aussi être une manière de séparer la sonorité des mots selon leur signification.
Niluusu kivanu ki-so∂em-korondo-s-uvi gu koyoodnißju. (dudyi) / Midevim iſeet dotſe iJebiriotoẏot éß umowonêyû. (∂atyit) Je rêve que les humains deviennent les jardiniers de la vie dans le système solaire.
Contenu sponsorisé
Sujet: Re: Le générateur de vocabulaire
Le générateur de vocabulaire
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum