J'ai ajouté des mots vides et de la couleur à la sortie.Fait également dt une table invisible.

cloud_title = "Alice au pays des merveilles" ;
// Met tout le texte dans une variable
SMS = charger le fichier texte ( "c:\temp\alice.txt" ) ;
aa = [ => 0 ] ; // tableau associatif avec la valeur par défaut de zéro
// compte les mots. JMP a une fonction words() qui renvoie une liste de mots, mais ce n'est pas
// capable de distinguer les apostrophes à l'intérieur des mots des bords des mots.
// 'nous sommes est un exemple autour duquel cette regex fonctionne.comme c'est 'Oh.
// "Oh, tu ne peux pas t'en empêcher", dit le chat : "nous sommes tous fous ici. Je suis en colère.Tu es fâché.'
rc = Pat Match (
SMS ,
Tapoter Répéter (
( Pat Regex ( "[\w]+('[\w]+) ?" ) >> mot + Expr (
mot = Majuscule ( mot ) ;
aa [ mot ] ++ ;
"" ;
)) | ( Pat Regex ( "[^\w]+" )) ,
1 ,
9999999 ,
GLOUTON
)
) ;
clés = aa << getkeys ;
//show(N Items( keys ));
vals = aa << obtenir des valeurs ;
//show(N Items( vals ));
dt = Nouveau tableau ( "" ,
Nouvelle colonne ( "mot" , personnage , Définir les valeurs ( clés ) ) ,
Nouvelle colonne ( "compter" , Numérique , "Continu" , Format ( "Meilleur" , 12 ) , Définir les valeurs ( vals ) ) ,
invisible
) ;
dt << trier ( par ( compter ) , ordre ( descendant ) , remplacer le tableau ) ;
// Mots à ignorer
stop_words = { "LA" , "A ÉTÉ" , "NE PAS" , "ET" , "SUR" , "UN" , "AVEC" , "DE" , "CETTE" , "DE" , "ÉTAIENT" , "POUR" , "À" ,
"UN" , "PAR" , "CE" , "OU" , "COMME" , "AVAIS" , "0" , "1" , "2" , "3" , "4" , "5" , "6" , "sept" , "8" , "9" , "À" , "ÊTRE" , "DANS" ,
"A FAIT" , "CE" , "NON" , "AUSSI" , "EST" , "PEUT" , "MAIS" , "A" , "SON" , "ELLE" , "IL" , "LE SIEN" , "A ÉTÉ" , "00" ,
"01" , "02" , "03" , "04" , "05" , "06" , "07" , "08" , "09" , "dix" , "11" , "12" , "13" , "14" , "15" , "16" , "17" ,
"18" , "19" , "20" , "21" , "22" , "23" , "24" , "25" , "26" , "27" , "28" , "29" , "30" , "31" , "OÙ" ,
"C'EST À DIRE" , "B" , "C" , "RÉ" , "E" , "F" , "G" , "H" , "JE" , "J" , "K" , "L" , "M" , "N" , "O" , "P" , "Q" , "R" ,
"S" , "T" , "U" , "V" , "W" , "X" , "O" , "Z" , "ONT" , "COMME" , "DE" , "LÀ" , "TOUT" , "A OBTENU" ,
"OMS" , "APRÈS" , "N'IMPORTE QUEL" , "SUR" , "COMPAGNIE" , "SUIVANT" , "ELLES OU ILS" , "SI" , "CES" , "ALORS" , "TOUTEFOIS" , "MA" } ;
del_rows = dt << obtenir des lignes où ( Contient ( stop_words , : mot ) ) ;
dt << supprimer des lignes ( del_rows ) ;
Nouvelle fenetre ( "Nuage de mots textuels" ,
Boîte de contour ( cloud_title ,
Boîte à bordure ( La gauche ( dix ) , Droit ( dix ) , Haut ( dix ) , fond ( dix ) , v = Zone de liste V () )
)
) ;
h = H Zone de liste () ;
// Liste des "bonnes" couleurs du Guide de script, page 341
color_list =
[ 0 , 3 , 4 , 5 , 6 , sept , 8 , 9 , dix , 11 , 12 , 13 , 14 , 15 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 ,
31 , 35 , 36 , 37 , 38 , 39 , 40 , 43 , 44 , 45 , 46 , 47 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 ] ;
ncouleurs = nrows ( color_list ) ;
ligne = 1 ;
k = 1 ;
nr = nrows ( dt ) ;
min_words = 8 ;
taille_multiplicateur = 1 ;
si ( nr < 100 ,
min_words = 2 ;
taille_multiplicateur = 2 ;
) ;
Alors que ( dt : compter [ ligne ] > min_words ,
X = Zone de texte ( dt : mot [ ligne ] || " " ) ;
X << définir la taille de la police ( taille_multiplicateur * Enregistrer ( dt : compter [ ligne ] ) * 4 ) ;
X << couleur de la police ( color_list [ k ]) ;
k ++ ;
si ( k > ncouleurs ,
k = 1 ;
) ;
h << ajouter ( X ) ;
Si ( h << gagner en largeur > 700 ,
h = H Zone de liste () ;
v << ajouter ( h ) ;
) ;
ligne ++ ;
Attendre ( 0 ) ;
) ;
Attendez ( 0 ) ;
proche ( dt , nosave ) ;
Le look du NY Times est agréable car il est facile à mettre en œuvre.

