我在輸出中添加了停用詞和顏色。還使 dt 成為一個不可見的表。

雲標題= “愛麗絲漫遊仙境” ;
// 將所有文本放入一個變量中
TXT =加載文本文件( "c:\temp\alice.txt" ) ;
一個= [ => 0 ] ; // 默認值為零的關聯數組
// 計算單詞數。 JMP 有一個返回單詞列表的 words() 函數,但它不是
// 能夠區分單詞內部和單詞邊緣的撇號。
// '我們是這個正則表達式的一個例子。就像'哦。
// '哦,你沒辦法,'貓說:'我們都瘋了。 我生氣了。你瘋了。'
遙控=拍拍比賽(
TXT ,
拍拍重複(
(正則表達式( “[\w]+('[\w]+)?” ) >>單詞+表達式(
單詞=大寫(單詞) ;
一個[單詞] ++;
“” ;
)) | (正則表達式( “[^\w]+” )) ,
1個,
9999999 ,
貪婪的
)
) ;
鑰匙=一個<<獲取密鑰;
//顯示(N 項(鍵));
值=一個<<獲取值;
//顯示(N 項( vals ));
dt =新表( “” ,
新建專欄( “單詞” ,特點,設置值(鑰匙) ) ,
新建專欄( “數數” ,數字, “連續的” ,格式( “最好的” , 12 ) ,設置值(值) ) ,
無形的
) ;
dt <<種類(經過(數數) ,命令(下降) ,替換錶) ;
// 要忽略的詞
停用詞= { “這” , “曾是” , “不是” , “和” , “在” , “A” , “和” , “從” , “這” , “的” , “是” , “為了” , “到” ,
“一個” , “經過” , “它” , “或者” , “作為” , “有” , “0” , “1” , “2” , “3” , “4” , “5” , “6” , “7” , “8” , “9” , “在” , “是” , “在” ,
“做過” , “那” , “不” , “還” , “是” , “可能” , “但” , “有” , “她” , “她” , “他” , “他的” , “到過” , “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” , “在哪裡” ,
“IE” , “乙” , “C” , “D” , “E” , “F” , “G” , “H” , “我” , “J” , “K” , “大” , “米” , “N” , “哦” , “P” , “問” , “R” ,
“S” , “T” , “你” , “V” , “W” , “X” , “是” , “Z” , “有” , “喜歡” , “德” , “那裡” , “全部” , “得到” ,
“WHO” , “後” , “任何” , “關於” , “公司” , “下一個” , “他們” , “如果” , “這些” , “然後” , “然而” , “我的” } ;
刪除行= dt <<獲取行在哪裡(包含(停用詞, :單詞) ) ;
dt <<刪除行(刪除行) ;
新窗戶( 《文字詞云》 ,
輪廓框(雲標題,
邊框框(左邊( 10 ) ,正確的( 10 ) ,頂部( 10 ) ,底部( 10 ) , v = V 列錶框() )
)
) ;
H = H 列錶框() ;
// 腳本指南第 341 頁中的“好”顏色列表
顏色列表=
[ 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 ] ;
顏色=行(顏色列表) ;
排= 1個;
k = 1個;
天然橡膠=行( dt ) ;
最小字數= 8個;
大小乘數= 1個;
如果(天然橡膠< 100 ,
最小字數= 2個;
大小乘數= 2個;
) ;
儘管( dt :數數[排] >最小字數,
X =文本框( dt :單詞[排] || “” ) ;
X <<設置字體大小(大小乘數*日誌( dt :數數[排] ) * 4個) ;
X <<字體顏色(顏色列表[ k ]) ;
k ++;
如果( k >顏色,
k = 1個;
) ;
H <<附加( X ) ;
如果( H <<獲取寬度> 700 ,
H = H 列錶框() ;
v <<附加( H ) ;
) ;
排++;
等待( 0 ) ;
) ;
等待( 0 ) ;
關閉( dt ,沒有保存) ;
紐約時報的外觀很好,因為它很容易實現。

這是一些 JSL
/* 下面的 loadtextfile 從中獲取一個文件http://www.gutenberg.org/這說...
古騰堡計劃的愛麗絲夢遊仙境,作者:Lewis Carroll
這本電子書供任何人在任何地方免費使用,並且
幾乎沒有任何限制。您可以復制、贈送或
根據 Project Gutenberg License 的條款重新使用它
使用這本電子書或在線訪問www.gutenberg.org
書名:愛麗絲夢遊仙境
作者:劉易斯卡羅爾
發布日期:2008 年 6 月 25 日 [電子書 #11]
發行日期:1994 年 3 月
[最後更新:2011 年 12 月 20 日]
英語語言
*/
txt = 加載文本文件( "c:\path\Alice.txt " ); 長度( txt );
aa = [=> 0]; // 默認值為零的關聯數組
// 計算單詞數。JMP 有一個返回單詞列表的 words() 函數,但它不是
// 能夠區分單詞內部和單詞邊緣的撇號。
// '我們是這個正則表達式的一個例子。就像'哦。
// '哦,你沒辦法,'貓說:'我們都瘋了。 我生氣了。你瘋了。'
rc = Pat Match( txt, Pat Repeat( (Pat Regex( "[\w]+('[\w]+)?" ) >> word +
Expr( word = Uppercase( word ); aa[word]++; ""; )) |
(Pat Regex( "[^\w]+" )), 1, 9999999, GREEDY ));
keys = aa << getkeys; N 項(鍵);
vals = aa << 獲取值; N 項(值);
dt = 新表("無標題",
New Column( "word", character, Set Values( keys ) ),
新列(“計數”,數字,“連續”,格式(“最佳”,12),設置值(vals))
);
dt2 = dt << sort( by( count ), order( 降序 ) );
關閉(dt,nosave);
dt = dt2;
New Window( "words", Border Box( Left( 10 ), Right( 10 ), top( 10 ), bottom( 10 ), v = V List Box() ) );
h = H 列錶框(); v <<追加(h);
行 = 12; // 通過檢查
而(dt:計數[行]> 8,
x = 文本框( dt:word[行] || " " );
x << setfontsize( Log( dt:count[row] ) * 4 );
h <<追加(x);
If( h << getwidth > 700, h = H List Box(); v << append( h ); );
行++;
等待(0);
);
PatMatch 語句使用一些正則表達式來識別文本中的單詞,將它們大寫,並將它們用作關聯數組的鍵。如果關聯數組元素不存在(請參閱 =>0),則它們默認為零,因此對於單詞的第一個實例不需要特別的努力。PatMatch 中的 PatRepeat 處理整個字符串。在 repeat 中,兩個正則表達式交替處理單詞和單詞之間的內容。在第一個正則表達式中,expr 用於對每個匹配的詞執行一些 JSL。expr 做的最後一件事是評估一個空字符串,它將始終匹配當前位置。這個 PatMatch 在大約兩秒鐘內處理了大約 150K 個字符,包括將單詞計數到關聯數組中。
從鍵值對構建數據表並排序,然後創建一個窗口,其中包含一個包含一堆水平列錶框的垂直列錶框。水平列錶框從左到右填滿了單詞。添加每個單詞後,wait(0) 允許窗口更新,以便水平文本框的寬度正確(您可以觀察它)。當文本框超過 700 像素時,開始新的一行。
從第 12 行開始,跳過 THE AND A OF IT SHE SAY YOU IN I。當排序計數低於 8 個實例時停止。使用日誌轉換;愛麗絲有 386 個實例。
正如 Xan 指出的那樣,僅後綴、前綴或同義詞不同的單詞存在問題。可能還有一些其他問題。
Jabberwocky 在 Through the Looking Glass 中。Slithy Toves 不在這裡。
更新:可能不應該每次都從鏈接中獲取文本。將 loadtextfile 指向您計算機上的某個文件,可能是從http://www.gutenberg.org/