Ho aggiunto stop words e colore all'output.Ha anche reso dt un tavolo invisibile.

titolo_nuvola = "Alice nel paese delle meraviglie" ;
// Inserisci tutto il testo in una variabile
TXT = caricare il file di testo ( "c:\temp\alice.txt" ) ;
aa = [ => 0 ] ; // array associativo con valore predefinito pari a zero
// conta le parole. JMP ha una funzione words() che restituisce un elenco di parole, ma non lo è
// in grado di distinguere gli apostrofi all'interno delle parole dai bordi delle parole.
// 'siamo è un esempio su cui funziona questa regex.come è 'Oh.
// 'Oh, non puoi farci niente', disse il Gatto: 'siamo tutti matti qui. Sono matto.Sei pazzo.'
rc = Pat Match (
TXT ,
Pat Ripeti (
( Pat Rex ( "[\w]+('[\w]+)?" ) >> parola + Espr (
parola = Maiuscolo ( parola ) ;
aa [ parola ] ++;
"" ;
)) | ( Pat Rex ( "[^\w]+" )) ,
1 ,
9999999 ,
AVIDO
)
) ;
chiavi = aa << getkeys ;
//mostra(N Elementi( chiavi ));
vals = aa << getvalues ;
//show(N Items(vals));
dt = Nuova Tavola ( "" ,
Nuova Colonna ( "parola" , carattere , Imposta valori ( chiavi ) ) ,
Nuova Colonna ( "contare" , Numerico , "Continuo" , Formato ( "Migliore" , 12 ) , Imposta valori ( vals ) ) ,
invisibile
) ;
dt << ordinare ( di ( contare ) , ordine ( discendente ) , sostituire la tabella ) ;
// Parole da ignorare
stop_words = { "IL" , "ERA" , "NON" , "E" , "SU" , "UN" , "CON" , "DA" , "QUESTO" , "DI" , "ERANO" , "PER" , "A" ,
"UN" , "DI" , "ESSO" , "O" , "COME" , "AVEVO" , "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "A" , "ESSERE" , "IN" ,
"FATTO" , "QUELLO" , "NO" , "ANCHE" , "È" , "MAGGIO" , "MA" , "HA" , "SUO" , "LEI" , "LUI" , "IL SUO" , "STATO" , "00" ,
"01" , "02" , "03" , "04" , "05" , "06" , "07" , "08" , "09" , "10" , "11" , "12" , "13" , "14" , "15" , "16" , "17" ,
"18" , "19" , "20" , "21" , "22" , "23" , "24" , "25" , "26" , "27" , "28" , "29" , "30" , "31" , "DOVE" ,
"CIOÈ" , "B" , "C" , "D" , "E" , "F" , "G" , "H" , "IO" , "J" , "K" , "L" , "M" , "N" , "Oh" , "P" , "Q" , "R" ,
"S" , "T" , "Tu" , "V" , "W" , "X" , "Y" , "Z" , "AVERE" , "COME" , "DI" , "LÀ" , "TUTTO" , "AVUTO" ,
"CHI" , "DOPO" , "QUALUNQUE" , "DI" , "AZIENDA" , "PROSSIMO" , "ESSI" , "SE" , "QUESTI" , "POI" , "TUTTAVIA" , "MIO" } ;
del_rows = dt << ottenere righe dove ( Contiene ( stop_words , : parola ) ) ;
dt << eliminare le righe ( del_rows ) ;
Nuova finestra ( "Nuvola di parole di testo" ,
Casella di contorno ( titolo_nuvola ,
Casella di confine ( Sinistra ( 10 ) , Giusto ( 10 ) , superiore ( 10 ) , metter il fondo a ( 10 ) , v = Casella di riepilogo V () )
)
) ;
H = Casella di riepilogo H () ;
// Elenco dei colori "buoni" da Scripting Guide, pagina 341
lista_colori =
[ 0 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 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 ] ;
ncolori = nrow ( lista_colori ) ;
riga = 1 ;
K = 1 ;
nr = nrow ( dt ) ;
min_parole = 8 ;
size_multiplier = 1 ;
Se ( nr < 100 ,
min_parole = 2 ;
size_multiplier = 2 ;
) ;
Mentre ( dt : contare [ riga ] > min_parole ,
X = Casella di testo ( dt : parola [ riga ] || " " ) ;
X << setfontsize ( size_multiplier * Tronco d'albero ( dt : contare [ riga ] ) * 4 ) ;
X << colore del carattere ( lista_colori [ K ]) ;
K ++;
Se ( K > ncolori ,
K = 1 ;
) ;
H << aggiungere ( X ) ;
Se ( H << getwidth > 700 ,
H = Casella di riepilogo H () ;
v << aggiungere ( H ) ;
) ;
riga ++;
Aspettare ( 0 ) ;
) ;
Aspettare ( 0 ) ;
vicino ( dt , nosave ) ;
L'aspetto del NY Times è carino perché è facile da implementare.

Ecco un po' di JSL
/* il loadtextfile, sotto, recupera un file da http://www.gutenberg.org/ che dice...
Progetto Le avventure di Alice nel paese delle meraviglie di Gutenberg, di Lewis Carroll
Questo eBook è per l'uso di chiunque ovunque gratuitamente e con
quasi nessuna restrizione di sorta.Puoi copiarlo, regalarlo o
riutilizzarlo secondo i termini della licenza Project Gutenberg inclusa
con questo eBook o online su www.gutenberg.org
Titolo: Le avventure di Alice nel paese delle meraviglie
Autore: Lewis Carroll
Data di pubblicazione: 25 giugno 2008 [EBook #11]
Data di uscita: marzo 1994
[Ultimo aggiornamento: 20 dicembre 2011]
Lingua inglese
*/
txt = Carica file di testo( "c:\path\Alice.txt " ); Lunghezza( txt );
aa = [=> 0]; // array associativo con valore predefinito pari a zero
// conta le parole.JMP ha una funzione words() che restituisce un elenco di parole, ma non lo è
// in grado di distinguere gli apostrofi all'interno delle parole dai bordi delle parole.
// 'siamo è un esempio su cui funziona questa regex.come è 'Oh.
// 'Oh, non puoi farci niente', disse il Gatto: 'siamo tutti matti qui. Sono matto.Sei pazzo.'
rc = Pat Match( txt, Pat Repeat( (Pat Regex( "[\w]+('[\w]+)?" ) >> parola +
Expr( parola = Maiuscolo( parola ); aa[parola]++; ""; )) |
(Pat Regex( "[^\w]+" )), 1, 9999999, GREEDY ));
chiavi = aa << getkeys; N Articoli ( chiavi );
vals = aa << getvalori; N elementi (vals);
dt = Nuova tabella( "Senza titolo",
Nuova colonna ("parola", carattere, imposta valori (chiavi)),
Nuova colonna( "count", Numeric, "Continuous", Format( "Best", 12 ), Set Values( vals ) )
);
dt2 = dt << sort( by( count ), order( decrescente ) );
Chiudi( dt, nosave );
dt = dt2;
New Window( "words", Border Box( Left( 10 ), Right( 10 ), top( 10 ), bottom( 10 ), v = V List Box() ) );
h = H Casella di riepilogo(); v << append( h );
riga = 12; // tramite ispezione
Mentre( dt:conta[riga] > 8,
x = Casella di testo( dt:parola[riga] || " " );
x << setfontsize( Log( dt:count[row] ) * 4 );
h << append( x );
If( h << getwidth > 700, h = H List Box(); v << append( h ); );
riga++;
Aspetta(0);
);
L'istruzione PatMatch utilizza alcune espressioni regolari per identificare le parole nel testo, scriverle in maiuscolo e utilizzarle come chiavi per un array associativo.Gli elementi dell'array associativo sono impostati su zero se non esistono già (vedi =>0) quindi non è richiesto alcuno sforzo particolare per la prima istanza di una parola.Il PatRepeat all'interno del PatMatch elabora l'intera stringa.All'interno della ripetizione le due espressioni regolari alternano l'elaborazione di parole e cose tra le parole.All'interno della prima regex, expr viene utilizzato per eseguire alcuni JSL su ogni parola corrispondente.L'ultima cosa che fa expr è valutare una stringa vuota che corrisponderà sempre alla posizione corrente.Questo PatMatch elabora circa 150.000 caratteri in circa due secondi, incluso il conteggio delle parole nell'array associativo.
Una tabella di dati viene costruita dalle coppie chiave-valore e ordinata, quindi viene creata una finestra con una casella di riepilogo verticale contenente una serie di caselle di riepilogo orizzontali.Le caselle di riepilogo orizzontali sono riempite con le parole, da sinistra a destra.Dopo aver aggiunto ogni parola, wait(0) consente alla finestra di aggiornarsi in modo che la larghezza della casella di testo orizzontale sia corretta (e puoi guardarla). Quando la casella supera i 700 pixel, inizia una nuova riga.
Inizia dalla riga 12 per saltare THE AND TO A OF IT LEI TI HA DETTO IN I. Fermati quando il conteggio ordinato scende al di sotto di 8 istanze.Usa una trasformazione log; Alice ha 386 istanze.
Come sottolinea Xan, ci sono problemi con le parole che differiscono solo nel suffisso, nel prefisso o nei sinonimi.Probabilmente anche altri problemi.
Jabberwocky è in Attraverso lo specchio.Gli Slithy Toves non sono qui.
aggiornamento: probabilmente non dovrebbe recuperare il testo dal collegamento ogni volta.Punta il loadtextfile su un file sul tuo computer, magari scaricato da http://www.gutenberg.org/

Ciao Peter,
Ecco alcuni JSL per contare le parole in un file di testo e quindi creare una mappa ad albero.
Non esattamente una nuvola di parole, ma potrebbe farti iniziare nella direzione che desideri.
Migliore,
Stan
pulisci il registro () ;
NamesDefaultToHere ( 1 ) ;
// Richiedi file di testo
Prendi il file = Scegli File () ;
// Memorizza la stringa di testo nella variabile
testo = Carica file di testo ( Prendi il file ) ;
//Crea un elenco di parole in ordine ordinato rimuovendo spazi bianchi e altri delimitatori
liste di parole = Ordina elenco ( Parole ( testo , ",./\;!?'()\!" " )) ;
// Conta gli elementi nell'elenco
nwds = N articoli ( liste di parole ) ;
// crea due liste; uno per le cancellazioni e uno per gli inserimenti
deletelist = {} ;
keeplist = {} ;
// rimuove le parole comuni, ie; quelli che sono 3 caratteri o meno
Per ( io = 1 , io <= N articoli ( liste di parole ) , io ++,
wrdlength = lunghezza ( liste di parole [ io ] ) ;
Se ( wrdlength <= 3 ,
Inserire ( deletelist , liste di parole [ io ] , 1 ) ,
Inserire ( keeplist , liste di parole [ io ] )
)
) ;
// Crea tabella dati
dt = Nuova Tavola ( "Tabella di dati della nuvola di parole" ,
Nuova Colonna ( "Parole" , Carattere , Imposta valori ( keeplist )) ,
) ;
Tabulare (
Mostra pannello di controllo ( 0 ) ,
Includi elementi mancanti per il raggruppamento delle colonne ( 1 ) ,
Ordina per numero di colonne di raggruppamento ( 1 ) ,
Aggiungi tabella ( Tabella delle righe ( Colonne di raggruppamento ( : Parole ) ) )
) << Trasforma in tabella dati ;
// Crea una mappa ad albero di tutte le parole
Costruttore di grafici (
Mostra pannello di controllo ( 0 ) ,
Variabili ( X ( : Parole ) ) ,
Elementi ( Mappa ad albero ( X , Statistica riassuntiva ( "Somma" ) ) ) ,
) ;