add demo markov tree

This commit is contained in:
Tykayn 2023-04-11 14:35:16 +02:00 committed by tykayn
parent 26c0cf0613
commit f1c1e11d50
3 changed files with 140 additions and 0 deletions

71
markov-tree/index.mjs Normal file
View File

@ -0,0 +1,71 @@
import {MarkovChain} from 'acausal';
// Sample Data
const phrases = ['Voici quelques astuces pour bien prendre en main le mammouth' +
'Si vous êtes un artiste en quête de succès mondial ' +
'Pensez à vous présenter publiquement pour que tout le monde sache un peu plus qui vous êtes. ' +
'Pensez aussi à mettre un avatar sur votre profil!',
"Oui il paraît. Chez les gens qui font de l'it aussi, " +
'Bienvenue a la maison sur #cipherbliss' +
"y'a probablement pas assez de gens compétents pour remplir des programmes quotidiens j'imagine." +
"ce qui est assez exceptionnel de mon point de vue",
"ou alors les gens compétents n'aiment pas la corruption",
"j'envisage de m'offrir une remorque à vélo pour trimballer la fille qui grandit bien et donc fait un brin tanguer le vélo dans son siège sur le porte bagage." +
' encore faut il qu\'elle ait un réel pouvoir sur la mise en place.\n' +
"si vous avez de recommandations de remorque #vélo pour ça je suis preneur.",
'enjoy! :)', 'Une assemblée citoyenne c\'est bien,' +
'aujourd\'hui 820 mille sur 4 millions) soient difficiles à obtenir par design' +
'Ou alors c\'est de l\'enfumage comme avec ripadp ou tout est fait pour que les soutiens ' +
"faut essayer d'abord avec des petits trucs" +
"avant de te lancer dans la sauvegarde de ton tera de bazar.\n" +
"si tu veux je peux faire un live audio ou partage d'écran un de ces jours pour te montrer.\n" +
"\n" +
"Le concept de base c'est que borg travaille dans un dossier qu'on lui demande," +
"c'est un peu comme si tu faisais une archive zip de tes trucs à sauvegarder.\n" +
"tu n'as plus qu'à synchroniser ce zip avec d'autres serveurs et disques.\n" +
"se faire attaquer par des billets de banque de moins de 100 balles," +
"c'est ce qui s'appelle subir des petites coupures.",
"et tu peux extraire des dossiers de ton zip pour restaurer tes sauvegardes.",
'même en cas de soutien réussi on ne garantit pas que ça sera adopté et respecté.'];
let article1 = ["ai animé un atelier au cours du premier camp CHATONS qui a eu lieu le week-end dernier." +
"(Le Collectif des Hébergeurs Alternatifs, Transparents, Ouverts, Neutres et Solidaires vise à rassembler des structures proposant des services en ligne libres, éthiques et décentralisés" +
"afin de permettre aux utilisateur⋅ices de trouver rapidement des alternatives respectueuses de leurs données et de leur vie privée)\n" +
"Pas de compte rendu du camp en lui même pour tout de suite, cependant voici un résumé de latelier qui aura duré près dune heure.\n" +
"https://libreto.sans-nuage.fr/camps-chatons/programme\n" +
"Comment se protéger des pertes de données et ne pas perdre la confiance et les précieuses données des membres de son CHATONS?\n" +
"Latelier aborde la définition dun modèle de menace pour savoir contre quoi se prémunir" +
"et quels critères de qualité utiliser pour réaliser automatiquement ses sauvegardes en tant que particulier" +
"ou en tant que CHATONS.\n" +
"On y voit de la façon la plus « grand public » à la façon la plus « techno geek » " +
"comment récupérer ses données éparpillées en ligne, historiser, chiffrer, dédupliquer, compresser, répliquer, partager les clés daccès, et prévoir des restaurations périodiques," +
"de sorte que les données les plus cruciales survivent à leurs administrateurs et administratrices."]
// article1 = article1.map(name => name.split(','))
const names = [...phrases, ...article1];
const caractères_par_proposition = 15;
const propositions_generated = 3;
// Prepare Data Source - the class expects an array of arrays.
const src = names.map(name => name.split(' '));
// console.log('src', src)
// Create the Markov Chain from the source data.
const chain = new MarkovChain({
// seed: 33, // Random Seed - if this is empty it will be generated.
maxOrder: caractères_par_proposition, // Maximum Order - Chain will generate orders up to this value.
sequences: src, // Source data, expects an array of arrays.
});
// Generate 5 picks.
for (let i = 0; i < propositions_generated; i += 1) {
const pick = chain.generate({
min: 4, // Min Picks - This will force the model to pick at least 4 times.
max: caractères_par_proposition, // Max Picks - Stops generation after 10 picks if no end has been reached.
order: 2, // Order - The largest gram size used to calculate the next pick.
// strict: false // Strict Order - Dynamically adjusts order up or down each pick if false.
});
console.log(pick.join(' '));
}

