Agregué palabras vacías y color a la salida.También hizo dt una tabla invisible.

título_nube = "Alicia en el país de las Maravillas" ;
// Poner todo el texto en una variable
TXT = cargar archivo de texto ( "c:\temp\alice.txt" ) ;
Automóvil club británico = [ => 0 ] ; // matriz asociativa con valor predeterminado de cero
// cuenta las palabras. JMP tiene una función de palabras () que devuelve una lista de palabras, pero no es
// Capaz de distinguir los apóstrofes dentro de las palabras de los bordes de las palabras.
// 'somos es un ejemplo en el que funciona esta expresión regular.como es 'Oh.
// 'Oh, no puedes evitar eso', dijo el Gato: 'aquí estamos todos locos. Estoy loco.Estas loco.'
rc = Coincidencia de palmaditas (
TXT ,
Pat repetir (
( Pat expresión regular ( "[\w]+('[\w]+)?" ) >> palabra + exp. (
palabra = Mayúsculas ( palabra ) ;
Automóvil club británico [ palabra ] ++;
"" ;
)) | ( Pat expresión regular ( "[^\n]+" )) ,
1 ,
9999999 ,
AVARO
)
) ;
llaves = Automóvil club británico << obtener claves ;
// mostrar (N elementos (claves));
vals = Automóvil club británico << obtener valores ;
//mostrar(N Elementos(vals));
dt = Nueva tabla ( "" ,
Nueva columna ( "palabra" , personaje , Establecer valores ( llaves ) ) ,
Nueva columna ( "contar" , Numérico , "Continuo" , Formato ( "Mejor" , 12 ) , Establecer valores ( vals ) ) ,
invisible
) ;
dt << clasificar ( por ( contar ) , orden ( descendiendo ) , reemplazar mesa ) ;
// Palabras a ignorar
Para las palabras = { "EL" , "ERA" , "NO" , "Y" , "EN" , "A" , "CON" , "DE" , "ESTE" , "DE" , "ERAN" , "PARA" , "A" ,
"UN" , "POR" , "ÉL" , "O" , "COMO" , "TENÍA" , "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "EN" , "SER" , "EN" ,
"HIZO" , "ESO" , "NO" , "TAMBIÉN" , "ES" , "PUEDE" , "PERO" , "TIENE" , "SU" , "ELLA" , "ÉL" , "SU" , "ESTADO" , "00" ,
"01" , "02" , "03" , "04" , "05" , "06" , "07" , "08" , "09" , "10" , "11" , "12" , "13" , "14" , "15" , "dieciséis" , "17" ,
"18" , "19" , "20" , "21" , "22" , "23" , "24" , "25" , "26" , "27" , "28" , "29" , "30" , "31" , "DÓNDE" ,
"ES DECIR" , "B" , "C" , "D" , "MI" , "F" , "GRAMO" , "H" , "I" , "J" , "K" , "L" , "METRO" , "NORTE" , "O" , "PAG" , "Q" , "R" ,
"S" , "T" , "tú" , "V" , "W" , "X" , "Y" , "Z" , "TENER" , "COMO" , "DELAWARE" , "ALLÁ" , "TODO" , "CONSIGUIÓ" ,
"OMS" , "DESPUÉS" , "CUALQUIER" , "ACERCA DE" , "COMPAÑÍA" , "PRÓXIMO" , "ELLOS" , "SI" , "ESTOS" , "ENTONCES" , "SIN EMBARGO" , "MI" } ;
del_filas = dt << obtener filas donde ( Contiene ( Para las palabras , : palabra ) ) ;
dt << eliminar filas ( del_filas ) ;
Nueva ventana ( "Nube de palabras de texto" ,
Cuadro de esquema ( título_nube ,
cuadro de borde ( Izquierda ( 10 ) , Bien ( 10 ) , arriba ( 10 ) , abajo ( 10 ) , v = Cuadro de lista V () )
)
) ;
h = Cuadro de lista H () ;
// Lista de colores "buenos" de la Guía de secuencias de comandos, página 341
lista_de_colores =
[ 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 ] ;
colores = filas ( lista_de_colores ) ;
fila = 1 ;
k = 1 ;
no. = filas ( dt ) ;
min_palabras = 8 ;
tamaño_multiplicador = 1 ;
si ( no. < 100 ,
min_palabras = 2 ;
tamaño_multiplicador = 2 ;
) ;
Mientras ( dt : contar [ fila ] > min_palabras ,
X = Caja de texto ( dt : palabra [ fila ] || " " ) ;
X << establecer tamaño de fuente ( tamaño_multiplicador * Registro ( dt : contar [ fila ] ) * 4 ) ;
X << color de fuente ( lista_de_colores [ k ]) ;
k ++;
si ( k > colores ,
k = 1 ;
) ;
h << adjuntar ( X ) ;
Si ( h << obtener ancho > 700 ,
h = Cuadro de lista H () ;
v << adjuntar ( h ) ;
) ;
fila ++;
Esperar ( 0 ) ;
) ;
esperar ( 0 ) ;
cerca ( dt , no guardar ) ;
El aspecto del NY Times es agradable porque es fácil de implementar.

