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

cloud_title = "Alice nel paese delle meraviglie" ;
// Metti tutto il testo in una variabile
testo = caricare il file di testo ( "c:\temp\alice.txt" ) ;
aa = [ => 0 ] ; // array associativo con valore predefinito 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 in cui funziona questa espressione regolare.così come 'Oh.
// 'Oh, non puoi farci niente' disse il Gatto: 'siamo tutti matti qui. Sono matto.Sei pazzo.'
rc = Pat Match (
testo ,
Pat Ripeti (
( Pat Regex ( "[\w]+('[\w]+))?" ) >> parola + espr (
parola = Maiuscolo ( parola ) ;
aa [ parola ] ++;
"" ;
)) | ( Pat Regex ( "[^\w]+" )) ,
1 ,
9999999 ,
AVIDO
)
) ;
chiavi = aa << getkeys ;
//show(N Items( keys));
val = aa << getvalues ;
//show(N elementi( vals));
dt = Nuova tavola ( "" ,
Nuova colonna ( "parola" , carattere , Imposta i valori ( chiavi ) ) ,
Nuova colonna ( "contare" , Numerico , "Continuo" , Formato ( "Migliore" , 12 ) , Imposta i valori ( val ) ) ,
invisibile
) ;
dt << ordinare ( di ( contare ) , ordine ( discendente ) , sostituire la tabella ) ;
// Parole da ignorare
stop_words = { "IL" , "ERA" , "NON" , "E" , "SU" , "UN" , "INSIEME A" , "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" , "O" , "P" , "Q" , "R" ,
"S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z" , "AVERE" , "PIACE" , "DE" , "LÀ" , "TUTTO" , "AVUTO" ,
"OMS" , "DOPO" , "QUALUNQUE" , "DI" , "AZIENDA" , "PROSSIMO" , "ESSI" , "SE" , "QUESTE" , "POI" , "PERÒ" , "MIO" } ;
del_righe = dt << ottenere righe dove ( Contiene ( stop_words , : parola ) ) ;
dt << eliminare righe ( del_righe ) ;
Nuova finestra ( "Nuvola di parole di testo" ,
Casella di contorno ( cloud_title ,
Scatola di confine ( Sono partiti ( 10 ) , Destra ( 10 ) , superiore ( 10 ) , parte inferiore ( 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 = nrows ( lista_colori ) ;
riga = 1 ;
K = 1 ;
nr = nrows ( dt ) ;
min_parole = 8 ;
moltiplicatore_dimensione = 1 ;
Se ( nr < 100 ,
min_parole = 2 ;
moltiplicatore_dimensione = 2 ;
) ;
Mentre ( dt : contare [ riga ] > min_parole ,
X = Casella di testo ( dt : parola [ riga ] || " " ) ;
X << setfontsize ( moltiplicatore_dimensione * 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 << larghezza > 700 ,
h = Casella di riepilogo H () ;
v << aggiungere ( h ) ;
) ;
riga ++;
Attesa ( 0 ) ;
) ;
aspettare ( 0 ) ;
chiudere ( dt , novanta ) ;
L'aspetto del NY Times è bello perché è facile da implementare.

Ecco un po' di JSL
/* il file di testo di caricamento, di seguito, recupera un file da http://www.gutenberg.org/ che dice...
Le avventure di Alice nel paese delle meraviglie del progetto Gutenberg, di Lewis Carroll
Questo eBook è per l'uso da parte di chiunque, ovunque, gratuitamente e con
quasi nessuna restrizione di sorta.Puoi copiarlo, regalarlo o
riutilizzalo 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 rilascio: marzo 1994
[Ultimo aggiornamento: 20 dicembre 2011]
Lingua inglese
*/
txt = Carica file di testo( "c:\percorso\Alice.txt " ); Lunghezza ( txt );
aa = [=> 0]; // array associativo con valore predefinito 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 in cui funziona questa espressione regolare.così 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 +
Espr( parola = Maiuscolo( parola ); aa[parola]++; ""; )) |
(Pat Regex( "[^\w]+" )), 1, 9999999, GREEDY ));
chiavi = aa << getkeys; N Articoli (chiavi);
vals = aa << getvalues; N Articoli( vals );
dt = Nuova tabella ("Senza titolo",
Nuova colonna ("parola", carattere, Imposta valori (chiavi)),
Nuova colonna ("count", Numerico, "Continuo", Formato ("Migliore", 12 ), Imposta valori ( vals ) )
);
dt2 = dt << ordina( per(conteggio), ordine(decrescente));
Chiudi(dt, nosave);
dt = dt2;
Nuova finestra("parole", Border Box( Left( 10 ), Right( 10 ), top( 10 ), bottom( 10 ), v = V List Box() ) );
h = H Casella di riepilogo(); v << append( h );
riga = 12; // per ispezione
Mentre( dt:count[riga] > 8,
x = Casella di testo(dt:parola[riga] || " " );
x << setfontsize( Log(dt:count[riga]) * 4 );
h << append( x );
If( h << getwidth > 700, h = H Casella di riepilogo(); v << append( h ); );
riga++;
Aspetta( 0 );
);
L'istruzione PatMatch utilizza alcune espressioni regolari per identificare le parole nel testo, in maiuscolo e usarle come chiavi di un array associativo.Gli elementi associativi dell'array di default sono zero se non esistono già (vedi =>0), quindi non è richiesto alcuno sforzo speciale 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 alcune JSL su ogni parola abbinata.L'ultima cosa che fa expr è restituire 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 un gruppo di caselle di riepilogo orizzontali.Le caselle di riepilogo orizzontali vengono 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 LA E LA UNA DI ESSO CHE TI HA DETTO IN I. Fermati quando il conteggio ordinato scende al di sotto di 8 istanze.Usa una trasformazione del registro; Alice ha 386 istanze.
Come sottolinea Xan, ci sono problemi con le parole che differiscono solo per suffisso, prefisso o sinonimi.Probabilmente anche altri problemi.
Jabberwocky è in Attraverso lo specchio.Slithy Toves non sono qui.
aggiornamento: probabilmente non dovrebbe recuperare il testo dal collegamento ogni volta.Punta il file loadtext 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 () ;
NomiDefaultToHere ( 1 ) ;
// Richiedi il 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 rimuovendo gli spazi bianchi e altri delimitatori
elenchi di parole = Ordina elenco ( Parole ( testo , ",./\;!?'()\!" " )) ;
// Conta gli elementi nell'elenco
nwds = N articoli ( elenchi di parole ) ;
// crea due liste; uno per le cancellazioni e uno per gli inserimenti
elimina lista = {} ;
lista di mantenimento = {} ;
// rimuove le parole comuni, ad es.; quelli che sono 3 caratteri o meno
Per ( io = 1 , io <= N articoli ( elenchi di parole ) , io ++,
wrdlength = lunghezza ( elenchi di parole [ io ] ) ;
Se ( wrdlength <= 3 ,
Inserire ( elimina lista , elenchi di parole [ io ] , 1 ) ,
Inserire ( lista di mantenimento , elenchi di parole [ io ] )
)
) ;
// Crea tabella dati
dt = Nuova tavola ( "Tabella dati Word Cloud" ,
Nuova colonna ( "Parole" , Carattere , Imposta i valori ( lista di mantenimento )) ,
) ;
Tabulare (
Mostra pannello di controllo ( 0 ) ,
Includi mancanti per raggruppare le colonne ( 1 ) ,
Ordina per conteggio delle colonne di raggruppamento ( 1 ) ,
Aggiungi tabella ( Tavolo a righe ( Raggruppamento di colonne ( : Parole ) ) )
) << Trasforma in tabella dati ;
// Crea una mappa ad albero di tutte le parole
Generatore di grafici (
Mostra pannello di controllo ( 0 ) ,
Variabili ( X ( : Parole ) ) ,
Elementi ( Mappa ad albero ( X , Statistica riassuntiva ( "Somma" ) ) ) ,
) ;