Voici du JSL
/* le loadtextfile, ci-dessous, récupère un fichier de http://www.gutenberg.org/ qui dit...
Projet Les aventures d'Alice au pays des merveilles de Gutenberg, par Lewis Carroll
Cet eBook est destiné à être utilisé par n'importe qui, n'importe où, sans frais et avec
pratiquement aucune restriction.Vous pouvez le copier, le donner ou
le réutiliser selon les termes de la licence Project Gutenberg incluse
avec cet eBook ou en ligne sur www.gutenberg.org
Titre : Les aventures d'Alice au pays des merveilles
Auteur : Lewis Caroll
Date de publication : 25 juin 2008 [EBook #11]
Date de sortie : mars 1994
[Dernière mise à jour : 20 décembre 2011]
Langue: français
*/
txt = Charger le fichier texte( "c:\chemin\Alice.txt " ); Longueur( txt );
aa = [=> 0] ; // tableau associatif avec la valeur par défaut de zéro
// compte les mots.JMP a une fonction words() qui renvoie une liste de mots, mais ce n'est pas
// capable de distinguer les apostrophes à l'intérieur des mots des bords des mots.
// 'nous sommes est un exemple autour duquel cette regex fonctionne.comme c'est 'Oh.
// "Oh, tu ne peux pas t'en empêcher", dit le chat : "nous sommes tous fous ici. Je suis en colère.Tu es fâché.'
rc = Pat Match( txt, Pat Repeat( (Pat Regex( "[\w]+('[\w]+)?" ) >> mot +
Expr( mot = Majuscule( mot ); aa[mot]++; ""; )) |
(Pat Regex( "[^\w]+" )), 1, 9999999, GOURMAND ));
clés = aa << getkeys ; N éléments (clés) ;
vals = aa << getvalues; N éléments( vals );
dt = Nouveau tableau( "Sans titre",
Nouvelle colonne( "mot", caractère, Set Values( keys ) ),
Nouvelle colonne( "count", Numeric, "Continuous", Format( "Best", 12 ), Set Values( vals ) )
);
dt2 = dt << trier( par( compter ), ordonner( décroissant ) );
Fermer( dt, nosave );
dt = dt2 ;
Nouvelle fenêtre( "words", Border Box( Left( 10 ), Right( 10 ), top( 10 ), bottom( 10 ), v = V List Box() ) );
h = H Zone de liste(); v << ajouter( h );
ligne = 12 ; // par inspection
Tant que( dt:count[row] > 8,
x = Text Box( dt:word[row] || " " );
x << setfontsize( Log( dt:count[row] ) * 4 );
h << ajouter( x );
If( h << getwidth > 700, h = H List Box(); v << append( h ); );
ligne++ ;
Attendez( 0 );
);
L'instruction PatMatch utilise des expressions régulières pour identifier les mots dans le texte, les mettre en majuscules et les utiliser comme clés d'un tableau associatif.Les éléments du tableau associatif sont par défaut à zéro s'ils n'existent pas déjà (voir le => 0) donc aucun effort particulier n'est requis pour la première instance d'un mot.Le PatRepeat dans le PatMatch traite la chaîne entière.Dans la répétition, les deux regex alternent les mots de traitement et les trucs entre les mots.Dans la première expression régulière, expr est utilisé pour exécuter du JSL sur chaque mot correspondant.La dernière chose que fait expr est d'évaluer une chaîne vide qui correspondra toujours à la position actuelle.Ce PatMatch traite environ 150 000 caractères en environ deux secondes, y compris le comptage des mots dans le tableau associatif.
Une table de données est construite à partir des paires clé-valeur et triée, puis une fenêtre est créée avec une zone de liste verticale contenant un ensemble de zones de liste horizontales.Les zones de liste horizontales sont remplies avec les mots, de gauche à droite.Après avoir ajouté chaque mot, le wait(0) permet à la fenêtre de se mettre à jour afin que la largeur de la zone de texte horizontale soit correcte (et que vous puissiez la regarder.) Lorsque la zone dépasse 700 pixels, commencez une nouvelle ligne.
Commencez à la ligne 12 pour sauter LE ET À A DE CE QU'ELLE VOUS A DIT EN I. Arrêtez-vous lorsque le nombre trié passe en dessous de 8 instances.Utilisez une transformation de journal ; Alice a 386 instances.
Comme le souligne Xan, il y a des problèmes avec les mots qui ne diffèrent que par le suffixe, le préfixe ou les synonymes.Probablement d'autres problèmes aussi.
Jabberwocky est dans De l'autre côté du miroir.Slithy Toves n'est pas là.
mise à jour : ne devrait probablement pas récupérer le texte du lien à chaque fois.Pointez le loadtextfile sur un fichier sur votre ordinateur, peut-être téléchargé à partir de http://www.gutenberg.org/