Aquí hay algo de JSL
/* el archivo de texto de carga, a continuación, obtiene un archivo de http://www.gutenberg.org/ que dice...
Las aventuras de Alicia en el país de las maravillas de Project Gutenberg, de Lewis Carroll
Este libro electrónico es para el uso de cualquier persona en cualquier lugar sin costo alguno y con
casi sin restricciones de ningún tipo.Puede copiarlo, regalarlo o
reutilizarlo bajo los términos de la Licencia del Proyecto Gutenberg incluida
con este libro electrónico o en línea en www.gutenberg.org
Título: Las aventuras de Alicia en el país de las maravillas
Autor: Lewis Carroll
Fecha de publicación: 25 de junio de 2008 [EBook #11]
Fecha de lanzamiento: marzo de 1994
[Última actualización: 20 de diciembre de 2011]
Idioma: inglés
*/
txt = Cargar archivo de texto ("c:\ruta\Alice.txt "); Longitud (txt);
aa = [=> 0]; // matriz asociativa con valor predeterminado de cero
// cuenta las palabras.JMP tiene una función de palabras () que devuelve una lista de palabras, pero no es
// Capaz de distinguir los apóstrofes dentro de las palabras de los bordes de las palabras.
// 'somos es un ejemplo en el que funciona esta expresión regular.como es 'Oh.
// 'Oh, no puedes evitar eso', dijo el Gato: 'aquí estamos todos locos. Estoy loco.Estas loco.'
rc = Pat Match( txt, Pat Repeat( (Pat Regex( "[\w]+('[\w]+)?" ) >> palabra +
Expr( palabra = Mayúsculas( palabra ); aa[palabra]++; ""; )) |
(Pat Regex( "[^\w]+" )), 1, 9999999, CODICIOSO ));
claves = aa << getclaves; N elementos (claves);
vals = aa << obtenervalores; N Elementos (valores);
dt = Nueva tabla ("Sin título",
Nueva columna ("palabra", carácter, valores establecidos (teclas)),
Nueva columna ("recuento", numérico, "continuo", formato ("mejor", 12), valores establecidos (vals))
);
dt2 = dt << sort( by( count ), order( descending ) );
Cerrar (dt, no guardar);
dt = dt2;
Nueva ventana ("palabras", Cuadro de borde (Izquierda (10), Derecha (10), arriba (10), abajo (10), v = V Cuadro de lista ()));
h = H Cuadro de lista (); v << anexar( h );
fila = 12; // mediante inspección
Mientras( dt:cuenta[fila] > 8,
x = Cuadro de texto( dt:palabra[fila] || " " );
x << setfontsize( Log( dt:count[fila] ) * 4 );
h << añadir( x );
If( h << getwidth > 700, h = H List Box(); v << append( h ); );
fila++;
Espera(0);
);
La instrucción PatMatch usa algunas expresiones regulares para identificar las palabras en el texto, ponerlas en mayúsculas y usarlas como claves para una matriz asociativa.Los elementos de la matriz asociativa tienen un valor predeterminado de cero si aún no existen (consulte =>0), por lo que no se requiere un esfuerzo especial para la primera instancia de una palabra.PatRepeat dentro de PatMatch procesa la cadena completa.Dentro de la repetición, las dos expresiones regulares alternan procesamiento de palabras y cosas entre palabras.Dentro de la primera expresión regular, expr se usa para ejecutar algo de JSL en cada palabra coincidente.Lo último que hace expr es evaluar una cadena vacía que siempre coincidirá en la posición actual.Este PatMatch procesa aproximadamente 150 000 caracteres en aproximadamente dos segundos, incluido el conteo de palabras en la matriz asociativa.
Se construye una tabla de datos a partir de los pares clave-valor y se ordena, luego se crea una ventana con un cuadro de lista vertical que contiene un montón de cuadros de lista horizontales.Los cuadros de lista horizontales se llenan con las palabras, de izquierda a derecha.Después de agregar cada palabra, la espera (0) permite que la ventana se actualice, por lo que el ancho del cuadro de texto horizontal será correcto (y podrá verlo). Cuando el cuadro supere los 700 píxeles, comience una nueva línea.
Comience en la fila 12 para omitir EL Y A UN DE ELLA LE DIJO EN I. Deténgase cuando el conteo ordenado esté por debajo de 8 instancias.Utilice una transformación de registro; Alice tiene 386 instancias.
Como señala Xan, hay problemas con las palabras que solo se diferencian en el sufijo, el prefijo o los sinónimos.Probablemente algunos otros problemas también.
Jabberwocky está en A través del espejo.Slithy Toves no está aquí.
actualización: probablemente no debería obtener texto del enlace cada vez.Apunte el archivo de texto de carga a algún archivo en su computadora, tal vez descargado de http://www.gutenberg.org/

