fakedata/generator.html
changeset 5 490e4d1b6fee
parent 4 26a901771957
child 6 14dd1980b0b9
equal deleted inserted replaced
4:26a901771957 5:490e4d1b6fee
     1 <!DOCTYPE html>
       
     2 <html lang="fr">
       
     3     <head>
       
     4         <meta charset="utf-8" />
       
     5     </head>
       
     6     <body>
       
     7         <script>
       
     8             var TOPIC_COUNT = 15, WORDS_PER_TOPIC = 20, SEGMENT_COUNT = 200;
       
     9 
       
    10 /* Thésaurus IEP Lyon
       
    11  http://doc.sciencespo-lyon.fr/Signal/index.php?r=motcle/search
       
    12  JSON.stringify($('.treeview>li>ul>li>ul>li:visible').map(function() { return { "words": $(this).find("span").map(function() { return $(this).text().trim()}).get().filter(function(a) { return (a.length && a.length < 20) })}}).get().filter(function(a){return a.words.length > 10}))
       
    13  * */
       
    14 
       
    15             var thesaurus = [{
       
    16                 "words" : ["administration", "acte administratif", "bureaucratie", "centralisation", "commune", "communauté urbaine", "maire", "municipalité", "département", "région", "décentralisation", "déconcentration", "délégation", "titre de séjour", "domaine public", "bien public", "fonction publique", "agent contractuel", "fonctionnaire", "haut fonctionnaire", "gestion publique", "intérêt général", "marché public", "appel d'offres", "médiateur", "ministère", "personne publique", "politique publique", "préfet", "préfet de région", "service public", "concession", "protection civile", "technocratie", "usager"]
       
    17             }, {
       
    18                 "words" : ["finances publiques", "budget de l'Etat", "cour des comptes", "déficit budgétaire", "dépenses publiques", "dépenses de santé", "dépenses militaires", "dépenses sociales", "dette extérieure", "dette publique", "financement public", "finances locales", "loi de finances", "recettes publiques", "subvention", "trésor public"]
       
    19             }, {
       
    20                 "words" : ["fiscalité", "contribuable", "douane", "droit fiscal", "évasion fiscale", "fiscalité locale", "impôt", "impôt direct", "impôt foncier", "impôt indirect", "impôt sur le revenu", "redevance", "politique fiscale", "taxe"]
       
    21             }, {
       
    22                 "words" : ["construction", "développement local", "droit de préemption", "droit de propriété", "droit foncier", "eau potable", "équipement", "infrastructure", "marché foncier", "propriété", "expropriation", "propriété foncière", "travaux publics"]
       
    23             }, {
       
    24                 "words" : ["transport", "accident", "aéroport", "canal", "port", "réseau de transport", "autoroute", "stationnement", "moyen de transport", "automobile", "avion", "bateau", "métro", "train", "transport aérien", "compagnie aérienne", "transport en commun", "transport fluvial", "transport maritime", "transport public", "transport routier", "sécurité routière", "transport urbain", "circulation urbaine", "piéton"]
       
    25             }, {
       
    26                 "words" : ["urbanisme", "aménagement urbain", "gestion urbaine", "immeuble", "marché immobilier", "reconstruction", "urbanisation", "vie urbaine", "ville", "banlieue", "centre ville", "ghetto", "quartier", "village", "ville nouvelle", "zone"]
       
    27             }, {
       
    28                 "words" : ["culture", "animation", "culture de masse", "équipement culturel", "francophonie", "identité culturelle", "culture populaire", "langue", "langue maternelle", "langue régionale", "minorité culturelle", "pluralisme culturel", "festival", "spectacle", "mécénat", "patrimoine culturel", "monument historique", "pratique culturelle", "lecture", "public", "vie culturelle"]
       
    29             }, {
       
    30                 "words" : ["droit", "clandestinité", "droit comparé", "droit d'asile", "asile politique", "droit international", "droit communautaire", "droit européen", "droit privé", "droit civil", "droit pénal", "droit public", "droit administratif", "nationalité", "naturalisation", "nom", "régime juridique", "responsabilité", "sécurité juridique", "sources du droit", "accord", "charte", "constitution", "constitutionnalité", "contrat", "convention", "coutume", "décret", "directive", "législation", "code", "légalité", "loi", "ordonnance", "quota", "règlement", "réglementation", "résolution", "traité", "statut", "tutelle"]
       
    31             }, {
       
    32                 "words" : ["justice", "contentieux", "arbitrage", "condamnation", "décision judiciaire", "immunité", "indemnisation", "jurisprudence", "médiation", "prescription", "preuve", "procédure", "procédure pénale", "procès", "recours", "juridiction", "cour d'appel", "cour d'assises", "juridiction suprême", "tribunal", "tribunal d'instance", "magistrature", "avocat", "juge", "sanction", "expulsion", "extradition", "peine", "peine de mort", "prison", "détenu", "saisie", "système judiciaire"]
       
    33             }, {
       
    34                 "words" : ["ordre public", "amnistie", "arrestation", "autodéfense", "infraction", "abus sexuel", "blanchiment", "crime", "crime de guerre", "délit", "escroquerie", "espionnage", "fraude", "génocide", "massacre", "meurtre", "piratage", "prise d'otage", "récidive", "torture", "trafic", "trafic de drogue", "viol", "milice", "police", "répression", "sécurité", "victime"]
       
    35             }, {
       
    36                 "words" : ["accord commercial", "accord économique", "aide économique", "aide technique", "balance commerciale", "commerce extérieur", "embargo", "exportation", "importation", "libéralisation", "libre échange", "marché commun", "protectionnisme", "échange inégal", "sanction économique", "union économique", "zone franche"]
       
    37             }, {
       
    38                 "words" : ["monnaie", "change", "marché des changes", "taux de change", "convertibilité", "déflation", "deutschmark", "dévaluation", "dollar", "écu", "euro", "franc", "inflation", "marché monétaire", "masse monétaire", "paiement", "moyen de paiement", "politique monétaire", "système monétaire", "union monétaire", "yen", "zone monétaire"]
       
    39             }, {
       
    40                 "words" : ["aide publique", "analyse économique", "choix économique", "déréglementation", "disparité régionale", "nationalisation", "plan", "contrat de plan", "planification", "pouvoir économique", "privatisation", "réforme économique", "régulation", "relance économique"]
       
    41             }, {
       
    42                 "words" : ["activité économique", "compétitivité", "crise économique", "cycle économique", "marché", "concurrence", "demande", "monopole", "offre", "stocks", "pénurie", "production", "produit", "productivité", "vie économique"]
       
    43             }, {
       
    44                 "words" : ["système économique", "commerce équitable", "économie de marché", "économie dirigée", "économie du savoir", "économie numérique", "économie ouverte", "économie régionale", "économie locale", "économie sociale", "économie socialiste", "économie solidaire", "modèle économique", "secteur d'activité", "secteur primaire", "secteur privé", "secteur public", "secteur secondaire", "secteur tertiaire"]
       
    45             }, {
       
    46                 "words" : ["système financier", "assurances", "assurance vie", "banque", "banque centrale", "bourse des valeurs", "action boursière", "cours des valeurs", "second marché", "valeur mobilière", "capitalisation", "créance", "crédit", "microcrédit", "crise financière", "don", "endettement", "épargne", "financement", "fonds de pension", "hypothèque", "investissement", "marché financier", "obligation", "place financière", "placement financier", "prêt", "spéculation", "système bancaire", "taux d'intérêt"]
       
    47             }, {
       
    48                 "words" : ["entreprise", "actionnariat", "actionnaire", "chef d'entreprise", "droit commercial", "faillite", "management", "concentration", "restructuration", "association", "coopérative", "entreprise publique", "filiale", "mutuelle", "organisme", "droit des sociétés", "vie de l'entreprise"]
       
    49             }, {
       
    50                 "words" : ["industrie", "bien d'équipement", "groupe industriel", "industrialisation", "industrie chimique", "industrie de base", "industrie du papier", "industrie mécanique", "industrie nucléaire", "industrie spatiale", "industrie textile", "ingénierie", "délocalisation", "produit industriel", "brevet", "qualité", "sous traitance"]
       
    51             }, {
       
    52                 "words" : ["agriculture", "agriculteur", "milieu rural", "pêche", "politique agricole", "production agricole", "élevage", "produit agricole", "alcool", "tabac", "produit alimentaire", "viticulture", "structure agraire", "réforme agraire"]
       
    53             }, {
       
    54                 "words" : ["environnement", "animal", "barrage", "sécheresse", "séisme", "climat", "cours d'eau", "désert", "espace", "forêt", "île", "incendie", "inondation", "irrigation", "lac", "littoral", "mer", "milieu naturel", "mine - gisement", "montagne", "paysage", "terre", "végétation"]
       
    55             }, {
       
    56                 "words" : ["déchet", "ordures ménagères", "écologie", "espèce protégée", "nuisance", "parc naturel", "patrimoine naturel", "pollution", "amiante", "pollution de l'eau", "protocole de Kyoto", "recyclage", "traitement de l'eau"]
       
    57             }, {
       
    58                 "words" : ["commission", "indépendance", "pouvoir exécutif", "chef de l'Etat", "président", "gouvernement", "ministre", "premier ministre", "projet de loi", "pouvoir judiciaire", "pouvoir législatif", "parlement", "assemblée nationale", "député", "proposition de loi", "sénat", "sénateur", "pouvoir local", "réforme"]
       
    59             }, {
       
    60                 "words" : ["mouvement politique", "alliance politique", "droite", "extrême droite", "extrême gauche", "gauche", "homme politique", "mouvement étudiant", "mouvement ouvrier", "parti politique", "parti communiste", "parti conservateur", "parti démocrate", "parti écologiste", "parti libéral", "parti nationaliste", "parti radical", "parti républicain", "parti socialiste", "parti travailliste", "programme politique", "stratégie politique"]
       
    61             }, {
       
    62                 "words" : ["régime politique", "apartheid", "autodétermination", "autonomie", "démocratie", "démocratisation", "social démocratie", "Etat", "fédéralisme", "théorie de l'Etat", "monarchie", "nation", "pouvoir politique", "régime de Vichy", "régime présidentiel", "régime totalitaire", "dictature", "parti unique", "république", "système politique"]
       
    63             }, {
       
    64                 "words" : ["vie politique", "alternance", "cohabitation", "altermondialisation", "boycott", "carrière politique", "citoyenneté", "citoyen", "civisme", "collaboration", "contestation", "dissident", "grève de la faim", "identité européenne", "identité nationale", "manifestation", "militantisme", "négociation", "politisation", "revendication", "conférence", "congrès", "forces politiques", "gouvernance", "groupe de pression", "légitimité", "majorité politique", "propagande", "situation politique", "troubles politiques", "attentat", "coup d'Etat", "crise politique", "mai-68", "état d'exception", "insurrection", "rébellion", "révolution", "révolte", "scandale", "terrorisme"]
       
    65             }, {
       
    66                 "words" : ["famille", "adoption", "célibat", "divorce", "droit de la famille", "filiation", "garde des enfants", "mariage", "maternité", "parent", "paternité", "politique familiale", "union libre", "veuvage", "vie familiale"]
       
    67             }, {
       
    68                 "words" : ["migration", "diaspora", "émigration", "émigré", "exil", "exode", "exode des cerveaux", "exode rural", "immigration", "immigré", "rapatrié", "réfugié", "réfugié politique"]
       
    69             }, {
       
    70                 "words" : ["population", "âge", "embryon", "enfant", "ethnie", "relations ethniques", "tribu", "jeune", "métis", "minorité", "Indiens", "Kurdes", "Noirs", "Tsiganes", "mort", "naissance", "personne âgée", "peuple", "population rurale", "population urbaine", "sexe", "femme", "homme"]
       
    71             }, {
       
    72                 "words" : ["emploi", "chômage", "contrat de travail", "création d'emploi", "démission", "emploi précaire", "licenciement", "marché du travail", "plein emploi", "nomination", "politique salariale", "recrutement", "retraite", "personne retraitée"]
       
    73             }, {
       
    74                 "words" : ["comité d'entreprise", "conflit social", "droit de grève", "droit social", "droits des salariés", "employeur", "grève", "partenaires sociaux", "patronat", "syndicalisme", "syndicat"]
       
    75             }, {
       
    76                 "words" : ["travail", "bénévolat", "absentéisme", "accident du travail", "congé", "durée du travail", "flexibilité", "lieu de travail", "travail au noir", "travail féminin", "travail saisonnier", "travail temporaire"]
       
    77             }, {
       
    78                 "words" : ["défense", "armée", "armée de l'air", "armée de métier", "armée de terre", "marine", "armement", "arme", "arme nucléaire", "commerce des armes", "mine - arme", "désarmement", "base militaire", "cessez le feu", "dissuasion", "gendarmerie", "militaire", "pouvoir militaire", "service national", "service civil", "services secrets", "stratégie militaire"]
       
    79             }, {
       
    80                 "words" : ["action humanitaire", "aide internationale", "camp", "colonie", "colonisation", "décolonisation", "confédération", "conflit armé", "déportation", "guérilla", "guerre", "guerre civile", "guerre d'Algérie", "guerre du Golfe", "guerre froide", "résistance", "accords de Schengen", "défense européenne", "fonds structurels", "pacte de stabilité", "sommet européen", "coopération", "convention de Lomé", "diplomatie", "ambassade", "consulat", "diplomate", "droit de la mer", "droit humanitaire", "frontière", "eaux territoriales", "impérialisme", "ingérence étrangère", "bombardement", "mondialisation", "neutralité", "non alignement", "adhésion", "élargissement", "paix", "politique commune", "politique étrangère", "relations Est-Ouest", "relations Nord-Sud", "G7-G8", "réunification"]
       
    81             }, {
       
    82                 "words" : ["protection sociale", "politique sociale", "prévention", "sécurité sociale", "assurance sociale", "cotisation sociale", "charges sociales", "prestation sociale", "allocation sociale", "service social", "aide sociale", "travail social"]
       
    83             }, {
       
    84                 "words" : ["santé", "alimentation", "famine", "malnutrition", "clinique", "hôpital", "handicapé", "hygiène", "maladie", "cancer", "épidémie", "malade", "maladie mentale", "sida", "médecine", "médecine préventive", "profession médicale", "médecin", "recherche médicale", "bioéthique", "secours d'urgence", "soins", "avortement", "contraception", "don d'organes", "euthanasie", "médicament"]
       
    85             }, {
       
    86                 "words" : ["mode de vie", "cadre de vie", "comportement", "homosexualité", "mode", "modernisation", "modernité", "moeurs", "nomadisme", "sédentarisation", "sexualité", "tradition", "vie privée", "vie quotidienne"]
       
    87             }, {
       
    88                 "words" : ["problèmes sociaux", "corruption", "criminalité", "mafia", "délinquance", "dopage", "drogue", "esclavage", "harcèlement", "mendicité", "pédophilie", "pornographie", "prostitution", "suicide", "toxicomanie", "violence"]
       
    89             }, {
       
    90                 "words" : ["relations sociales", "condition féminine", "discrimination", "antisémitisme", "racisme", "xénophobie", "égalité", "égalité des sexes", "exclusion", "féminisme", "inégalités", "inégalité sociale", "intégration sociale", "justice sociale", "marginalité", "parité", "popularité", "socialisation", "solidarité"]
       
    91             }, {
       
    92                 "words" : ["structure sociale", "caste", "catégorie sociale", "déshérité social", "élite", "intellectuel", "artisan", "cadre", "ouvrier", "profession libérale", "civilisation", "classe sociale", "aristocratie", "bourgeoisie", "classe dirigeante", "classe moyenne", "classe ouvrière", "lutte des classes", "communauté", "enfance", "hiérarchie", "jeunesse", "mobilité sociale", "organisation", "institution", "personnalité", "pouvoir", "société civile", "statut social", "vieillesse"]
       
    93             }];
       
    94 
       
    95     var topics = [],
       
    96         topicPeaks = [],
       
    97         allwords = Array.prototype.concat.apply([], thesaurus.map(function(t) { return t.words })),
       
    98         awl = allwords.length,
       
    99         peaknums = [],
       
   100         peakf = 6 * TOPIC_COUNT;
       
   101 
       
   102     for (var i = 0; i < TOPIC_COUNT; i++) {
       
   103         var words = [],
       
   104             n = Math.floor(awl * Math.random()),
       
   105             wordindexes = [n],
       
   106             weightsum = 0;
       
   107         for (var j = 0; j < WORDS_PER_TOPIC; j++) {
       
   108             while (wordindexes.indexOf(n) !== -1) {
       
   109                 n = Math.min(awl - 1, Math.max(0, Math.floor(n + 16 * Math.random() - 8)));
       
   110             }
       
   111             wordindexes.push(n);
       
   112             var word = allwords[n], weight = Math.random();
       
   113             words.push({
       
   114                 word : word,
       
   115                 weight : weight
       
   116             });
       
   117             weightsum += weight;
       
   118         }
       
   119         words.sort(function(a, b) {
       
   120             return b.weight - a.weight;
       
   121         });
       
   122         words.forEach(function(w) {
       
   123             w.weight = w.weight / weightsum
       
   124         });
       
   125         topics.push({
       
   126             index : i,
       
   127             words : words
       
   128         });
       
   129         var peaks = [], peakcount = Math.floor(2 * (1 + Math.random()));
       
   130         for (var j = 0; j < peakcount; j++) {
       
   131             var npeak = Math.floor(peakf * Math.random());
       
   132             while (peaknums.indexOf(npeak) !== -1) {
       
   133                 npeak = Math.floor(peakf * Math.random());
       
   134             }
       
   135             peaknums.push(npeak);
       
   136             peaks.push({
       
   137                 volume: 5 * (.2 + Math.random()),
       
   138                 position: (npeak + Math.random() - .5) / peakf
       
   139             });
       
   140         }
       
   141         topicPeaks.push(peaks);
       
   142     }
       
   143 
       
   144     var tc = 0, mmsos = [], threshold = .05;
       
   145 
       
   146     for (var i = 0; i < SEGMENT_COUNT; i++) {
       
   147         var duration = Math.floor(Math.random() * 30) + 30, mmso = {
       
   148             start : tc,
       
   149             duration : duration
       
   150         }
       
   151         tc += duration;
       
   152         mmso.end = tc;
       
   153         
       
   154         var localtopics = [],
       
   155             localtopicids = [],
       
   156             pos = i;
       
   157         for (var j = 0; j < TOPIC_COUNT; j++) {
       
   158             var peaks = topicPeaks[j],
       
   159                 total = 0;
       
   160             for (var k = 0; k < peaks.length; k++) {
       
   161                 var peak = peaks[k],
       
   162                     delta = Math.abs(peak.position - i/SEGMENT_COUNT);
       
   163                 if (delta < threshold) {
       
   164                     total += peak.volume * Math.max(0, .5 * (1 + Math.cos(Math.PI * delta / threshold)) + Math.random()*.2 - .1) * mmso.duration;
       
   165                 }
       
   166             }
       
   167             if (total) {
       
   168                 localtopics.push({
       
   169                     topic: j,
       
   170                     weight: total
       
   171                 })
       
   172                 localtopicids.push(j);
       
   173             }
       
   174         }
       
   175         while (localtopics.length < 2) {
       
   176             var n = Math.floor(Math.random() * TOPIC_COUNT);
       
   177             while (localtopicids.indexOf(n) !== -1) {
       
   178                 n = Math.floor(Math.random() * TOPIC_COUNT);
       
   179             }
       
   180             localtopics.push({
       
   181                 topic: n,
       
   182                 weight: mmso.duration * Math.random()
       
   183             });
       
   184             localtopicids.push(n);
       
   185         }
       
   186         localtopics = localtopics.sort(function(a,b) {
       
   187             return b.weight - a.weight;
       
   188         }).slice(0,5);
       
   189         var total = localtopics.reduce(function(mem,t) {
       
   190             return mem + t.weight
       
   191         },0);
       
   192         localtopics.forEach(function(t) {
       
   193             t.weight = t.weight / total;
       
   194         });
       
   195         mmso.tweet_count = Math.floor(total);
       
   196         mmso.topics = localtopics;
       
   197         
       
   198         mmsos.push(mmso);
       
   199     }
       
   200     
       
   201 
       
   202     document.write(JSON.stringify({
       
   203         topics : topics,
       
   204         segments : mmsos,
       
   205         duration : tc
       
   206     }))
       
   207 
       
   208         </script>
       
   209     </body>
       
   210 </html>