commit 30f9d0296af1ca0a23c6c2860920bfd4e6a2ff37 Author: Feufochmar Date: Mon May 23 13:39:34 2022 +0200 Initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..498021c --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# AmyTron4000 +A text generator based on rules. + +# Rules +The rules are written in the files of the models directory. Each file correspond to a different generator, and the model is described here (format is json). + +Each generator is described by an object containing the fields: +- `id`: the internal identifier of the generator. +- `name`: the name of the generator as displayed in the combobox listing the different generators. +- `description`: the description of the generator. +- `moredescription`: additionnal details on the generator. +- `issentence`: indicate if the generator outputs sentences or words. +- `rules`: a list of rules. One rule must have the id `"@output@"` to indicate the entry-point of the generator. + +Each rule is described by an object containing the fields: +- `id`: an identifier for the rule +- `distribution`: a distribution of list of strings. The distribution associate the lists of strings with weights used in generation. If the list of strings contain a string whose value is the id of a rule, that string is replaced by a list generated from the indicated rule (recursively). + +A distribution is a list containing objects with the following fields: +- `pattern`: a rule pattern, as a list of strings +- `occurences`: the weight associated to the pattern. diff --git a/amytron.css b/amytron.css new file mode 100644 index 0000000..4c2e65c --- /dev/null +++ b/amytron.css @@ -0,0 +1,53 @@ +body { + margin-left: 1.5%; + margin-right: 1.5%; + background-color: hsl(230, 10%, 50%); + color: hsl(230, 10%, 10%); + border-color: hsl(230, 10%, 15%); +} + +hr { + border-style: solid; + border-width: thin; +} + +header { + background-color: hsl(230, 10%, 90%); + + border-style: solid; + border-width: thin; + + border-radius: 5px; + margin: 2px; + padding: 5px; + text-align: center; +} + +footer { + background-color: hsl(230, 10%, 90%); + + border-style: solid; + border-width: thin; + + border-radius: 5px; + margin: 2px; + padding: 5px; + text-align: center; +} + +article { + background-color: hsl(230, 10%, 90%); + border-style: solid; + border-width: thin; + border-radius: 5px; + margin: 2px; + padding: 10px; +} + +p { + margin-left: 7px; +} + +#generated-text { + font-size: 150%; +} diff --git a/amytron.js b/amytron.js new file mode 100644 index 0000000..0bcfa8f --- /dev/null +++ b/amytron.js @@ -0,0 +1,180 @@ +// AmyTron4000 +// Gerenator for text + +// Main object +var amytron = {} + +// Discrete distribution +// The distribution object defines a discrete distribution +amytron.Distribution = function () { + this.total = 0 // Total number of elements in the distribution + this.items = new Map() // Map of item -> number of elements +} +// Add 'occur' number of 'elem' elements into the distribution +amytron.Distribution.prototype.addTo = function (elem, occur) { + this.total += occur + if (this.items.has(elem)) { + this.items.set(elem, occur + this.items.get(elem)) + } else { + this.items.set(elem, occur) + } +} +// Pick a random element from the distribution +amytron.Distribution.prototype.pickFrom = function () { + var idx = Math.floor(Math.random() * this.total) + var acc = 0 + var pick = undefined + for (var [elem, occur] of this.items) + { + acc += occur + pick = elem + if (acc > idx) { + break + } + } + return pick +} + +// Rule generator +// This generator makes an array of elements from rules describing how to generate the array +// Each rule is associated to a distribution of patterns indicating how to replace a rule identifier +amytron.RuleGenerator = function () { + this.rules = new Map() +} +// Populate the rules table from a description +amytron.RuleGenerator.prototype.initializeFromDescription = function (description) { + for (var rule of description) { + var dist = new amytron.Distribution() + for (var pat of rule.distribution) { + dist.addTo(pat.pattern, pat.occurences) + } + this.rules.set(rule.id, dist) + } +} +// Generate an array of elements +amytron.RuleGenerator.prototype.generate = function () { + var replacePattern = function (rules, input) { + var output = new Array() + for (var i of input) { + if (rules.has(i)) { + output = output.concat(replacePattern(rules, rules.get(i).pickFrom())) + } else { + output.push(i) + } + } + return output + } + return replacePattern(this.rules, this.rules.get('@output@').pickFrom()) +} + +// Model of the amytron generator +amytron.model = {} +amytron.model.generators = new Map() + +// Generate text from the generator id +amytron.generateText = function () { + var selector = document.getElementById('generator-selector') + var generatorId = selector.options[selector.selectedIndex].value + var generator = amytron.model.generators.get(generatorId) + document.getElementById('generated-text').innerHTML = generator.generate() +} + +// Transform a list of strings to a formatted strings +amytron.formatText = function (input, isSentence) { + // Construct the output string from the list of strings. + var text = "" + if (isSentence) { + var first = true + for (var s of input) { + if (first) { + text += s.charAt(0).toUpperCase() + s.slice(1) + first = false + } else if (s.charAt(0).match(/\p{General_Category=Punctuation}/gu) != null) { + // No space before a punctuation + text += s + } else { + text += " " + s + } + } + text = text.trim() + "." + } else { + for (var s of input) { + text += s + } + } + + // Construct the HTML content + return "

" + text + "

" +} + +// Make a rule generator +amytron.makeRuleBasedGenerator = function (rules, isSentence) { + var ruleGenerator = new amytron.RuleGenerator() + ruleGenerator.initializeFromDescription(rules) + return function () { + var output = ruleGenerator.generate() + return amytron.formatText(output, isSentence) + } +} + +// Parse a raw generator description +amytron.parseGenerator = function (gen) { + var generator = {} + generator.name = gen.name + generator.description = gen.description + generator.moredescription = gen.moredescription + generator.generate = amytron.makeRuleBasedGenerator(gen.rules, gen.issentence) + return generator +} + +// Draw the amytron div +amytron.drawDiv = function (model) { + var contents = '' + contents += '' + contents += '' + contents += '
' + contents += '

' + contents += '

' + document.getElementById('amytron').innerHTML = contents + // Update the description + amytron.updateDescription() +} + +// Draw the description +amytron.updateDescription = function () { + var selector = document.getElementById('generator-selector') + var generatorId = selector.options[selector.selectedIndex].value + var generator = amytron.model.generators.get(generatorId) + document.getElementById('generator-description').innerHTML = generator.description + "
" + generator.moredescription +} + +// Load the model +amytron.loadModel = function (gen) { + // Parse the raw model + amytron.model.generators.set(gen.id, amytron.parseGenerator(gen)) + // Draw the amytron
+ amytron.drawDiv(amytron.model) +} + +// Loading function for Phonagen-htmljs +amytron.load = function (jsonFile) { + fetch(jsonFile) + .then(function(response) { + return response.json() + }) + .then(amytron.loadModel) +} + +// Load several files +amytron.loadAll = function (jsonFiles) { + for (file of jsonFiles) { + amytron.load(file) + } +} + +// Export info +//module.exports = amytron diff --git a/index.html b/index.html new file mode 100644 index 0000000..a79e609 --- /dev/null +++ b/index.html @@ -0,0 +1,26 @@ + + + + AmyTron4000 + + + + + +
+

AmyTron4000

