나는 출력에 중지 단어와 색상을 추가했습니다.또한 dt를 보이지 않는 테이블로 만들었습니다.

cloud_title = "이상한 나라의 앨리스" ;
// 모든 텍스트를 하나의 변수에 넣습니다.
txt = 텍스트 파일 로드 ( "c:\temp\alice.txt" ) ;
아아 = [ => 0 ] ; // 기본값이 0인 연관 배열
// 단어를 계산합니다. JMP에는 단어 목록을 반환하는 words() 함수가 있지만
// 단어 내부의 아포스트로피와 단어의 가장자리를 구별할 수 있습니다.
// 'we're는 이 정규식이 작동하는 예입니다.그대로 '아.
// '아, 어쩔 수 없군.' 고양이가 말했다. 내가 미친거야.화났구나.'
rc = 팻 매치 (
txt ,
팻 반복 (
( 팻 정규식 ( "[\w]+('[\w]+)?" ) >> 단어 + 특급 (
단어 = 대문자 ( 단어 ) ;
아아 [ 단어 ] ++;
"" ;
)) | ( 팻 정규식 ( "[^\w]+" )) ,
1 ,
9999999 ,
탐욕스러운
)
) ;
열쇠 = 아아 << getkeys ;
//show(N 항목( 키 ));
발 = 아아 << 값을 얻다 ;
//show(N 항목( vals ));
dt = 새 테이블 ( "" ,
새 열 ( "단어" , 캐릭터 , 값 설정 ( 열쇠 ) ) ,
새 열 ( "세다" , 숫자 , "마디 없는" , 체재 ( "최고" , 12 ) , 값 설정 ( 발 ) ) ,
보이지 않는
) ;
dt << 종류 ( ~에 의해 ( 세다 ) , 주문하다 ( 내림차순 ) , 테이블 교체 ) ;
// 무시할 단어
stop_words = { "그만큼" , "였다" , "아니다" , "그리고" , "켜짐" , "ㅏ" , "와 함께" , "에서" , "이것" , "의" , "이었다" , "을 위한" , "에게" ,
"안" , "에 의해" , "그것" , "또는" , "처럼" , "가졌다" , "0" , "1" , "2" , "삼" , "4" , "5" , "6" , "7" , "8" , "9" , "에" , "BE" , "에" ,
"했다" , "저것" , "아니" , "또한" , "이다" , "5월" , "하지만" , "가지다" , "그녀의" , "그녀" , "그" , "그의" , "계속 ~ 이다" , "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" , "어디" ,
"즉" , "비" , "씨" , "디" , "이자형" , "에프" , "G" , "시간" , "나" , "제이" , "케이" , "엘" , "중" , "N" , "영형" , "피" , "큐" , "아르 자형" ,
"에스" , "티" , "유" , "V" , "여" , "엑스" , "와이" , "지" , "가지다" , "처럼" , "데" , "거기" , "모두" , "갖다" ,
"WHO" , "후에" , "어느" , "에 대한" , "회사" , "다음" , "그들" , "만약에" , "이것들" , "그 다음에" , "하지만" , "나의" } ;
del_rows = dt << 행 가져오기 ( 포함 ( stop_words , : 단어 ) ) ;
dt << 행 삭제 ( del_rows ) ;
새창 ( "텍스트 워드 클라우드" ,
개요 상자 ( cloud_title ,
테두리 상자 ( 왼쪽 ( 10 ) , 오른쪽 ( 10 ) , 맨 위 ( 10 ) , 맨 아래 ( 10 ) , V = V 목록 상자 () )
)
) ;
시간 = H 목록 상자 () ;
// 스크립팅 가이드, 341페이지의 "좋은" 색상 목록
color_list =
[ 0 , 삼 , 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 ] ;
엔컬러스 = 눈 ( color_list ) ;
열 = 1 ;
케이 = 1 ;
nr = 눈 ( dt ) ;
min_words = 8 ;
size_multiplier = 1 ;
만약에 ( nr < 100 ,
min_words = 2 ;
size_multiplier = 2 ;
) ;
하는 동안 ( dt : 세다 [ 열 ] > min_words ,
엑스 = 텍스트 상자 ( dt : 단어 [ 열 ] || " " ) ;
엑스 << 글꼴 크기 설정 ( size_multiplier * 통나무 ( dt : 세다 [ 열 ] ) * 4 ) ;
엑스 << 글꼴 색상 ( color_list [ 케이 ]) ;
케이 ++;
만약에 ( 케이 > 엔컬러스 ,
케이 = 1 ;
) ;
시간 << 추가 ( 엑스 ) ;
만약에 ( 시간 << getwidth > 700 ,
시간 = H 목록 상자 () ;
V << 추가 ( 시간 ) ;
) ;
열 ++;
기다리다 ( 0 ) ;
) ;
기다리다 ( 0 ) ;
닫다 ( dt , 노사브 ) ;
NY Times 룩은 구현하기 쉽기 때문에 좋습니다.