63
markov-tree/package-lock.json generated Normal file
View File

@ -0,0 +1,63 @@
{
"name": "markov-tree",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"dependencies": {
"acausal": "^2.0.3",
"js-markov": "^3.0.3"
}
},
"node_modules/acausal": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/acausal/-/acausal-2.0.3.tgz",
"integrity": "sha512-vQfdg4+TiS3sKqMcYpDmMFcfAAUH4rhbZW/KBxDg1o2d0xx+inDCEsu/xFEyzCwxOnSc9XjaPrmxDTRLTNoafQ==",
"dependencies": {
"random-js": "2.1.0",
"scalr": "1.1.4"
}
},
"node_modules/js-markov": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/js-markov/-/js-markov-3.0.3.tgz",
"integrity": "sha512-UgKhwGn5G2XgPr13VK73ExrMVsZCrr7XbH34mKAD96qwjMg+3w0wgUDeJg6g9YqMhabLElFm3Kr8P5Ej9KKFyg=="
},
"node_modules/random-js": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/random-js/-/random-js-2.1.0.tgz",
"integrity": "sha512-CRUyWmnzmZBA7RZSVGq0xMqmgCyPPxbiKNLFA5ud7KenojVX2s7Gv+V7eB52beKTPGxWRnVZ7D/tCIgYJJ8vNQ=="
},
"node_modules/scalr": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/scalr/-/scalr-1.1.4.tgz",
"integrity": "sha512-eLMDJaFrI8o8V7q4IIdzZIV5T8U/+GziIkyIRkPP1hdTHWkz6Ln4zLvLs0oaiqN/4nGeDsI0GrjO/f8UMkVK6g=="
}
},
"dependencies": {
"acausal": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/acausal/-/acausal-2.0.3.tgz",
"integrity": "sha512-vQfdg4+TiS3sKqMcYpDmMFcfAAUH4rhbZW/KBxDg1o2d0xx+inDCEsu/xFEyzCwxOnSc9XjaPrmxDTRLTNoafQ==",
"requires": {
"random-js": "2.1.0",
"scalr": "1.1.4"
}
},
"js-markov": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/js-markov/-/js-markov-3.0.3.tgz",
"integrity": "sha512-UgKhwGn5G2XgPr13VK73ExrMVsZCrr7XbH34mKAD96qwjMg+3w0wgUDeJg6g9YqMhabLElFm3Kr8P5Ej9KKFyg=="
},
"random-js": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/random-js/-/random-js-2.1.0.tgz",
"integrity": "sha512-CRUyWmnzmZBA7RZSVGq0xMqmgCyPPxbiKNLFA5ud7KenojVX2s7Gv+V7eB52beKTPGxWRnVZ7D/tCIgYJJ8vNQ=="
},
"scalr": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/scalr/-/scalr-1.1.4.tgz",
"integrity": "sha512-eLMDJaFrI8o8V7q4IIdzZIV5T8U/+GziIkyIRkPP1hdTHWkz6Ln4zLvLs0oaiqN/4nGeDsI0GrjO/f8UMkVK6g=="
}
}
}

6
markov-tree/package.json Normal file
View File

@ -0,0 +1,6 @@
{
"dependencies": {
"acausal": "^2.0.3",
"js-markov": "^3.0.3"
}
}