add demo markov tree
This commit is contained in:
parent
26c0cf0613
commit
f1c1e11d50
71
markov-tree/index.mjs
Normal file
71
markov-tree/index.mjs
Normal 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 l’atelier qui aura duré près d’une 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" +
|
||||
"L’atelier aborde la définition d’un 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 d’accè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
63
markov-tree/package-lock.json
generated
Normal 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
6
markov-tree/package.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"acausal": "^2.0.3",
|
||||
"js-markov": "^3.0.3"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user