다음은 JSL입니다.
/* 아래의 loadtextfile은 다음 위치에서 파일을 가져옵니다. http://www.gutenberg.org/ 라고...
프로젝트 구텐베르크의 이상한 나라의 앨리스의 모험, 루이스 캐롤
이 eBook은 누구나 어디서나 무료로 사용할 수 있습니다.
거의 제한이 없습니다.복사하거나 양도하거나
포함된 Project Gutenberg 라이선스 조건에 따라 재사용
이 eBook 또는 온라인 www.gutenberg.org
제목: 이상한 나라의 앨리스의 모험
저자: 루이스 캐롤
게시 날짜: 2008년 6월 25일 [전자책 #11]
출시일: 1994년 3월
[최종 업데이트: 2011년 12월 20일]
언어: 영어
*/
txt = 텍스트 파일 로드( "c:\path\Alice.txt " ), 길이(txt);
aa = [=> 0]; // 기본값이 0인 연관 배열
// 단어를 계산합니다.JMP에는 단어 목록을 반환하는 words() 함수가 있지만
// 단어 내부의 아포스트로피와 단어의 가장자리를 구별할 수 있습니다.
// 'we're는 이 정규식이 작동하는 예입니다.그대로 '아.
// '아, 어쩔 수 없군.' 고양이가 말했다. 내가 미친거야.화났구나.'
rc = Pat Match( txt, Pat Repeat( (Pat Regex( "[\w]+('[\w]+)?" ) ) >> 단어 +
Expr( 단어 = 대문자( 단어 ); aa[단어]++; ""; )) |
(Pat Regex( "[^\w]+" )), 1, 9999999, GREEDY ));
키 = aa << getkeys; N 항목( 키 );
값 = aa << getvalues; N 항목( vals );
dt = 새 테이블( "제목 없음",
새 열( "단어", 문자, 값 설정( 키 ) ),
새 열( "개수", 숫자, "연속", 형식( "최상", 12 ), 값 설정( vals ))
);
dt2 = dt << sort( by( count ), order( 내림차순 ) );
닫기( dt, nosave );
dt = dt2;
새 창( "단어", 테두리 상자( 왼쪽( 10 ), 오른쪽( 10 ), 위쪽( 10 ), 아래쪽( 10 ), v = V 목록 상자() ) );
h = H 목록 상자(); v << 추가( h );
행 = 12; // 검사에 의해
동안( dt:count[행] > 8,
x = 텍스트 상자( dt:단어[행] || " " );
x << setfontsize( 로그( dt:count[row] ) * 4 );
h << 추가( x );
If( h << getwidth > 700, h = H 목록 상자(), v << append( h ); );
행++;
대기( 0 );
);
PatMatch 문은 일부 정규식을 사용하여 텍스트의 단어를 식별하고 대문자로 표시한 다음 연관 배열의 키로 사용합니다.연관 배열 요소는 이미 존재하지 않는 경우 기본적으로 0으로 설정되므로(=>0 참조) 단어의 첫 번째 인스턴스에 대해 특별한 노력이 필요하지 않습니다.PatMatch 내의 PatRepeat는 전체 문자열을 처리합니다.반복 내에서 두 개의 정규식은 단어 사이에 단어와 내용을 대체합니다.첫 번째 정규식 내에서 expr은 일치하는 각 단어에 대해 일부 JSL을 실행하는 데 사용됩니다.expr이 하는 마지막 일은 현재 위치에서 항상 일치하는 빈 문자열로 평가하는 것입니다.이 PatMatch는 단어를 연관 배열로 계산하는 것을 포함하여 약 2초 만에 약 150K 문자를 처리합니다.
데이터 테이블은 키-값 쌍으로 구성되고 정렬된 다음 여러 개의 수평 목록 상자가 포함된 수직 목록 상자가 있는 창이 생성됩니다.가로 목록 상자는 왼쪽에서 오른쪽으로 단어로 채워집니다.각 단어를 추가한 후 wait(0)은 창을 업데이트하여 가로 텍스트 상자의 너비가 정확하도록(그리고 볼 수 있게 합니다.) 상자가 700픽셀을 초과하면 새 줄을 시작합니다.
12행에서 시작하여 AND TO A OF IT SHE SAID YOU IN I를 건너뜁니다. 정렬된 개수가 8개 인스턴스 아래로 떨어지면 중지합니다.로그 변환을 사용하십시오. Alice에는 386개의 인스턴스가 있습니다.
Xan이 지적했듯이 접미사, 접두사 또는 동의어만 다른 단어에는 문제가 있습니다.아마도 다른 문제도 마찬가지일 것입니다.
Jabberwocky님이 Through The Looking Glass에 있습니다.Slithy Toves는 여기에 없습니다.
업데이트: 아마도 링크에서 매번 텍스트를 가져오지 않아야 할 것입니다.loadtextfile이 컴퓨터의 일부 파일을 가리키도록 합니다. http://www.gutenberg.org/

