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

cloud_title = "이상한 나라의 앨리스" ;
// 모든 텍스트를 하나의 변수에 넣습니다.
txt = 텍스트 파일 로드 ( "c:\임시\앨리스.txt" ) ;
아아 = [ => 0 ] ; // 기본값이 0인 연관 배열
// 단어 수를 센다. JMP에는 단어 목록을 반환하는 words() 함수가 있지만 그렇지 않습니다.
// 단어 안의 아포스트로피와 단어 가장자리를 구분할 수 있습니다.
// 'we're는 이 정규식이 작동하는 예입니다.마찬가지로 '아.
// '오, 어쩔 수 없어.' 고양이가 말했다. 내가 미친거야.당신은 미쳤다.'
RC = 팻 매치 (
txt ,
팻 반복 (
( 팻 정규식 ( "[\w]+('[\w]+)?" ) >> 단어 + 만료 (
단어 = 대문자 ( 단어 ) ;
아아 [ 단어 ] ++;
"" ;
)) | ( 팻 정규식 ( "[^\w]+" )) ,
1 ,
9999999 ,
탐욕스러운
)
) ;
열쇠 = 아아 << getkeys ;
//show(N 항목(키));
값 = 아아 << getvalues ;
//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 ] ;
ncolors = nrows ( color_list ) ;
열 = 1 ;
케이 = 1 ;
NR = nrows ( dt ) ;
min_words = 8 ;
size_multiplier = 1 ;
만약에 ( NR < 100 ,
min_words = 2 ;
size_multiplier = 2 ;
) ;
하는 동안 ( dt : 세다 [ 열 ] > min_words ,
엑스 = 텍스트 상자 ( dt : 단어 [ 열 ] || " " ) ;
엑스 << setfontsize ( size_multiplier * 통나무 ( dt : 세다 [ 열 ] ) * 4 ) ;
엑스 << 글꼴 색상 ( color_list [ 케이 ]) ;
케이 ++;
만약에 ( 케이 > ncolors ,
케이 = 1 ;
) ;
시간 << 추가 ( 엑스 ) ;
만약에 ( 시간 << getwidth > 700 ,
시간 = H 목록 상자 () ;
V << 추가 ( 시간 ) ;
) ;
열 ++;
기다리다 ( 0 ) ;
) ;
기다리다 ( 0 ) ;
닫다 ( dt , 노세이브 ) ;
NY Times 룩은 구현하기 쉽기 때문에 좋습니다.

다음은 JSL입니다.
/* 아래의 loadtextfile은 다음에서 파일을 가져옵니다. http://www.gutenberg.org/ 라고...
Lewis Carroll의 Project Gutenberg의 Alice's Adventures in Wonderland
이 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 = 팻 매치( txt, 팻 반복( (팻 Regex( "[\w]+('[\w]+)?" ) >> 단어 +
Expr( 단어 = 대문자( 단어 ); aa[단어]++; ""; )) |
(Pat Regex( "[^\w]+" )), 1, 9999999, GREEDY ));
키 = aa << getkeys; N 항목(키);
vals = aa << getvalues; N 항목( vals );
dt = 새 테이블( "제목 없음",
새 열( "단어", 문자, 값 설정( 키 ) ),
새 열( "개수", 숫자, "연속", 형식( "최고", 12 ), 값 설정( vals ) )
);
dt2 = dt << sort( 기준( 개수 ), 순서( 내림차순 ) );
닫기( dt, nosave );
dt = dt2;
New Window( "단어", 테두리 상자( 왼쪽( 10 ), 오른쪽( 10 ), 위( 10 ), 아래( 10 ), v = V List Box() ) );
h = H 목록 상자(); v << 추가( h );
행 = 12; // 검사에 의해
동안( dt:count[행] > 8,
x = 텍스트 상자( dt:단어[행] || " " );
x << setfontsize( Log( dt:count[row] ) * 4 );
h << 추가( x );
If( h << getwidth > 700, h = H 목록 상자(); v << 추가( h ); );
행++;
대기( 0 );
);
PatMatch 문은 일부 정규식을 사용하여 텍스트의 단어를 대문자로 식별하고 연관 배열의 키로 사용합니다.연관 배열 요소는 아직 존재하지 않는 경우 기본적으로 0으로 지정되므로(=>0 참조) 단어의 첫 번째 인스턴스에 특별한 노력이 필요하지 않습니다.PatMatch 내의 PatRepeat는 전체 문자열을 처리합니다.반복 내에서 두 정규식은 단어 사이의 처리 단어와 물건을 번갈아 가며 처리합니다.첫 번째 정규식 내에서 expr은 일치하는 각 단어에서 일부 JSL을 실행하는 데 사용됩니다.expr이 하는 마지막 작업은 현재 위치에서 항상 일치하는 빈 문자열로 평가하는 것입니다.이 PatMatch는 단어를 연관 배열로 세는 것을 포함하여 약 2초 만에 약 150,000개의 문자를 처리합니다.
데이터 테이블은 키-값 쌍으로 구성되고 정렬된 다음 여러 개의 수평 목록 상자를 포함하는 수직 목록 상자가 있는 창이 생성됩니다.가로 목록 상자는 왼쪽에서 오른쪽으로 단어로 채워집니다.각 단어를 추가한 후 wait(0)은 창이 업데이트되도록 허용하여 가로 텍스트 상자의 너비가 정확하도록 합니다(그리고 사용자가 볼 수 있습니다.) 상자가 700픽셀을 초과하면 새 줄을 시작합니다.
행 12에서 시작하여 I에서 그녀가 말한 내용을 건너뜁니다. 정렬된 수가 8개 미만으로 떨어지면 중지합니다.로그 변환을 사용하십시오. Alice에는 386개의 인스턴스가 있습니다.
Xan이 지적한 것처럼 접미사, 접두사 또는 동의어만 다른 단어에는 문제가 있습니다.아마도 다른 문제들도 있을 것입니다.
Jabberwocky는 거울을 통해.Slithy Toves는 여기에 없습니다.
업데이트: 매번 링크에서 텍스트를 가져오지 않아야 합니다.loadtextfile을 컴퓨터의 일부 파일로 지정합니다. http://www.gutenberg.org/

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