+
+
+
+
+
AmyTron4000, made by Feufochmar.
+ + + diff --git a/models/amytron.json b/models/amytron.json new file mode 100644 index 0000000..5c2f30d --- /dev/null +++ b/models/amytron.json @@ -0,0 +1,449 @@ +{ + "id": "AmyTron4000", + "name": "AmyTron4000", + "description": "Salutations choquantes et insultantes.", + "moredescription": "Inspiré d'ArnYtron3000, qui est basé sur un ensemble de vraies citations.", + "issentence": true, + "rules": [ + { + "id": "@HELLO@", + "distribution": [ + { "occurences": 80, "pattern": ["salut"] }, + { "occurences": 15, "pattern": ["bonjour"] }, + { "occurences": 15, "pattern": ["bonsoir"] }, + { "occurences": 5, "pattern": ["hey"] }, + { "occurences": 1, "pattern": ["bonne", "année"] }, + { "occurences": 1, "pattern": ["joyeux", "Noël"] }, + { "occurences": 1, "pattern": ["joyeuses", "Pâques"] }, + { "occurences": 1, "pattern": ["piou", "piou"] }, + { "occurences": 1, "pattern": ["bonne", "Saint-Valentin"] }, + { "occurences": 1, "pattern": ["prem's"] }, + { "occurences": 5, "pattern": ["bonne", "fête"] }, + { "occurences": 1, "pattern": ["bien", "le", "bonsoir"] }, + { "occurences": 1, "pattern": ["re"] }, + { "occurences": 1, "pattern": ["reuh"] }, + { "occurences": 1, "pattern": ["plop"] }, + { "occurences": 1, "pattern": ["debout"] }, + { "occurences": 1, "pattern": ["resalut"] } + ] + }, + { + "id": "@MASC_ADJ_EPI@", + "distribution": [ + { "occurences": 20, "pattern": [""] }, + { "occurences": 1, "pattern": ["grands"] }, + { "occurences": 1, "pattern": ["petits"] }, + { "occurences": 3, "pattern": ["vieux"] }, + { "occurences": 1, "pattern": ["jeunes"] }, + { "occurences": 2, "pattern": ["nouveaux"] }, + { "occurences": 1, "pattern": ["pauvres"] }, + { "occurences": 1, "pattern": ["gentils"] }, + { "occurences": 1, "pattern": ["méchants"] }, + { "occurences": 1, "pattern": ["gros"] }, + { "occurences": 1, "pattern": ["beaux"] }, + { "occurences": 1, "pattern": ["joyeux"] }, + { "occurences": 1, "pattern": ["merveilleux"] }, + { "occurences": 1, "pattern": ["sales"] } + ] + }, + { + "id": "@FEMI_ADJ_EPI@", + "distribution": [ + { "occurences": 20, "pattern": [""] }, + { "occurences": 1, "pattern": ["grandes"] }, + { "occurences": 1, "pattern": ["petites"] }, + { "occurences": 3, "pattern": ["vieilles"] }, + { "occurences": 1, "pattern": ["jeunes"] }, + { "occurences": 2, "pattern": ["nouvelles"] }, + { "occurences": 1, "pattern": ["pauvres"] }, + { "occurences": 1, "pattern": ["gentilles"] }, + { "occurences": 1, "pattern": ["méchantes"] }, + { "occurences": 1, "pattern": ["grosses"] }, + { "occurences": 1, "pattern": ["belles"] }, + { "occurences": 1, "pattern": ["joyeuses"] }, + { "occurences": 1, "pattern": ["merveilleuses"] }, + { "occurences": 1, "pattern": ["sales"] } + ] + }, + { + "id": "@MASC_NOM@", + "distribution": [ + { "occurences": 1, "pattern": ["enfants", "de", "cœur"] }, + { "occurences": 1, "pattern": ["geeks"] }, + { "occurences": 1, "pattern": ["clouds", "computés"] }, + { "occurences": 1, "pattern": ["hackers"] }, + { "occurences": 1, "pattern": ["gens"] }, + { "occurences": 1, "pattern": ["gens", "bons"] }, + { "occurences": 1, "pattern": ["jambons"] }, + { "occurences": 1, "pattern": ["saucissons"] }, + { "occurences": 1, "pattern": ["boudins"] }, + { "occurences": 1, "pattern": ["putois"] }, + { "occurences": 1, "pattern": ["amis"] }, + { "occurences": 1, "pattern": ["phallus"] }, + { "occurences": 1, "pattern": ["vers", "solitaires"] }, + { "occurences": 1, "pattern": ["snipers", "en", "embuscade"] }, + { "occurences": 1, "pattern": ["clodos"] }, + { "occurences": 1, "pattern": ["suce-pines"] }, + { "occurences": 1, "pattern": ["suce-boules"] }, + { "occurences": 1, "pattern": ["lèche-bottes"] }, + { "occurences": 1, "pattern": ["morpions"] }, + { "occurences": 1, "pattern": ["bucherons"] }, + { "occurences": 1, "pattern": ["routiers"] }, + { "occurences": 1, "pattern": ["éboueurs"] }, + { "occurences": 1, "pattern": ["pisciculteurs"] }, + { "occurences": 1, "pattern": ["hippopotames"] }, + { "occurences": 1, "pattern": ["cosmonautes"] }, + { "occurences": 1, "pattern": ["internautes"] }, + { "occurences": 1, "pattern": ["déménageurs"] }, + { "occurences": 1, "pattern": ["garagistes"] }, + { "occurences": 1, "pattern": ["consirationnistes"] }, + { "occurences": 1, "pattern": ["lombrics"] }, + { "occurences": 1, "pattern": ["étalons"] }, + { "occurences": 1, "pattern": ["goths"] }, + { "occurences": 1, "pattern": ["anorexiques"] }, + { "occurences": 1, "pattern": ["producteurs", "de", "miel"] }, + { "occurences": 1, "pattern": ["éleveurs", "de", "fourmililers"] }, + { "occurences": 1, "pattern": ["vendeurs", "de", "machine", "à", "coudre"] }, + { "occurences": 1, "pattern": ["vampires"] }, + { "occurences": 1, "pattern": ["nonagénaires"] }, + { "occurences": 1, "pattern": ["grailleux", "du", "ciboulot"] }, + { "occurences": 1, "pattern": ["zozios"] }, + { "occurences": 1, "pattern": ["zozos"] }, + { "occurences": 1, "pattern": ["ploucs"] }, + { "occurences": 1, "pattern": ["résidus", "de", "fond", "de", "capotes", "percées"] }, + { "occurences": 1, "pattern": ["furoncles"] }, + { "occurences": 1, "pattern": ["résidus", "d'hémorroïdes", "de", "porc"] }, + { "occurences": 1, "pattern": ["coprophages"] }, + { "occurences": 1, "pattern": ["gougnafiers"] }, + { "occurences": 1, "pattern": ["glouglouteurs", "de", "poireaux"] }, + { "occurences": 1, "pattern": ["buveurs", "de", "piquette"] }, + { "occurences": 1, "pattern": ["buveurs", "d'alcool", "frelaté"] }, + { "occurences": 1, "pattern": ["grouillots"] }, + { "occurences": 1, "pattern": ["copains"] }, + { "occurences": 1, "pattern": ["zizis"] }, + { "occurences": 1, "pattern": ["minions"] }, + { "occurences": 1, "pattern": ["cyclistes"] }, + { "occurences": 1, "pattern": ["linuxiens"] }, + { "occurences": 1, "pattern": ["libristes"] }, + { "occurences": 1, "pattern": ["grumeaux"] }, + { "occurences": 1, "pattern": ["chéris"] }, + { "occurences": 1, "pattern": ["linuxoïds"] }, + { "occurences": 1, "pattern": ["loubards"] }, + { "occurences": 1, "pattern": ["babouins"] }, + { "occurences": 1, "pattern": ["curés"] }, + { "occurences": 1, "pattern": ["acteurs", "porno"] }, + { "occurences": 1, "pattern": ["pépés"] }, + { "occurences": 1, "pattern": ["fous"] }, + { "occurences": 1, "pattern": ["parasites"] } + ] + }, + { + "id": "@FEMI_NOM@", + "distribution": [ + { "occurences": 1, "pattern": ["tranches", "de", "hareng", "saur"] }, + { "occurences": 1, "pattern": ["productrices", "de", "miel"] }, + { "occurences": 1, "pattern": ["éleveuses", "de", "kangourous"] }, + { "occurences": 1, "pattern": ["vendeuses", "de", "machine", "à", "coudre"] }, + { "occurences": 1, "pattern": ["actrices", "porno"] }, + { "occurences": 1, "pattern": ["mémés"] }, + { "occurences": 1, "pattern": ["bites", "crochues"] }, + { "occurences": 1, "pattern": ["graines", "germées"] }, + { "occurences": 2, "pattern": ["motocrottes"] }, + { "occurences": 1, "pattern": ["pouffes"] }, + { "occurences": 1, "pattern": ["biques"] }, + { "occurences": 1, "pattern": ["rates"] }, + { "occurences": 1, "pattern": ["marmottes"] }, + { "occurences": 1, "pattern": ["baleines"] }, + { "occurences": 1, "pattern": ["juments"] }, + { "occurences": 1, "pattern": ["vaches"] }, + { "occurences": 1, "pattern": ["chèvres"] }, + { "occurences": 1, "pattern": ["chattes"] }, + { "occurences": 1, "pattern": ["chiennes"] }, + { "occurences": 1, "pattern": ["folles"] }, + { "occurences": 1, "pattern": ["copines"] }, + { "occurences": 1, "pattern": ["fientes"] }, + { "occurences": 1, "pattern": ["moules", "frites"] }, + { "occurences": 1, "pattern": ["dompteuses", "de", "slips"] }, + { "occurences": 2, "pattern": ["berniques"] }, + { "occurences": 2, "pattern": ["bouchères"] }, + { "occurences": 1, "pattern": ["loques"] }, + { "occurences": 1, "pattern": ["bites", "de", "mammouth"] }, + { "occurences": 1, "pattern": ["peaux"] }, + { "occurences": 1, "pattern": ["raclures", "de", "bidet"] } + ] + }, + { + "id": "@MASC_ADJ@", + "distribution": [ + { "occurences": 1, "pattern": ["infiltrés"] }, + { "occurences": 1, "pattern": ["nus"] }, + { "occurences": 1, "pattern": ["intéressants"] }, + { "occurences": 1, "pattern": ["membrés", "comme", "des", "saucisses", "de", "Strasbourg"] }, + { "occurences": 1, "pattern": ["priapiques"] }, + { "occurences": 1, "pattern": ["machos"] }, + { "occurences": 1, "pattern": ["atteints", "de", "priapisme", "soudain"] }, + { "occurences": 1, "pattern": ["pris", "de", "diarrhée", "soudaine"] }, + { "occurences": 1, "pattern": ["roux"] }, + { "occurences": 1, "pattern": ["pervers"] }, + { "occurences": 1, "pattern": ["sodomites"] }, + { "occurences": 1, "pattern": ["huilés"] }, + { "occurences": 1, "pattern": ["bien", "membrés"] }, + { "occurences": 1, "pattern": ["scatophiles"] }, + { "occurences": 1, "pattern": ["sadomasos"] }, + { "occurences": 1, "pattern": ["albinos"] }, + { "occurences": 1, "pattern": ["chauves"] }, + { "occurences": 1, "pattern": ["onanistes"] }, + { "occurences": 1, "pattern": ["vermoulus", "du", "bout"] }, + { "occurences": 1, "pattern": ["glauques"] }, + { "occurences": 1, "pattern": ["odorants"] }, + { "occurences": 1, "pattern": ["traffiquants", "d'ostie"] }, + { "occurences": 1, "pattern": ["champions", "du", "monde", "de", "natation"] }, + { "occurences": 1, "pattern": ["moisis", "du", "kiki"] }, + { "occurences": 1, "pattern": ["désanussés"] }, + { "occurences": 1, "pattern": ["mous", "du", "gland"] }, + { "occurences": 1, "pattern": ["mous", "du", "genou"] }, + { "occurences": 1, "pattern": ["couverts", "d'huile", "d'olive"] }, + { "occurences": 1, "pattern": ["déguisés", "en", "barbies", "pour", "appater", "les", "petits", "enfants"] }, + { "occurences": 1, "pattern": ["enculeurs", "de", "mouches"] }, + { "occurences": 1, "pattern": ["cagueurs", "volants"] }, + { "occurences": 1, "pattern": ["mal", "cagués"] }, + { "occurences": 1, "pattern": ["rassasiés"] }, + { "occurences": 1, "pattern": ["tous", "pourris"] }, + { "occurences": 1, "pattern": ["nudistes"] }, + { "occurences": 1, "pattern": ["velus", "du", "dos"] }, + { "occurences": 1, "pattern": ["siamois"] }, + { "occurences": 1, "pattern": ["enduits", "d'huile", "de", "palme", "de", "canard"] }, + { "occurences": 1, "pattern": ["saumâtres"] }, + { "occurences": 1, "pattern": ["mous"] }, + { "occurences": 1, "pattern": ["flasques"] }, + { "occurences": 1, "pattern": ["inventés", "par", "un", "vampire", "scatophile"] }, + { "occurences": 1, "pattern": ["pelés"] }, + { "occurences": 1, "pattern": ["prostitués"] }, + { "occurences": 1, "pattern": ["accros", "à", "la", "tisane", "de", "pneu"] }, + { "occurences": 1, "pattern": ["accros", "à", "la", "saucisse"] }, + { "occurences": 1, "pattern": ["humains"] }, + { "occurences": 1, "pattern": ["imbibés", "d'alcool"] }, + { "occurences": 1, "pattern": ["caramelisés", "sauce", "bbq"] } + ] + }, + { + "id": "@FEMI_ADJ@", + "distribution": [ + { "occurences": 1, "pattern": ["infiltrées"] }, + { "occurences": 1, "pattern": ["nues"] }, + { "occurences": 1, "pattern": ["intéressantes"] }, + { "occurences": 1, "pattern": ["membrées", "comme", "des", "saucisses", "de", "Strasbourg"] }, + { "occurences": 1, "pattern": ["priapiques"] }, + { "occurences": 1, "pattern": ["machos"] }, + { "occurences": 1, "pattern": ["atteintes", "de", "priapisme", "soudain"] }, + { "occurences": 1, "pattern": ["prises", "de", "diarrhée", "soudaine"] }, + { "occurences": 1, "pattern": ["rousses"] }, + { "occurences": 1, "pattern": ["perverses"] }, + { "occurences": 1, "pattern": ["sodomites"] }, + { "occurences": 1, "pattern": ["huilées"] }, + { "occurences": 1, "pattern": ["bien", "membrées"] }, + { "occurences": 1, "pattern": ["scatophiles"] }, + { "occurences": 1, "pattern": ["sadomasos"] }, + { "occurences": 1, "pattern": ["albinos"] }, + { "occurences": 1, "pattern": ["chauves"] }, + { "occurences": 1, "pattern": ["onanistes"] }, + { "occurences": 1, "pattern": ["vermoulues", "du", "bout"] }, + { "occurences": 1, "pattern": ["glauques"] }, + { "occurences": 1, "pattern": ["odorantes"] }, + { "occurences": 1, "pattern": ["traffiquantes", "d'ostie"] }, + { "occurences": 1, "pattern": ["championnes", "du", "monde", "de", "natation"] }, + { "occurences": 1, "pattern": ["moisies", "du", "kiki"] }, + { "occurences": 1, "pattern": ["désanussées"] }, + { "occurences": 1, "pattern": ["molles", "du", "gland"] }, + { "occurences": 1, "pattern": ["molles", "du", "genou"] }, + { "occurences": 1, "pattern": ["couvertes", "d'huile", "d'olive"] }, + { "occurences": 1, "pattern": ["déguisées", "en", "barbies", "pour", "appater", "les", "petits", "enfants"] }, + { "occurences": 1, "pattern": ["enculeuses", "de", "mouches"] }, + { "occurences": 1, "pattern": ["cagueuses", "volantes"] }, + { "occurences": 1, "pattern": ["mal", "caguées"] }, + { "occurences": 1, "pattern": ["rassasiées"] }, + { "occurences": 1, "pattern": ["toutes", "pourries"] }, + { "occurences": 1, "pattern": ["nudistes"] }, + { "occurences": 1, "pattern": ["velues", "du", "dos"] }, + { "occurences": 1, "pattern": ["siamoises"] }, + { "occurences": 1, "pattern": ["enduites", "d'huile", "de", "palme", "de", "canard"] }, + { "occurences": 1, "pattern": ["saumâtres"] }, + { "occurences": 1, "pattern": ["molles"] }, + { "occurences": 1, "pattern": ["flasques"] }, + { "occurences": 1, "pattern": ["inventées", "par", "un", "vampire", "scatophile"] }, + { "occurences": 1, "pattern": ["pelées"] }, + { "occurences": 1, "pattern": ["prostituées"] }, + { "occurences": 1, "pattern": ["accros", "à", "la", "tisane", "de", "pneu"] }, + { "occurences": 1, "pattern": ["accros", "à", "la", "saucisse"] }, + { "occurences": 1, "pattern": ["humaines"] }, + { "occurences": 1, "pattern": ["imbibées", "d'alcool"] }, + { "occurences": 1, "pattern": ["caramelisées", "sauce", "bbq"] } + ] + }, + { + "id": "@COMP_NOM@", + "distribution": [ + { "occurences": 40, "pattern": [""] }, + { "occurences": 1, "pattern": ["au", "gland", "lumineux"] }, + { "occurences": 1, "pattern": ["à", "poil", "ras"] }, + { "occurences": 1, "pattern": ["au", "corps", "d'athlète", "musclé", "et", "bronzé", "luisant"] }, + { "occurences": 1, "pattern": ["à", "la", "poitrine", "digne", "de", "Lolo", "Ferrari"] }, + { "occurences": 1, "pattern": ["à", "face", "de", "pizza"] }, + { "occurences": 1, "pattern": ["pro", "Bush"] }, + { "occurences": 1, "pattern": ["pro", "Trump"] }, + { "occurences": 1, "pattern": ["de", "poche"] }, + { "occurences": 1, "pattern": ["à", "laine"] }, + { "occurences": 1, "pattern": ["à", "l'haleine", "malsaine"] }, + { "occurences": 1, "pattern": ["en", "érection"] }, + { "occurences": 1, "pattern": ["du", "samedi"] }, + { "occurences": 1, "pattern": ["du", "dimanche"] }, + { "occurences": 1, "pattern": ["à", "moustache"] }, + { "occurences": 1, "pattern": ["à", "anneaux", "péniens"] }, + { "occurences": 1, "pattern": ["à", "fourrure", "de", "muppets"] }, + { "occurences": 1, "pattern": ["en", "tee-shirt", "moulant"] }, + { "occurences": 1, "pattern": ["en", "fursuit"] }, + { "occurences": 1, "pattern": ["avec", "une", "chemise", "déboutonnée"] }, + { "occurences": 1, "pattern": ["en", "culotte", "courte"] }, + { "occurences": 1, "pattern": ["en", "monokini"] }, + { "occurences": 1, "pattern": ["en", "slip", "kangourou", "léopard"] }, + { "occurences": 1, "pattern": ["en", "bikini", "fluo"] }, + { "occurences": 1, "pattern": ["en", "tutu"] }, + { "occurences": 1, "pattern": ["en", "moule", "bite"] }, + { "occurences": 1, "pattern": ["en", "combi", "spandex", "vert"] }, + { "occurences": 1, "pattern": ["en", "tutu", "à", "paillettes"] }, + { "occurences": 1, "pattern": ["en", "string"] }, + { "occurences": 1, "pattern": ["en", "pleurs", "suite", "à", "la", "mort", "de", "leur", "idole"] } + ] + }, + { + "id": "@MASC_ADJECTIF@", + "distribution": [ + { "occurences": 10, "pattern": [""] }, + { "occurences": 25, "pattern": ["@MASC_ADJ@"] }, + { "occurences": 5, "pattern": ["@MASC_ADJ@", "et", "@MASC_ADJ@"] } + ] + }, + { + "id": "@FEMI_ADJECTIF@", + "distribution": [ + { "occurences": 10, "pattern": [""] }, + { "occurences": 25, "pattern": ["@FEMI_ADJ@"] }, + { "occurences": 5, "pattern": ["@FEMI_ADJ@", "et", "@FEMI_ADJ@"] } + ] + }, + { + "id": "@NOMINAL@", + "distribution": [ + { "occurences": 70, "pattern": ["@MASC_ADJ_EPI@", "@MASC_NOM@", "@MASC_ADJECTIF@", "@COMP_NOM@"] }, + { "occurences": 30, "pattern": ["@FEMI_ADJ_EPI@", "@FEMI_NOM@", "@FEMI_ADJECTIF@", "@COMP_NOM@"] } + ] + }, + { + "id": "@COMP_LIEU@", + "distribution": [ + { "occurences": 15, "pattern": [""] }, + { "occurences": 1, "pattern": ["dans", "la", "cour", "de", "récré"] }, + { "occurences": 1, "pattern": ["sur", "la", "plage", "nudiste"] }, + { "occurences": 1, "pattern": ["dans", "les", "toilettes", "publiques"] }, + { "occurences": 1, "pattern": ["dans", "le", "métro"] }, + { "occurences": 1, "pattern": ["sur", "une", "piste", "de", "ski"] }, + { "occurences": 1, "pattern": ["aux", "puces", "de", "Saint-Ouen"] }, + { "occurences": 1, "pattern": ["à", "Pigale"] }, + { "occurences": 1, "pattern": ["à", "Disneyland"] }, + { "occurences": 1, "pattern": ["sur", "Internet"] }, + { "occurences": 1, "pattern": ["sur", "le", "bord", "du", "périf", "parisien"] }, + { "occurences": 1, "pattern": ["sur", "les", "Champs", "Élysées"] }, + { "occurences": 1, "pattern": ["sur", "la", "place", "de", "l'église"] }, + { "occurences": 1, "pattern": ["au", "rayon", "rôtisserie", "de", "Carrefour"] }, + { "occurences": 1, "pattern": ["dans", "l'Aisne"] }, + { "occurences": 1, "pattern": ["dans", "la", "Creuse"] }, + { "occurences": 1, "pattern": ["sur", "la", "Côte d'Azur"] }, + { "occurences": 1, "pattern": ["dans", "un", "squat", "à", "Woippy"] }, + { "occurences": 1, "pattern": ["dans", "les", "maisons", "closes"] }, + { "occurences": 1, "pattern": ["au", "milieu", "d'une", "salle", "de", "cinéma", "X"] }, + { "occurences": 1, "pattern": ["dans", "de", "la", "bouse", "de", "chameau"] }, + { "occurences": 1, "pattern": ["dans", "de", "la", "bouse", "de", "vache"] }, + { "occurences": 1, "pattern": ["sur", "leurs", "mobilettes", "oranges"] }, + { "occurences": 1, "pattern": ["sur", "leurs", "vélos", "fluos"] }, + { "occurences": 1, "pattern": ["en", "plein", "cagnard"] }, + { "occurences": 1, "pattern": ["au", "soleil"] } + ] + }, + { + "id": "@COMP_TEMPS@", + "distribution": [ + { "occurences": 15, "pattern": [""] }, + { "occurences": 1, "pattern": ["le", "lundi", "matin"] }, + { "occurences": 1, "pattern": ["le", "samedi", "soir"] }, + { "occurences": 1, "pattern": ["le", "dimanche", "matin"] }, + { "occurences": 1, "pattern": ["le", "dimanche", "soir"] }, + { "occurences": 1, "pattern": ["pendant", "le", "journal", "télévisé"] }, + { "occurences": 1, "pattern": ["pendant", "la", "messe"] }, + { "occurences": 1, "pattern": ["en", "plein", "hiver"] }, + { "occurences": 1, "pattern": ["en", "plein", "été"] }, + { "occurences": 1, "pattern": ["à", "l'heure", "du", "déjeuner"] }, + { "occurences": 1, "pattern": ["à", "l'heure", "du", "goûter"] } + ] + }, + { + "id": "@COMP_ACTION@", + "distribution": [ + { "occurences": 1, "pattern": ["dansant", "le", "jerk"] }, + { "occurences": 1, "pattern": ["dansant", "la", "tecktonik"] }, + { "occurences": 1, "pattern": ["travaillant", "dur"] }, + { "occurences": 1, "pattern": ["faisant", "du", "skate"] }, + { "occurences": 1, "pattern": ["souffrant", "de", "diarrhée", "explosive", "pleine", "de", "parasites"] }, + { "occurences": 1, "pattern": ["faisant", "la", "manche"] }, + { "occurences": 1, "pattern": ["jouant", "à", "cache-cache"] }, + { "occurences": 1, "pattern": ["ayant", "pignon", "sur", "rue"] }, + { "occurences": 1, "pattern": ["rêvant", "de", "troncs", "à", "raboter"] }, + { "occurences": 1, "pattern": ["grouillant", "sur", "des", "hémorroïdes"] }, + { "occurences": 1, "pattern": ["fumant", "à", "la", "pipe", "du", "crotin", "d'âne", "corse"] }, + { "occurences": 1, "pattern": ["fumant", "des", "joints"] }, + { "occurences": 1, "pattern": ["flatulant", "dans", "l'eau", "du", "bain"] }, + { "occurences": 1, "pattern": ["se", "triturant", "la", "frite"] }, + { "occurences": 1, "pattern": ["se", "triturant", "la", "nouille"] }, + { "occurences": 1, "pattern": ["en", "train", "de", "tapiner"] }, + { "occurences": 1, "pattern": ["en", "train", "de", "se", "faire", "un", "bbq"] }, + { "occurences": 1, "pattern": ["se", "badigeonnant", "de", "crème", "solaire"] }, + { "occurences": 1, "pattern": ["forniquant", "sur", "le", "cul", "d'une", "vache"] } + ] + }, + { + "id": "@COMPLEMENT@", + "distribution": [ + { "occurences": 25, "pattern": [""] }, + { "occurences": 25, "pattern": ["@COMP_ACTION@", "@COMP_LIEU@", "@COMP_TEMPS@"] } + ] + }, + { + "id": "@PROPOSITION@", + "distribution": [ + { "occurences": 40, "pattern": [""] }, + { "occurences": 1, "pattern": ["sur", "lesquels", "je", "défèque", "beaucoup"] }, + { "occurences": 1, "pattern": ["pour", "lesquels", "mon", "dédain", "est", "sans", "limite"] }, + { "occurences": 1, "pattern": ["pour", "lesquels", "mon", "estime", "est", "au", "raz", "des", "pâquerettes"] }, + { "occurences": 1, "pattern": ["que", "j'hais"] }, + { "occurences": 1, "pattern": ["que", "j'exècre"] }, + { "occurences": 1, "pattern": ["que", "j'abhorre"] }, + { "occurences": 1, "pattern": ["que", "je", "déteste"] }, + { "occurences": 1, "pattern": ["qui", "pleurent"] }, + { "occurences": 1, "pattern": ["qui", "puent", "du", "bec"] } + ] + }, + { + "id": "@DET@", + "distribution": [ + { "occurences": 90, "pattern": ["les"] }, + { "occurences": 7, "pattern": ["mes"] }, + { "occurences": 3, "pattern": ["bande", "de"] } + ] + }, + { + "id": "@output@", + "distribution": [ + { "occurences": 1, "pattern": ["@HELLO@", "@DET@", "@NOMINAL@", "@COMPLEMENT@", "@PROPOSITION@"] } + ] + } + ] +} diff --git a/models/gatel.json b/models/gatel.json new file mode 100644 index 0000000..8d5a237 --- /dev/null +++ b/models/gatel.json @@ -0,0 +1,356 @@ +{ + "id": "Gatel", + "name": "Gatel", + "description": "Definitions for generated words of a construct language.", + "moredescription": "The definitions are taken or adapted from the concepts of Concepticon.", + "issentence": false, + "rules": [ + { + "id": "@Plosive@", + "distribution": [ + { "occurences": 5, "pattern": ["p"] }, + { "occurences": 20, "pattern": ["b"] }, + { "occurences": 2, "pattern": ["t"] }, + { "occurences": 14, "pattern": ["d"] }, + { "occurences": 9, "pattern": ["k"] }, + { "occurences": 32, "pattern": ["g"] } + ] + }, + { + "id": "@Affricate@", + "distribution": [ + { "occurences": 5, "pattern": ["pf"] }, + { "occurences": 20, "pattern": ["bv"] }, + { "occurences": 2, "pattern": ["ts"] }, + { "occurences": 14, "pattern": ["dz"] }, + { "occurences": 9, "pattern": ["kx"] }, + { "occurences": 32, "pattern": ["gj"] } + ] + }, + { + "id": "@Consonant1@", + "distribution": [ + { "occurences": 50, "pattern": [""] }, + { "occurences": 20, "pattern": ["l"] }, + { "occurences": 14, "pattern": ["r"] }, + { "occurences": 2, "pattern": ["y\u0308"] }, + { "occurences": 9, "pattern": ["u\u0308"] }, + { "occurences": 5, "pattern": ["i\u0308"] } + ] + }, + { + "id": "@Vowel@", + "distribution": [ + { "occurences": 2, "pattern": ["y"] }, + { "occurences": 14, "pattern": ["u"] }, + { "occurences": 20, "pattern": ["i"] }, + { "occurences": 32, "pattern": ["a"] }, + { "occurences": 5, "pattern": ["o"] }, + { "occurences": 9, "pattern": ["e"] } + ] + }, + { + "id": "@ConsonantCoda@", + "distribution": [ + { "occurences": 40, "pattern": [""] }, + { "occurences": 5, "pattern": ["y\u0308"] }, + { "occurences": 1, "pattern": ["u\u0308"] }, + { "occurences": 10, "pattern": ["i\u0308"] }, + { "occurences": 13, "pattern": ["n"] }, + { "occurences": 3, "pattern": ["m"] }, + { "occurences": 17, "pattern": ["ŋ"] }, + { "occurences": 7, "pattern": ["l"] }, + { "occurences": 2, "pattern": ["r"] } + ] + }, + { + "id": "@Consonant2@", + "distribution": [ + { "occurences": 55, "pattern": ["@Consonant20@"] }, + { "occurences": 20, "pattern": ["@Consonant21@", "@Consonant22@"] } + ] + }, + { + "id": "@Consonant20@", + "distribution": [ + { "occurences": 13, "pattern": ["n"] }, + { "occurences": 16, "pattern": ["m"] }, + { "occurences": 10, "pattern": ["ŋ"] }, + { "occurences": 27, "pattern": ["d"] }, + { "occurences": 23, "pattern": ["b"] }, + { "occurences": 37, "pattern": ["g"] }, + { "occurences": 152, "pattern": ["t"] }, + { "occurences": 97, "pattern": ["p"] }, + { "occurences": 117, "pattern": ["k"] }, + { "occurences": 82, "pattern": ["z"] }, + { "occurences": 48, "pattern": ["v"] }, + { "occurences": 71, "pattern": ["j"] }, + { "occurences": 54, "pattern": ["s"] }, + { "occurences": 42, "pattern": ["f"] }, + { "occurences": 62, "pattern": ["x"] }, + { "occurences": 2, "pattern": ["y\u0308"] }, + { "occurences": 5, "pattern": ["u\u0308"] }, + { "occurences": 7, "pattern": ["i\u0308"] }, + { "occurences": 32, "pattern": ["l"] }, + { "occurences": 20, "pattern": ["r"] } + ] + }, + { + "id": "@Consonant21@", + "distribution": [ + { "occurences": 28, "pattern": ["n"] }, + { "occurences": 6, "pattern": ["m"] }, + { "occurences": 3, "pattern": ["ŋ"] }, + { "occurences": 40, "pattern": ["d"] }, + { "occurences": 34, "pattern": ["b"] }, + { "occurences": 88, "pattern": ["g"] }, + { "occurences": 170, "pattern": ["t"] }, + { "occurences": 75, "pattern": ["p"] }, + { "occurences": 129, "pattern": ["k"] }, + { "occurences": 55, "pattern": ["z"] }, + { "occurences": 10, "pattern": ["v"] }, + { "occurences": 64, "pattern": ["j"] }, + { "occurences": 47, "pattern": ["s"] }, + { "occurences": 14, "pattern": ["f"] }, + { "occurences": 105, "pattern": ["x"] }, + { "occurences": 23, "pattern": ["l"] }, + { "occurences": 19, "pattern": ["r"] } + ] + }, + { + "id": "@Consonant22@", + "distribution": [ + { "occurences": 9, "pattern": ["y\u0308"] }, + { "occurences": 23, "pattern": ["u\u0308"] }, + { "occurences": 46, "pattern": ["i\u0308"] } + ] + }, + { + "id": "@Gatel@", + "distribution": [ + { "occurences": 80, "pattern": ["@Plosive@", "@Consonant1@", "@Vowel@", "@ConsonantCoda@", "@Consonant2@", "@Vowel@", "@ConsonantCoda@"] }, + { "occurences": 20, "pattern": ["@Affricate@", "@Vowel@", "@ConsonantCoda@", "@Consonant2@", "@Vowel@", "@ConsonantCoda@"] } + ] + }, + { + "id": "@Meaning@", + "distribution": [ + { "occurences": 1, "pattern": ["I/me; 1st person singular"] }, + { "occurences": 1, "pattern": ["you/thou; 2nd person singular"] }, + { "occurences": 1, "pattern": ["he/him/she/her; 3rd person singular"] }, + { "occurences": 1, "pattern": ["we/us; 1st person plural"] }, + { "occurences": 1, "pattern": ["you; 2nd person plural"] }, + { "occurences": 1, "pattern": ["they/them; 3rd person plural"] }, + { "occurences": 1, "pattern": ["this; the indicated object, item, etc. close to the speaker"] }, + { "occurences": 1, "pattern": ["that; the indicated object, item, etc. distant from the speaker"] }, + { "occurences": 1, "pattern": ["here; at this place"] }, + { "occurences": 1, "pattern": ["there; in a place that is not here"] }, + { "occurences": 1, "pattern": ["who; which person or people ?"] }, + { "occurences": 1, "pattern": ["what; which thing ?"] }, + { "occurences": 1, "pattern": ["where; at what place ?"] }, + { "occurences": 1, "pattern": ["when; at what time ?"] }, + { "occurences": 1, "pattern": ["how; in what way ?"] }, + { "occurences": 1, "pattern": ["not; negate the meaning of verb or adjective"] }, + { "occurences": 1, "pattern": ["all; the totality of"] }, + { "occurences": 1, "pattern": ["many; an indefinite large number of"] }, + { "occurences": 1, "pattern": ["some; an indefinite quantity of"] }, + { "occurences": 1, "pattern": ["few; an indefinite small number of"] }, + { "occurences": 1, "pattern": ["other; the rest of a group of"] }, + { "occurences": 1, "pattern": ["one; the natural number 1"] }, + { "occurences": 1, "pattern": ["two; the natural number 2"] }, + { "occurences": 1, "pattern": ["three; the natural number 3"] }, + { "occurences": 1, "pattern": ["four; the natural number 4"] }, + { "occurences": 1, "pattern": ["five; the natural number 5"] }, + { "occurences": 1, "pattern": ["big; of a great size"] }, + { "occurences": 1, "pattern": ["long; having much distance from one terminating point on an object or area to another terminating point"] }, + { "occurences": 1, "pattern": ["wide; having a long distance or area between two points, escpecially horizontally "] }, + { "occurences": 1, "pattern": ["thick; relatively large distance from one surface to the opposite in its smallest solid dimension"] }, + { "occurences": 1, "pattern": ["heavy; of great weight"] }, + { "occurences": 1, "pattern": ["small; not big, of small size"] }, + { "occurences": 1, "pattern": ["short; small in length"] }, + { "occurences": 1, "pattern": ["narrow; having a small width "] }, + { "occurences": 1, "pattern": ["thin; not thick, being narrow in the smallest dimension"] }, + { "occurences": 1, "pattern": ["light; not heavy, of small weight"] }, + { "occurences": 1, "pattern": ["woman; female adult"] }, + { "occurences": 1, "pattern": ["man; male adult"] }, + { "occurences": 1, "pattern": ["person; sentient or sapient being"] }, + { "occurences": 1, "pattern": ["child; a young person, or the descendant of a person"] }, + { "occurences": 1, "pattern": ["wife; the female partner in a marriage"] }, + { "occurences": 1, "pattern": ["husband; the male partner in a marriage"] }, + { "occurences": 1, "pattern": ["mother; a woman who has at least one child"] }, + { "occurences": 1, "pattern": ["father; a man who has at least one child"] }, + { "occurences": 1, "pattern": ["animal; any living organism characterized by voluntary movement"] }, + { "occurences": 1, "pattern": ["fish; a vertebrate animal that lives in water"] }, + { "occurences": 1, "pattern": ["bird; a vertebrate animal having wings which, for most species, enables them to fly"] }, + { "occurences": 1, "pattern": ["dog; an animal kept by people as a pet, or to hunt, or to guard"] }, + { "occurences": 1, "pattern": ["louse; an invertebrate parasitic animal that lives on people and other animals"] }, + { "occurences": 1, "pattern": ["snake; a vertebrate animal with a cylindrical limbless body"] }, + { "occurences": 1, "pattern": ["worm; an invertebrate animal with a cylindrical limbless body"] }, + { "occurences": 1, "pattern": ["tree; any large woody plant with a distinct trunk giving rise to branches or leaveses at some distance from the ground"] }, + { "occurences": 1, "pattern": ["forest; a vegetation community dominated by trees and other woody shrubs, growing close enough together that the tree tops touch or overlap"] }, + { "occurences": 1, "pattern": ["stick; a long, thin piece of wood, mainly left in the shape in which it grew, that does not bend"] }, + { "occurences": 1, "pattern": ["fruit; a seed-bearing structure of plants, that can usually be used as food"] }, + { "occurences": 1, "pattern": ["seed; a fertilized plant ovule"] }, + { "occurences": 1, "pattern": ["leaf; the main organ of photosynthesis and transpiration in plants, usually consisting of a flat green blade"] }, + { "occurences": 1, "pattern": ["root; the absorbing and anchoring organ of a plant, usually subterranean"] }, + { "occurences": 1, "pattern": ["tree bark; the exterior covering of the trunk and branches of a tree"] }, + { "occurences": 1, "pattern": ["flower; the reproductive structure of many plants, surrounded by petals"] }, + { "occurences": 1, "pattern": ["grass; a family of non-woody plants bearing long narrow leaves along a stem"] }, + { "occurences": 1, "pattern": ["rope; thick, strong string made of several strands that have been twisted together"] }, + { "occurences": 1, "pattern": ["skin; the tissue forming the outer covering of vertebrates"] }, + { "occurences": 1, "pattern": ["meat; the edible flesh of animals"] }, + { "occurences": 1, "pattern": ["blood; a fluid connective tissue that circulate in blood vessels of vertebrate animals"] }, + { "occurences": 1, "pattern": ["bone; any component of the endoskeletons of vertebrate animals"] }, + { "occurences": 1, "pattern": ["fat; a semi-solid substance occuring in animals and plants, which serves as energy source and energy store"] }, + { "occurences": 1, "pattern": ["egg; an organic vessel in which an embryo develops until it can survive on its own"] }, + { "occurences": 1, "pattern": ["horn; a hard growth of keratin that protrudes from the top of the head of certain animals"] }, + { "occurences": 1, "pattern": ["tail; the appendage of an animal that is attached to its posterior"] }, + { "occurences": 1, "pattern": ["feather; a branching tissue that grows on the skin of certain animals and that protects them against coldness and water, and allows some of them to fly"] }, + { "occurences": 1, "pattern": ["hair; a filament tissue that grows on the skin of certain animals and that protects them against coldness, and serve for sensory input"] }, + { "occurences": 1, "pattern": ["head; the part of the body of an animal which contain the brain, mouth and main sense organs"] }, + { "occurences": 1, "pattern": ["ear; the organ of hearing"] }, + { "occurences": 1, "pattern": ["eye; the organ of vision"] }, + { "occurences": 1, "pattern": ["nose; the organ used to breath and smell"] }, + { "occurences": 1, "pattern": ["mouth; the organ used to ingest food"] }, + { "occurences": 1, "pattern": ["tooth; a hard structure present in the mouth of vertebrate animals, used for eating"] }, + { "occurences": 1, "pattern": ["tongue; a muscular organ in the mouth used to move food around, for tasting, and modifying the air flow from the lungs to produce different sounds"] }, + { "occurences": 1, "pattern": ["nail or claw; the hard keratin part growing at the feet and hands of animals"] }, + { "occurences": 1, "pattern": ["foot; the part of body below the ankle that is used to stand and walk"] }, + { "occurences": 1, "pattern": ["leg; the limb of an animal that extends from the groin to the ankle, and is used for walking"] }, + { "occurences": 1, "pattern": ["knee; the joint in the middle part of a the leg"] }, + { "occurences": 1, "pattern": ["hand; the part of the fore limb below the forearm or wrist"] }, + { "occurences": 1, "pattern": ["wing; the appendage of an animal's body that enables it to fly in the air"] }, + { "occurences": 1, "pattern": ["belly; the lower part of the front of trunk containing the intestines"] }, + { "occurences": 1, "pattern": ["guts; the internal organs of animals"] }, + { "occurences": 1, "pattern": ["neck; the part of the body that connects the head and the trunk"] }, + { "occurences": 1, "pattern": ["back; the read of the body, especially the part between the neck and the end of the spine, and opposite to the chest and belly"] }, + { "occurences": 1, "pattern": ["breast; the fleshy organ containing mammary glands"] }, + { "occurences": 1, "pattern": ["heart; a muscular organ that pump blood through the body"] }, + { "occurences": 1, "pattern": ["liver; a large internal organ that stores and metabolizes nutrients, destroys toxins and produces bile"] }, + { "occurences": 1, "pattern": ["to drink; to consume a liquid from the mouth"] }, + { "occurences": 1, "pattern": ["to eat; to consume something solid or semi-solid, usually food, from the mouth"] }, + { "occurences": 1, "pattern": ["to eat; to consume something solid or semi-solid, usually food, by putting it into the mounth and eventually swallowing it"] }, + { "occurences": 1, "pattern": ["to bite; to clamp the teeth hard on something"] }, + { "occurences": 1, "pattern": ["to suck; to draw a substance into the mouth by creating a vacuum"] }, + { "occurences": 1, "pattern": ["to spit; to forcefully evacuate saliva from the mouth"] }, + { "occurences": 1, "pattern": ["to vomit; to regurgitate contents of the stomach"] }, + { "occurences": 1, "pattern": ["to blow; to expel air through persed lips"] }, + { "occurences": 1, "pattern": ["to breathe; to repeatedly draw air into, and expel it from, the lungs, in order to extract oxygen from it and excrete wast products"] }, + { "occurences": 1, "pattern": ["to laugh; to express pleasure, mirth or derision by peculiar movement of the muscles of the face, and usually accompanied by the emission of explosive sounds from the chest and throat"] }, + { "occurences": 1, "pattern": ["to see; to perceive images with the eye"] }, + { "occurences": 1, "pattern": ["to hear; to perceive sounds with the ear"] }, + { "occurences": 1, "pattern": ["to know; to have met and recognize somebody, or be sure about something"] }, + { "occurences": 1, "pattern": ["to think; to actively and consciously use one's mental powers, usually to form ideas"] }, + { "occurences": 1, "pattern": ["to smell; to perceive the presence of molecules in the air by inhaling them through the nose"] }, + { "occurences": 1, "pattern": ["to fear; to be scared of"] }, + { "occurences": 1, "pattern": ["to sleep; to rest in a state of decreased consciousness and reduced metabolism"] }, + { "occurences": 1, "pattern": ["to live; to be alive"] }, + { "occurences": 1, "pattern": ["to die; to cease to live"] }, + { "occurences": 1, "pattern": ["to kill; to put to death; to end a life"] }, + { "occurences": 1, "pattern": ["to fight; to be involved in physical confrontation"] }, + { "occurences": 1, "pattern": ["to hunt; to chase down prey and (usually) kill it"] }, + { "occurences": 1, "pattern": ["to hit; to hit something that someone aimed for"] }, + { "occurences": 1, "pattern": ["to cut; to perfom an incision, for example, with a knife"] }, + { "occurences": 1, "pattern": ["to split; to divide fully or partly along a more or less straight line"] }, + { "occurences": 1, "pattern": ["to stab; to perforate the surface of something with a pointed tool or weapon"] }, + { "occurences": 1, "pattern": ["to scratch; to rub or scrape with a sharp object"] }, + { "occurences": 1, "pattern": ["to dig; to move earth, rocks out of the way, usually to create a hole"] }, + { "occurences": 1, "pattern": ["to swim; to move through the water, without touching the bottom"] }, + { "occurences": 1, "pattern": ["to fly; to move through the air, without touching the ground"] }, + { "occurences": 1, "pattern": ["to walk; to move from one place to another by moving legs alternately, so that at least one foot is in contact with the floor ar any one time"] }, + { "occurences": 1, "pattern": ["to come; to move toward or to reach either the speaker, the person spoken to, or the subject of the speaker's narrative"] }, + { "occurences": 1, "pattern": ["to go; to move from one place to another by any means"] }, + { "occurences": 1, "pattern": ["to lie (ex. on the ground); to rest in a horizontal, static position, usually on another surface"] }, + { "occurences": 1, "pattern": ["to sit; to be in a position with the upper body upright and the legs resting"] }, + { "occurences": 1, "pattern": ["to stand; to be upright in an erect position, supported by the feet"] }, + { "occurences": 1, "pattern": ["to turn; to change the direction of movement or the direction in which something is facing"] }, + { "occurences": 1, "pattern": ["to fall; to descend in free fall due to the effect of gravity"] }, + { "occurences": 1, "pattern": ["to give; to transfer the possession or holding of an object to another person"] }, + { "occurences": 1, "pattern": ["to hold; to grasp or grip so that the object does not end up at the surface below"] }, + { "occurences": 1, "pattern": ["to squeeze; to apply pressure to something from two or more sides at once"] }, + { "occurences": 1, "pattern": ["to rub; to move one's hand or an object over a surface or other object, maintaining constant contact and applying moderate pressure"] }, + { "occurences": 1, "pattern": ["to wash; to remove dirt and grime from an object, using water (usually with soap)"] }, + { "occurences": 1, "pattern": ["to wipe; to move an object or ustensil over a surface or other object while maintaining contact, in order that a substance be removed from its surface"] }, + { "occurences": 1, "pattern": ["to pull; to apply a force to an object, in order that it moves towards the origin of the force that was applied"] }, + { "occurences": 1, "pattern": ["to push; to apply a force to an object, in order that it moves away from the origin of the force that was applied"] }, + { "occurences": 1, "pattern": ["to throw; to cause an object to move rapidly through the air, with the force of the hand or arm"] }, + { "occurences": 1, "pattern": ["to tie; to establish connection between two or more things"] }, + { "occurences": 1, "pattern": ["to sew; to pass thread repeatedly through fabric or a material, using a needle, in order to join two or more parts or to make a pattern or motif"] }, + { "occurences": 1, "pattern": ["to count; to determine the amount of something"] }, + { "occurences": 1, "pattern": ["to say; to utter specific words or notions"] }, + { "occurences": 1, "pattern": ["to sing; to produce harmonious sounds with one's voice"] }, + { "occurences": 1, "pattern": ["to play; to act in a manner such that one has fun; to engage in playful activities expressly for the purpose of recreation"] }, + { "occurences": 1, "pattern": ["to float; of an object or substance, to be supported by a liquid of greater density that the object, so that part of the object remains above the surface"] }, + { "occurences": 1, "pattern": ["to flow; to move as a fluid from one position to another"] }, + { "occurences": 1, "pattern": ["to freeze; to reach a chemically solid state, by the process of cooling"] }, + { "occurences": 1, "pattern": ["to burn; to put fire on something"] }, + { "occurences": 1, "pattern": ["to burn; to be on fire"] }, + { "occurences": 1, "pattern": ["to swell; to grow larger in volume"] }, + { "occurences": 1, "pattern": ["sun; the particular star from which the planet gets light and heat"] }, + { "occurences": 1, "pattern": ["moon; a natural satellite of a planet"] }, + { "occurences": 1, "pattern": ["star; a luminous celestial body that is made from gases"] }, + { "occurences": 1, "pattern": ["water; common liquid which forms rain, rivers, the sea, and which makes up a large part of the bodies of organisms"] }, + { "occurences": 1, "pattern": ["rain; precipitation in the form of liquid water drops"] }, + { "occurences": 1, "pattern": ["river; a stream of water which flows in a channel from high ground to low ground"] }, + { "occurences": 1, "pattern": ["lake; an enclosed body of water, from which the sea is excluded"] }, + { "occurences": 1, "pattern": ["sea; a body of salt water which is in proxymity to a continent"] }, + { "occurences": 1, "pattern": ["salt; a condiment used to add to or enhance the flavour of food"] }, + { "occurences": 1, "pattern": ["stone; a general term for rock that is used in construction"] }, + { "occurences": 1, "pattern": ["sand; a loose material consisting of small mineral particles, or rock and mineral particles, distinguishable by the maked eye"] }, + { "occurences": 1, "pattern": ["dust; any kind of solid material divided in particles of very small size"] }, + { "occurences": 1, "pattern": ["earth; the soft and loose material forming a great part of the planet surface"] }, + { "occurences": 1, "pattern": ["cloud; suspensions of minute water droplets or ice crystals produced by the condensation of water vapour"] }, + { "occurences": 1, "pattern": ["fog; water droplets or ice crystals suspended in the air in sufficient concentration to reduce visibility appreciably"] }, + { "occurences": 1, "pattern": ["sky; the part of the planet's atmosphere and space outside it that is visible from the planet's surface"] }, + { "occurences": 1, "pattern": ["wind; the motion of air relative to the planet's surface, usually means horizontal air motion"] }, + { "occurences": 1, "pattern": ["snow; a form of frozen precipitation, usually flakes or starlike crystals, matted ice needles or combinations, and often rime-coated"] }, + { "occurences": 1, "pattern": ["ice; the dense substance formed by the freezing of water to the solid state"] }, + { "occurences": 1, "pattern": ["smoke; an aerosol, consisting of visible particles and gases, produced by the incomplete burning of materials"] }, + { "occurences": 1, "pattern": ["fire; the state of combustion in which inflammable material burns, producing heat, flames, and often smoke"] }, + { "occurences": 1, "pattern": ["ash; the incombustible matter remaining after a substance has been incinerated"] }, + { "occurences": 1, "pattern": ["mountain; a feature of the planet's surface that rises high above the base and has generally steep slopes and a relatively small summit area"] }, + { "occurences": 1, "pattern": ["hill; a natural elevation of the land surface, usually rounded"] }, + { "occurences": 1, "pattern": ["road; a long piece of ground that people can walk or drive along from one place to another"] }, + { "occurences": 1, "pattern": ["red; having the color of blood"] }, + { "occurences": 1, "pattern": ["green; having the color of plant's leaves"] }, + { "occurences": 1, "pattern": ["blue; having the pure color of a clear sky"] }, + { "occurences": 1, "pattern": ["yellow; having the color of a yolk"] }, + { "occurences": 1, "pattern": ["white; bright and colorless; reflecting all visible light"] }, + { "occurences": 1, "pattern": ["black; dark and colorless; not reflecting visible light"] }, + { "occurences": 1, "pattern": ["night; the period between sunset and sunrise, when a location faces far away from the sun, thus when the sky is dark"] }, + { "occurences": 1, "pattern": ["day; the period between sunrise and sunset, where one enjoys daylight"] }, + { "occurences": 1, "pattern": ["year; the time it takes a planet to complete one revolution of its sun"] }, + { "occurences": 1, "pattern": ["warm; having a temperature slightly higher than usual, still pleasant"] }, + { "occurences": 1, "pattern": ["warm; having a temperature slightly higher than usual, still pleasant"] }, + { "occurences": 1, "pattern": ["hot; having a high temperature"] }, + { "occurences": 1, "pattern": ["cold; having a low temperature"] }, + { "occurences": 1, "pattern": ["full; containing the most or maximum amount possible in the given available space"] }, + { "occurences": 1, "pattern": ["new; recently made, created, or begun"] }, + { "occurences": 1, "pattern": ["old; having lived or existed for a relatively long period of time"] }, + { "occurences": 1, "pattern": ["good; having desired or positive qualities"] }, + { "occurences": 1, "pattern": ["bad; not good; unfavorable; negative"] }, + { "occurences": 1, "pattern": ["rotten; for organic matter, having changed its colour, smell, or composition, due to being attacked and decomposed by microorganisms"] }, + { "occurences": 1, "pattern": ["dirty; covered with or containing unpleasant substances such as dirt or grime"] }, + { "occurences": 1, "pattern": ["straight; not crooked or bent; having a constant direction throughout its length"] }, + { "occurences": 1, "pattern": ["round; circular or having a circular cross-section in at least one direction"] }, + { "occurences": 1, "pattern": ["sharp; having the ability to cut easily"] }, + { "occurences": 1, "pattern": ["dull; lacking the ability to cut easily; not sharp"] }, + { "occurences": 1, "pattern": ["smooth; not rough; having a surface texture that lacks friction"] }, + { "occurences": 1, "pattern": ["wet; covered with or impregnated with liquid"] }, + { "occurences": 1, "pattern": ["dry; almost free from liquid or moisture"] }, + { "occurences": 1, "pattern": ["correct; to be in accordance with expectations"] }, + { "occurences": 1, "pattern": ["near; having a small intervening distance with regard to something"] }, + { "occurences": 1, "pattern": ["far; having a large intervening distance with regard to something"] }, + { "occurences": 1, "pattern": ["right; something that is on the right side relative to another object"] }, + { "occurences": 1, "pattern": ["left; something that is on the left side relative to another object"] }, + { "occurences": 1, "pattern": ["name; any word or phrase which designate a particular person, place, class, or thing"] } + ] + }, + { + "id": "@output@", + "distribution": [ + { "occurences": 1, "pattern": ["@Gatel@", ": ", "@Meaning@"] } + ] + } + ] +} diff --git a/models/pipotron.json b/models/pipotron.json new file mode 100644 index 0000000..5157a47 --- /dev/null +++ b/models/pipotron.json @@ -0,0 +1,217 @@ +{ + "id": "pipotron", + "name": "PipoTron", + "description": "Des phrases longues et vides de sens.", + "moredescription": "Adapté depuis pipotron.free.fr.", + "issentence": true, + "rules": [ + { + "id": "@P1@", + "distribution": [ + { "occurences": 1, "pattern": ["avec"] }, + { "occurences": 1, "pattern": ["considérant"] }, + { "occurences": 1, "pattern": ["où que nous mène"] }, + { "occurences": 1, "pattern": ["eu égard à"] }, + { "occurences": 1, "pattern": ["vu"] }, + { "occurences": 1, "pattern": ["en ce qui concerne"] }, + { "occurences": 1, "pattern": ["dans le cas particulier de"] }, + { "occurences": 1, "pattern": ["quelle que soit"] }, + { "occurences": 1, "pattern": ["du fait de"] }, + { "occurences": 1, "pattern": ["tant que durera"] }, + { "occurences": 1, "pattern": ["quoi qu'on dise concernant"] }, + { "occurences": 1, "pattern": ["nonobstant"] }, + { "occurences": 1, "pattern": ["compte tenu de"] }, + { "occurences": 1, "pattern": ["malgré"] }, + { "occurences": 1, "pattern": ["pour réagir face à"] }, + { "occurences": 1, "pattern": ["afin de circonvenir à"] }, + { "occurences": 1, "pattern": ["dans le but de pallier à"] }, + { "occurences": 1, "pattern": ["si vous voulez mon avis concernant"] }, + { "occurences": 1, "pattern": ["suite à"] } + ] + }, + { + "id": "@P2@", + "distribution": [ + { "occurences": 1, "pattern": ["la restriction"] }, + { "occurences": 1, "pattern": ["l'orientation"] }, + { "occurences": 1, "pattern": ["la crise"] }, + { "occurences": 1, "pattern": ["l'inertie"] }, + { "occurences": 1, "pattern": ["la difficulté"] }, + { "occurences": 1, "pattern": ["l'austérité"] }, + { "occurences": 1, "pattern": ["la dégradation"] }, + { "occurences": 1, "pattern": ["cette rigueur"] }, + { "occurences": 1, "pattern": ["la dualité de la situation"] }, + { "occurences": 1, "pattern": ["la baisse de confiance"] }, + { "occurences": 1, "pattern": ["la morosité"] }, + { "occurences": 1, "pattern": ["la situation"] }, + { "occurences": 1, "pattern": ["l'ambiance"] }, + { "occurences": 1, "pattern": ["la politique"] }, + { "occurences": 1, "pattern": ["la fragilité"] }, + { "occurences": 1, "pattern": ["la complexité"] }, + { "occurences": 1, "pattern": ["l'inconstance"] }, + { "occurences": 1, "pattern": ["cette inflexion"] } + ] + }, + { + "id": "@P3@", + "distribution": [ + { "occurences": 1, "pattern": ["présente"] }, + { "occurences": 1, "pattern": ["actuelle"] }, + { "occurences": 1, "pattern": ["générale"] }, + { "occurences": 1, "pattern": ["induite"] }, + { "occurences": 1, "pattern": ["conjoncturelle"] }, + { "occurences": 1, "pattern": ["observée"] }, + { "occurences": 1, "pattern": ["contextuelle"] }, + { "occurences": 1, "pattern": ["de ces derniers temps"] }, + { "occurences": 1, "pattern": ["de l'époque actuelle"] }, + { "occurences": 1, "pattern": ["intrinsèque"] }, + { "occurences": 1, "pattern": ["que nous constatons"] } + ] + }, + { + "id": "@P4@", + "distribution": [ + { "occurences": 1, "pattern": ["il convient"] }, + { "occurences": 1, "pattern": ["on se doit"] }, + { "occurences": 1, "pattern": ["il est préférable"] }, + { "occurences": 1, "pattern": ["il serait intéressant"] }, + { "occurences": 1, "pattern": ["il ne faut pas négliger"] }, + { "occurences": 1, "pattern": ["on ne peut se passer"] }, + { "occurences": 1, "pattern": ["il est nécessaire"] }, + { "occurences": 1, "pattern": ["il serait bon"] }, + { "occurences": 1, "pattern": ["je recommande"] }, + { "occurences": 1, "pattern": ["je préconise un audit afin"] }, + { "occurences": 1, "pattern": ["il est très important"] }, + { "occurences": 1, "pattern": ["il ne faut pas s'interdire"] }, + { "occurences": 1, "pattern": ["nous sommes contraints"] }, + { "occurences": 1, "pattern": ["je suggère fortement"] }, + { "occurences": 1, "pattern": ["je n'exclus pas"] }, + { "occurences": 1, "pattern": ["je vous demande"] } + ] + }, + { + "id": "@P5@", + "distribution": [ + { "occurences": 1, "pattern": ["d'étudier"] }, + { "occurences": 1, "pattern": ["d'examiner"] }, + { "occurences": 1, "pattern": ["de favoriser"] }, + { "occurences": 1, "pattern": ["de prendre en considération"] }, + { "occurences": 1, "pattern": ["d'anticiper"] }, + { "occurences": 1, "pattern": ["d'imaginer"] }, + { "occurences": 1, "pattern": ["d'uniformiser"] }, + { "occurences": 1, "pattern": ["de remodeler"] }, + { "occurences": 1, "pattern": ["d'avoir à l'esprit"] }, + { "occurences": 1, "pattern": ["de se remémorer"] }, + { "occurences": 1, "pattern": ["de gérer"] }, + { "occurences": 1, "pattern": ["de fédérer"] }, + { "occurences": 1, "pattern": ["de comprendre"] }, + { "occurences": 1, "pattern": ["d'analyser"] }, + { "occurences": 1, "pattern": ["d'appréhender"] }, + { "occurences": 1, "pattern": ["d'expérimenter"] }, + { "occurences": 1, "pattern": ["d'essayer"] }, + { "occurences": 1, "pattern": ["de caractériser"] }, + { "occurences": 1, "pattern": ["de façonner"] }, + { "occurences": 1, "pattern": ["de revoir"] }, + { "occurences": 1, "pattern": ["de prendre en compte"] }, + { "occurences": 1, "pattern": ["d'arrêter de stigmatiser"] }, + { "occurences": 1, "pattern": ["de considérer"] }, + { "occurences": 1, "pattern": ["de réorganiser"] }, + { "occurences": 1, "pattern": ["d'inventorier"] } + ] + }, + { + "id": "@P6@", + "distribution": [ + { "occurences": 1, "pattern": ["toutes les"] }, + { "occurences": 1, "pattern": ["chacune des"] }, + { "occurences": 1, "pattern": ["la majorité des"] }, + { "occurences": 1, "pattern": ["la simultanéité des"] }, + { "occurences": 1, "pattern": ["l'ensemble des"] }, + { "occurences": 1, "pattern": ["la somme des"] }, + { "occurences": 1, "pattern": ["la totalité des"] }, + { "occurences": 1, "pattern": ["la globalité des"] }, + { "occurences": 1, "pattern": ["les relations des"] }, + { "occurences": 1, "pattern": ["certaines"] }, + { "occurences": 1, "pattern": ["la plus grande partie des"] }, + { "occurences": 1, "pattern": ["les principales"] }, + { "occurences": 1, "pattern": ["systématiquement les"] }, + { "occurences": 1, "pattern": ["précisément les"] } + ] + }, + { + "id": "@P7@", + "distribution": [ + { "occurences": 1, "pattern": ["solutions"] }, + { "occurences": 1, "pattern": ["issues"] }, + { "occurences": 1, "pattern": ["problématiques"] }, + { "occurences": 1, "pattern": ["voies"] }, + { "occurences": 1, "pattern": ["alternatives"] }, + { "occurences": 1, "pattern": ["organisations matricielles"] }, + { "occurences": 1, "pattern": ["améliorations"] }, + { "occurences": 1, "pattern": ["ouvertures"] }, + { "occurences": 1, "pattern": ["synergies"] }, + { "occurences": 1, "pattern": ["actions"] }, + { "occurences": 1, "pattern": ["options"] }, + { "occurences": 1, "pattern": ["décisions"] }, + { "occurences": 1, "pattern": ["modalités"] }, + { "occurences": 1, "pattern": ["hypothèses"] }, + { "occurences": 1, "pattern": ["stratégies"] } + ] + }, + { + "id": "@P8@", + "distribution": [ + { "occurences": 1, "pattern": ["imaginables"] }, + { "occurences": 1, "pattern": ["possibles"] }, + { "occurences": 1, "pattern": ["s'offrant à nous"] }, + { "occurences": 1, "pattern": ["de bon sens"] }, + { "occurences": 1, "pattern": ["envisageables"] }, + { "occurences": 1, "pattern": ["éventuelles"] }, + { "occurences": 1, "pattern": ["réalisables"] }, + { "occurences": 1, "pattern": ["déclinables"] }, + { "occurences": 1, "pattern": ["pertinentes"] }, + { "occurences": 1, "pattern": ["que nous connaissons"] }, + { "occurences": 1, "pattern": ["évidentes"] }, + { "occurences": 1, "pattern": ["optimales"] }, + { "occurences": 1, "pattern": ["opportunes"] }, + { "occurences": 1, "pattern": ["emblématiques"] }, + { "occurences": 1, "pattern": ["draconiennes"] } + ] + }, + { + "id": "@P9@", + "distribution": [ + { "occurences": 1, "pattern": ["à long terme"] }, + { "occurences": 1, "pattern": ["pour longtemps"] }, + { "occurences": 1, "pattern": ["à l'avenir"] }, + { "occurences": 1, "pattern": ["pour le futur"] }, + { "occurences": 1, "pattern": ["depuis longtemps"] }, + { "occurences": 1, "pattern": ["à court terme"] }, + { "occurences": 1, "pattern": ["rapidement"] }, + { "occurences": 1, "pattern": ["dans une perspective correcte"] }, + { "occurences": 1, "pattern": ["avec toute la prudence requise"] }, + { "occurences": 1, "pattern": ["de toute urgence"] }, + { "occurences": 1, "pattern": ["même si ce n'est pas facile"] }, + { "occurences": 1, "pattern": ["même si nous devons en tirer des conséquences"] }, + { "occurences": 1, "pattern": ["très attentativement"] }, + { "occurences": 1, "pattern": ["avec beaucoup de recul"] }, + { "occurences": 1, "pattern": ["parce que la nature a horreur du vide"] }, + { "occurences": 1, "pattern": ["parce que nous ne faisons plus le même métier"] }, + { "occurences": 1, "pattern": ["toutes choses étant égales par ailleurs"] }, + { "occurences": 1, "pattern": ["et déjà en notre possession"] }, + { "occurences": 1, "pattern": ["en prenant toutes les précautions qui s'imposent"] }, + { "occurences": 1, "pattern": ["si l'on veut s'en sortir un jour"] }, + { "occurences": 1, "pattern": ["parce qu'il est temps d'agir"] }, + { "occurences": 1, "pattern": ["parce qu'il s'agit de notre dernière chance"] }, + { "occurences": 1, "pattern": ["parce que les mêmes causes produisent les mêmes effets"] }, + { "occurences": 1, "pattern": ["parce que nous le valons bien"] } + ] + }, + { + "id": "@output@", + "distribution": [ + { "occurences": 1, "pattern": ["@P1@", "@P2@", "@P3@", ",", "@P4@", "@P5@", "@P6@", "@P7@", "@P8@", ",", "@P9@"] } + ] + } + ] +} diff --git a/models/villages.json b/models/villages.json new file mode 100644 index 0000000..664e18d --- /dev/null +++ b/models/villages.json @@ -0,0 +1,289 @@ +{ + "id": "Villages", + "name": "Villages", + "description": "Noms de patelins imaginaires ou réels.", + "moredescription": "Basés sur des noms de communes françaises.", + "issentence": false, + "rules": [ + { + "id": "@PrenomMasc@", + "distribution": [ + { "occurences": 1, "pattern": ["Jérome"] }, + { "occurences": 1, "pattern": ["Benoit"] }, + { "occurences": 1, "pattern": ["Alban"] }, + { "occurences": 5, "pattern": ["André"] }, + { "occurences": 1, "pattern": ["Bernard"] }, + { "occurences": 1, "pattern": ["Christophe"] }, + { "occurences": 1, "pattern": ["Cyr"] }, + { "occurences": 2, "pattern": ["Denis"] }, + { "occurences": 3, "pattern": ["Didier"] }, + { "occurences": 3, "pattern": ["Éloi"] }, + { "occurences": 8, "pattern": ["Étienne"] }, + { "occurences": 3, "pattern": ["Georges"] }, + { "occurences": 3, "pattern": ["Germain"] }, + { "occurences": 1, "pattern": ["Jacques"] }, + { "occurences": 8, "pattern": ["Jean"] }, + { "occurences": 2, "pattern": ["Julien"] }, + { "occurences": 1, "pattern": ["Just"] }, + { "occurences": 1, "pattern": ["Laurent"] }, + { "occurences": 1, "pattern": ["Marcel"] }, + { "occurences": 6, "pattern": ["Martin"] }, + { "occurences": 3, "pattern": ["Maurice"] }, + { "occurences": 1, "pattern": ["Paul"] }, + { "occurences": 2, "pattern": ["Pierre"] }, + { "occurences": 1, "pattern": ["Rémi"] }, + { "occurences": 1, "pattern": ["Sulpice"] } + ] + }, + { + "id": "@PrenomFem@", + "distribution": [ + { "occurences": 1, "pattern": ["Agnès"] }, + { "occurences": 3, "pattern": ["Anne"] }, + { "occurences": 8, "pattern": ["Croix"] }, + { "occurences": 1, "pattern": ["Eulalie"] }, + { "occurences": 1, "pattern": ["Euphémie"] }, + { "occurences": 3, "pattern": ["Foi"] }, + { "occurences": 1, "pattern": ["Geneviève"] }, + { "occurences": 1, "pattern": ["Julie"] }, + { "occurences": 5, "pattern": ["Marie"] }, + { "occurences": 1, "pattern": ["Olive"] } + ] + }, + { + "id": "@LieuMasc@", + "distribution": [ + { "occurences": 1, "pattern": ["Bois"] }, + { "occurences": 1, "pattern": ["Bas"] }, + { "occurences": 1, "pattern": ["Château"] }, + { "occurences": 1, "pattern": ["Châtel"] }, + { "occurences": 1, "pattern": ["Col"] }, + { "occurences": 1, "pattern": ["Désert"] }, + { "occurences": 1, "pattern": ["Haut"] }, + { "occurences": 1, "pattern": ["Lac"] }, + { "occurences": 1, "pattern": ["Moulin"] }, + { "occurences": 1, "pattern": ["Pont"] }, + { "occurences": 1, "pattern": ["Port"] } + ] + }, + { + "id": "@LieuFem@", + "distribution": [ + { "occurences": 1, "pattern": ["Forêt"] }, + { "occurences": 1, "pattern": ["Chapelle"] }, + { "occurences": 1, "pattern": ["Colline"] }, + { "occurences": 1, "pattern": ["Montagne"] }, + { "occurences": 1, "pattern": ["Mer"] }, + { "occurences": 1, "pattern": ["Loge"] }, + { "occurences": 1, "pattern": ["Tour"] } + ] + }, + { + "id": "@LieuPlur@", + "distribution": [ + { "occurences": 1, "pattern": ["Bois"] }, + { "occurences": 1, "pattern": ["Eaux"] }, + { "occurences": 1, "pattern": ["Loges"] }, + { "occurences": 1, "pattern": ["Monts"] }, + { "occurences": 1, "pattern": ["Moulins"] }, + { "occurences": 1, "pattern": ["Mines"] } + ] + }, + { + "id": "@Riviere@", + "distribution": [ + { "occurences": 1, "pattern": ["Ain"] }, + { "occurences": 1, "pattern": ["Aisne"] }, + { "occurences": 1, "pattern": ["Allier"] }, + { "occurences": 1, "pattern": ["Ardèche"] }, + { "occurences": 1, "pattern": ["Ariège"] }, + { "occurences": 1, "pattern": ["Aube"] }, + { "occurences": 1, "pattern": ["Aude"] }, + { "occurences": 1, "pattern": ["Aveyron"] }, + { "occurences": 2, "pattern": ["Charente"] }, + { "occurences": 2, "pattern": ["Cher"] }, + { "occurences": 1, "pattern": ["Corrèze"] }, + { "occurences": 1, "pattern": ["Creuse"] }, + { "occurences": 1, "pattern": ["Dordogne"] }, + { "occurences": 1, "pattern": ["Doubs"] }, + { "occurences": 1, "pattern": ["Drôme"] }, + { "occurences": 1, "pattern": ["Essone"] }, + { "occurences": 2, "pattern": ["Eure"] }, + { "occurences": 1, "pattern": ["Gard"] }, + { "occurences": 3, "pattern": ["Garonne"] }, + { "occurences": 1, "pattern": ["Gers"] }, + { "occurences": 1, "pattern": ["Hérault"] }, + { "occurences": 1, "pattern": ["Ille"] }, + { "occurences": 2, "pattern": ["Indre"] }, + { "occurences": 1, "pattern": ["Isère"] }, + { "occurences": 2, "pattern": ["Loir"] }, + { "occurences": 6, "pattern": ["Loire"] }, + { "occurences": 1, "pattern": ["Loiret"] }, + { "occurences": 2, "pattern": ["Lot"] }, + { "occurences": 1, "pattern": ["Lozère"] }, + { "occurences": 1, "pattern": ["Maine"] }, + { "occurences": 4, "pattern": ["Marne"] }, + { "occurences": 1, "pattern": ["Mayenne"] }, + { "occurences": 1, "pattern": ["Meurthe"] }, + { "occurences": 1, "pattern": ["Meuse"] }, + { "occurences": 2, "pattern": ["Moselle"] }, + { "occurences": 1, "pattern": ["Nièvre"] }, + { "occurences": 2, "pattern": ["Oise"] }, + { "occurences": 1, "pattern": ["Orne"] }, + { "occurences": 2, "pattern": ["Rhin"] }, + { "occurences": 2, "pattern": ["Rhône"] }, + { "occurences": 2, "pattern": ["Saône"] }, + { "occurences": 1, "pattern": ["Sarthe"] }, + { "occurences": 4, "pattern": ["Seine"] }, + { "occurences": 1, "pattern": ["Sèvre"] }, + { "occurences": 1, "pattern": ["Somme"] }, + { "occurences": 2, "pattern": ["Tarn"] }, + { "occurences": 1, "pattern": ["Var"] }, + { "occurences": 1, "pattern": ["Vendée"] }, + { "occurences": 2, "pattern": ["Vienne"] }, + { "occurences": 1, "pattern": ["Vilaine"] }, + { "occurences": 1, "pattern": ["Yonne"] }, + { "occurences": 10, "pattern": ["Mer"] } + ] + }, + { + "id": "@NomLieuMasc@", + "distribution": [ + { "occurences": 1, "pattern": ["Angle"] }, + { "occurences": 1, "pattern": ["Château"] }, + { "occurences": 1, "pattern": ["Castel"] }, + { "occurences": 1, "pattern": ["Col"] }, + { "occurences": 1, "pattern": ["Lieu"] }, + { "occurences": 1, "pattern": ["Mont"] }, + { "occurences": 1, "pattern": ["Pont"] }, + { "occurences": 1, "pattern": ["Port"] }, + { "occurences": 1, "pattern": ["Pré"] }, + { "occurences": 1, "pattern": ["Roque"] }, + { "occurences": 1, "pattern": ["Roche"] } + ] + }, + { + "id": "@NomLieuFem@", + "distribution": [ + { "occurences": 1, "pattern": ["Pierre"] }, + { "occurences": 1, "pattern": ["Rive"] }, + { "occurences": 1, "pattern": ["Roche"] }, + { "occurences": 1, "pattern": ["Roque"] }, + { "occurences": 1, "pattern": ["Ville"] } + ] + }, + { + "id": "@AdjLieuMasc@", + "distribution": [ + { "occurences": 1, "pattern": ["beau"] }, + { "occurences": 1, "pattern": ["bel"] }, + { "occurences": 1, "pattern": ["bon"] }, + { "occurences": 1, "pattern": ["brun"] }, + { "occurences": 1, "pattern": ["clar"] }, + { "occurences": 1, "pattern": ["clair"] }, + { "occurences": 1, "pattern": ["fort"] }, + { "occurences": 1, "pattern": ["franc"] }, + { "occurences": 1, "pattern": ["neuf"] }, + { "occurences": 1, "pattern": ["rond"] } + ] + }, + { + "id": "@AdjLieuFem@", + "distribution": [ + { "occurences": 1, "pattern": ["belle"] }, + { "occurences": 1, "pattern": ["bonne"] }, + { "occurences": 1, "pattern": ["brune"] }, + { "occurences": 1, "pattern": ["claire"] }, + { "occurences": 1, "pattern": ["forte"] }, + { "occurences": 1, "pattern": ["franche"] }, + { "occurences": 1, "pattern": ["neuve"] }, + { "occurences": 1, "pattern": ["ronde"] } + ] + }, + { + "id": "@Nom2LieuMasc@", + "distribution": [ + { "occurences": 1, "pattern": ["bourg"] }, + { "occurences": 1, "pattern": ["château"] }, + { "occurences": 1, "pattern": ["châtel"] }, + { "occurences": 1, "pattern": ["col"] }, + { "occurences": 1, "pattern": ["lieu"] }, + { "occurences": 1, "pattern": ["mont"] }, + { "occurences": 1, "pattern": ["pont"] }, + { "occurences": 1, "pattern": ["port"] }, + { "occurences": 1, "pattern": ["pré"] }, + { "occurences": 1, "pattern": ["réal"] }, + { "occurences": 1, "pattern": ["roc"] } + ] + }, + { + "id": "@Nom2LieuFem@", + "distribution": [ + { "occurences": 1, "pattern": ["pierre"] }, + { "occurences": 1, "pattern": ["rive"] }, + { "occurences": 1, "pattern": ["roche"] }, + { "occurences": 1, "pattern": ["ville"] } + ] + }, + { + "id": "@Adj2LieuMasc@", + "distribution": [ + { "occurences": 1, "pattern": ["Apre"] }, + { "occurences": 1, "pattern": ["Beau"] }, + { "occurences": 1, "pattern": ["Bel"] }, + { "occurences": 1, "pattern": ["Bon"] }, + { "occurences": 1, "pattern": ["Clar"] }, + { "occurences": 1, "pattern": ["Clair"] }, + { "occurences": 1, "pattern": ["Fort"] }, + { "occurences": 1, "pattern": ["Franc"] }, + { "occurences": 1, "pattern": ["Haut"] }, + { "occurences": 1, "pattern": ["Long"] }, + { "occurences": 1, "pattern": ["Neuf"] } + ] + }, + { + "id": "@Adj2LieuFem@", + "distribution": [ + { "occurences": 1, "pattern": ["Belle"] }, + { "occurences": 1, "pattern": ["Bonne"] }, + { "occurences": 1, "pattern": ["Claire"] }, + { "occurences": 1, "pattern": ["Forte"] }, + { "occurences": 1, "pattern": ["Franche"] }, + { "occurences": 1, "pattern": ["Haute"] }, + { "occurences": 1, "pattern": ["Longue"] }, + { "occurences": 1, "pattern": ["Neu"] } + ] + }, + { + "id": "@Part@", + "distribution": [ + { "occurences": 3, "pattern": ["Saint", "-", "@PrenomMasc@"] }, + { "occurences": 3, "pattern": ["Sainte", "-", "@PrenomFem@"] }, + { "occurences": 1, "pattern": ["le", "-", "@LieuMasc@"] }, + { "occurences": 1, "pattern": ["la", "-", "@LieuFem@"] }, + { "occurences": 1, "pattern": ["les", "-", "@LieuPlur@"] }, + { "occurences": 8, "pattern": ["@NomLieuMasc@", "@AdjLieuMasc@"] }, + { "occurences": 8, "pattern": ["@NomLieuFem@", "@AdjLieuFem@"] }, + { "occurences": 8, "pattern": ["@Adj2LieuMasc@", "@Nom2LieuMasc@"] }, + { "occurences": 8, "pattern": ["@Adj2LieuFem@", "@Nom2LieuFem@"] } + ] + }, + { + "id": "@PartFin@", + "distribution": [ + { "occurences": 1, "pattern": ["du", "-", "@LieuMasc@"] }, + { "occurences": 1, "pattern": ["de", "-", "la", "-", "@LieuFem@"] }, + { "occurences": 1, "pattern": ["des", "-", "@LieuPlur@"] }, + { "occurences": 1, "pattern": ["sur", "-", "@Riviere@"] } + ] + }, + { + "id": "@output@", + "distribution": [ + { "occurences": 6, "pattern": ["@Part@"] }, + { "occurences": 2, "pattern": ["@Part@", "-", "@Part@"] }, + { "occurences": 2, "pattern": ["@Part@", "-", "@PartFin@"] } + ] + } + ] +}