안녕 피터,
다음은 텍스트 파일의 단어 수를 세고 트리 맵을 만드는 JSL입니다.
정확히 단어 구름은 아니지만 원하는 방향으로 시작할 수 있습니다.
최고,
스탠
로그 지우기 () ;
NamesDefaultToHere ( 1 ) ;
// 텍스트 파일에 대한 프롬프트
가져오기 파일 = 파일 선택 () ;
// 변수에 문자열 저장
텍스트 = 텍스트 파일 로드 ( 가져오기 파일 ) ;
// 공백 및 기타 구분 기호를 제거하여 정렬된 순서로 단어 목록 생성
단어 목록 = 정렬 목록 ( 단어 ( 텍스트 , ",./\;!?'()\!" " )) ;
// 목록에 있는 항목의 수를 계산합니다.
nwds = N 항목 ( 단어 목록 ) ;
// 두 개의 목록을 생성합니다. 하나는 삭제용이고 하나는 삽입용
삭제 목록 = {} ;
보관 목록 = {} ;
// 일반적인 단어를 제거합니다. ie; 3자 이하인 것
을 위한 ( 나 = 1 , 나 <= N 항목 ( 단어 목록 ) , 나 ++,
wrdlength = 길이 ( 단어 목록 [ 나 ] ) ;
만약에 ( wrdlength <= 삼 ,
에 집어 넣다 ( 삭제 목록 , 단어 목록 [ 나 ] , 1 ) ,
에 집어 넣다 ( 보관 목록 , 단어 목록 [ 나 ] )
)
) ;
// 데이터 테이블 생성
dt = 새 테이블 ( "워드 클라우드 데이터 테이블" ,
새 열 ( "단어" , 성격 , 값 설정 ( 보관 목록 )) ,
) ;
표로 만들다 (
제어판 표시 ( 0 ) ,
그룹화 열에 누락 포함 ( 1 ) ,
그룹화 열 수로 정렬 ( 1 ) ,
테이블 추가 ( 행 테이블 ( 그룹화 열 ( : 단어 ) ) )
) << 데이터 테이블로 만들기 ;
// 모든 단어의 트리 맵 생성
그래프 빌더 (
제어판 표시 ( 0 ) ,
변수 ( 엑스 ( : 단어 ) ) ,
집단 ( 트리맵 ( 엑스 , 요약 통계 ( "합집합" ) ) ) ,
) ;