Hola Pedro,
Aquí hay algunos JSL para contar las palabras en un archivo de texto y luego crear un mapa de árbol.
No es exactamente una nube de palabras, pero podría ayudarlo a comenzar en la dirección que desea.
Mejor,
Stan
borrar registro () ;
Nombres predeterminados a aquí ( 1 ) ;
// Solicitud de archivo de texto
Obtener el archivo = Seleccionar archivo () ;
// Almacenar cadena de texto en variable
texto = Cargar archivo de texto ( Obtener el archivo ) ;
//Crear una lista de palabras ordenadas eliminando espacios en blanco y otros delimitadores
listas de palabras = Lista Ordenada ( Palabras ( texto , ",./\;!?'()\!" " )) ;
//Cuenta los elementos de la lista
nwds = N artículos ( listas de palabras ) ;
// crea dos listas; uno para eliminaciones y otro para inserciones
borrar lista = {} ;
lista de mantenimiento = {} ;
// eliminar palabras comunes, es decir; los que tienen 3 caracteres o menos
Para ( i = 1 , i <= N artículos ( listas de palabras ) , i ++,
longitud de letra = longitud ( listas de palabras [ i ] ) ;
Si ( longitud de letra <= 3 ,
Insertar en ( borrar lista , listas de palabras [ i ] , 1 ) ,
Insertar en ( lista de mantenimiento , listas de palabras [ i ] )
)
) ;
// Crear tabla de datos
dt = Nueva tabla ( "Tabla de datos de nube de palabras" ,
Nueva columna ( "Palabras" , Personaje , Establecer valores ( lista de mantenimiento )) ,
) ;
Tabular (
Mostrar panel de control ( 0 ) ,
Incluir faltantes para agrupar columnas ( 1 ) ,
Ordenar por recuento de columnas de agrupación ( 1 ) ,
Agregar tabla ( Tabla de filas ( Agrupar columnas ( : Palabras ) ) )
) << Convertir en tabla de datos ;
// Crear mapa de árbol de todas las palabras
Generador de gráficos (
Mostrar panel de control ( 0 ) ,
Variables ( X ( : Palabras ) ) ,
Elementos ( Mapa de árbol ( X , Estadística de resumen ( "Suma" ) ) ) ,
) ;