Generate: update to use word_db

This commit is contained in:
Théophile Bastian 2024-09-16 23:03:13 +02:00
parent 62bb8076e9
commit 3c10d987e6

View file

@ -1,37 +1,72 @@
import secrets
from . import lexique
from . import word_db
lex = lexique.Lexique.parse()
wdb = word_db.WordDb.autoload()
def gen_phrase4():
out = []
out.append(secrets.choice(lex.most_common(lexique.CatGram.ADJECTIF)))
out.append(secrets.choice(lex.most_common(lexique.CatGram.NOM)))
out.append(secrets.choice(lex.most_common(lexique.CatGram.VERBE)))
out.append(secrets.choice(lex.most_common(lexique.CatGram.NOM)))
return " ".join(map(lambda x: x.word, out))
"""Generates a sentence with four words, of structure Adjective Noun Verb Adverb"""
nombre = word_db.Nombre.pick()
temps = word_db.Temps.pick()
adj = secrets.choice(wdb.adjectifs)
nom = secrets.choice(wdb.noms)
verbe = secrets.choice(wdb.verbes)
adverbe = secrets.choice(wdb.adverbes)
return " ".join(
[
adj.accord(nom.genre_or_pick, nombre),
nom.accord(nombre),
verbe.accord(temps, nombre),
adverbe.accord(),
]
)
def gen_phrase6():
"""Generates a sentence with six words, of structure Adjective Noun Verb Adjective
Noun Adverb"""
nombres = [word_db.Nombre.pick() for _ in range(2)]
temps = word_db.Temps.pick()
adj0 = secrets.choice(wdb.adjectifs)
nom0 = secrets.choice(wdb.noms)
verbe = secrets.choice(wdb.verbes)
adj1 = secrets.choice(wdb.adjectifs)
nom1 = secrets.choice(wdb.noms)
adverbe = secrets.choice(wdb.adverbes)
return " ".join(
[
adj0.accord(nom0.genre_or_pick, nombres[0]),
nom0.accord(nombres[0]),
verbe.accord(temps, nombres[0]),
adj1.accord(nom1.genre_or_pick, nombres[1]),
nom1.accord(nombres[1]),
adverbe.accord(),
]
)
def gen_rand(n=4):
"""Generates a fully random sequence of n words, without grammatical consistency"""
out = []
for _ in range(n):
cat = secrets.choice(
(
lexique.CatGram.ADJECTIF,
lexique.CatGram.NOM,
lexique.CatGram.VERBE,
lexique.CatGram.ADVERBE,
)
)
out.append(secrets.choice(lex.most_common(cat)))
return " ".join(map(lambda x: x.word, out))
word_cat = secrets.choice(list(wdb.CATEGORY_TO_ATTR))
if word_cat == word_db.Nom:
nombre = word_db.Nombre.pick()
out.append(secrets.choice(wdb.noms).accord(nombre))
elif word_cat == word_db.Adjectif:
genre = word_db.Genre.pick()
nombre = word_db.Nombre.pick()
out.append(secrets.choice(wdb.adjectifs).accord(genre, nombre))
elif word_cat == word_db.Verbe:
temps = word_db.Temps.pick()
nombre = word_db.Nombre.pick()
out.append(secrets.choice(wdb.verbes).accord(temps, nombre))
elif word_cat == word_db.Adverbe:
out.append(secrets.choice(wdb.adverbes).accord())
def gen_nom(n=4):
out = []
for _ in range(n):
cat = lexique.CatGram.NOM
out.append(secrets.choice(lex.most_common(cat)))
return " ".join(map(lambda x: x.word, out))
return " ".join(out)