Bonjour Peter,
Voici quelques JSL pour compter les mots dans un fichier texte puis créer une arborescence.
Pas exactement un nuage de mots, mais pourrait vous aider à démarrer dans la direction que vous souhaitez.
Meilleur,
Stan
effacer le journal () ;
NomsDefaultToHere ( 1 ) ;
// Invite pour le fichier texte
Obtenir un fichier = Choisissez un fichier () ;
// Stocke la chaîne de texte dans la variable
texte = Charger le fichier texte ( Obtenir un fichier ) ;
//Créer une liste de mots dans un ordre trié en supprimant les espaces blancs et autres délimiteurs
listes de mots = Trier la liste ( Mots ( texte , ",./\;!?'()\!" " )) ;
// Compte les éléments de la liste
nwds = N articles ( listes de mots ) ;
// crée deux listes ; un pour les suppressions et un pour les insertions
liste de suppression = {} ;
liste de conservation = {} ;
// supprimer les mots courants, c'est-à-dire ; ceux qui sont de 3 caractères ou moins
Pour ( je = 1 , je <= N articles ( listes de mots ) , je ++,
wrdlength = longueur ( listes de mots [ je ] ) ;
Si ( wrdlength <= 3 ,
Insérer dans ( liste de suppression , listes de mots [ je ] , 1 ) ,
Insérer dans ( liste de conservation , listes de mots [ je ] )
)
) ;
// Créer une table de données
dt = Nouveau tableau ( "Tableau de données de nuage de mots" ,
Nouvelle colonne ( "Mots" , Personnage , Définir les valeurs ( liste de conservation )) ,
) ;
Tabuler (
Afficher le panneau de configuration ( 0 ) ,
Inclure les éléments manquants pour regrouper les colonnes ( 1 ) ,
Trier par nombre de colonnes de regroupement ( 1 ) ,
Ajouter un tableau ( Tableau de lignes ( Groupement de colonnes ( : Mots ) ) )
) << Transformer en tableau de données ;
// Créer une arborescence de tous les mots
Générateur de graphiques (
Afficher le panneau de configuration ( 0 ) ,
variables ( X ( : Mots ) ) ,
Éléments ( Treemap ( X , Statistique récapitulative ( "Somme" ) ) ) ,
) ;