グラフ ビルダーのワード クラウド?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、仲間の JMPers です。
JMP をテキスト マイニングに使用したことのある人はいますか?具体的には、Graph Builder を使用してインタラクティブなワード クラウドを作成することに興味があります。R に接続するソリューションを見たことがありますが、それらは JMP の対話性に欠けています。
ありがとう!
Re: グラフビルダーのワードクラウド?出力にストップ ワードと色を追加しました。また、dt を非表示テーブルにしました。

cloud_title = "不思議の国のアリス" ;
// すべてのテキストを 1 つの変数に入れる
TXT =テキストファイルを読み込む( 「c:\temp\alice.txt」 ) ;
ああ= [ => 0 ] ; // デフォルト値ゼロの連想配列
// 単語を数えます。 JMPには、単語のリストを返すwords()関数がありますが、そうではありません
// 単語内のアポストロフィと単語の端のアポストロフィを区別できる。
// 'we're' は、この正規表現が機能する例です。そのまま「ああ。
// 「ああ、それはどうしようもない」と猫は言いました。「ここではみんな怒っています。 私が怒ってんだ。あなたは怒っている。
ラジコン=パットマッチ(
TXT 、
パットリピート(
(パット正規表現( 「[\w]+('[\w]+)?」 ) >>語+式(
語=大文字(語) ;
ああ[語] ++;
"" ;
))) | | (パット正規表現( "[^\w]+" ))) 、
1 、
9999999 、
よく深い
)
) ;
キー=ああ<<キーを取得する;
//show(N Items( キー ));
ヴァルス=ああ<<値を取得する;
//show(N Items( vals ));
dt =新しいテーブル( "" 、
新しい列( "語" 、キャラクター、設定値(キー) ) 、
新しい列( "カウント" 、数値、 「連続」 、フォーマット( "一番" 、 12 ) 、設定値(ヴァルス) ) 、
見えない
) ;
dt <<選別(に(カウント) 、注文(降順) 、テーブルを置き換える) ;
// 無視する単語
ストップワード= { 「ザ」 、 "だった" 、 "いいえ" 、 "と" 、 "オン" 、 「あ」 、 "と" 、 "から" 、 "これ" 、 "の" 、 "そうだった" 、 "為に" 、 "に" 、
「あん」 、 "に" 、 "それ" 、 "また" 、 "なので" 、 "持っていました" 、 「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」 、 "どこ" 、
「いえ」 、 "B" 、 "C" 、 "D" 、 「え」 、 「フ」 、 「グ」 、 「ひ」 、 "私" 、 「じ」 、 「カ」 、 "L" 、 「M」 、 「ン」 、 「お」 、 "P" 、 "Q" 、 "R" 、
"S" 、 「た」 、 「う」 、 "V" 、 「う」 、 "バツ" 、 「よ」 、 「ズ」 、 "持ってる" 、 "お気に入り" 、 「デ」 、 "そこの" 、 "全て" 、 「わかった」 、
"WHO" 、 "後" 、 "どれか" 、 "約" 、 "会社" 、 "次" 、 "彼ら" 、 "もしも" 、 "これらは" 、 "それから" 、 "でも" 、 "私の" } ;
del_rows = dt <<行を取得する場所(含む(ストップワード、 :語) ) ;
dt <<行を削除する( del_rows ) ;
新しい窓( 「テキストワードクラウド」 、
アウトラインボックス( cloud_title 、
ボーダーボックス(左( 10 ) 、右( 10 ) 、上( 10 ) 、下( 10 ) 、 v = Ⅴリストボックス() )
)
) ;
時間= H リストボックス() ;
// Scripting Guide の「良い」色のリスト、341 ページ
color_list =
[ 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 ] ;
ncolors =ナロー( color_list ) ;
行= 1 ;
k = 1 ;
番号=ナロー( dt ) ;
min_words = 8 ;
size_multiplier = 1 ;
もしも(番号< 100 、
min_words = 2 ;
size_multiplier = 2 ;
) ;
その間( dt :カウント[行] > min_words 、
バツ=テキストボックス( dt :語[行] || " " ) ;
バツ<< setfontsize ( size_multiplier *ログ( dt :カウント[行] ) * 4 ) ;
バツ<<フォントの色( color_list [ k ])) ;
k ++;
もしも( k > ncolors 、
k = 1 ;
) ;
時間<<追加(バツ) ;
もしも(時間<<取得幅> 700 、
時間= H リストボックス() ;
v <<追加(時間) ;
) ;
行++;
待って( 0 ) ;
) ;
待つ( 0 ) ;
近い( dt 、 nosave ) ;
Re: グラフビルダーのワードクラウド?ありがとうクレイジ、非常にクールなソリューション。
Re: グラフビルダーのワードクラウド?実装が簡単なため、NY Times の外観は優れています。

ここにいくつかのJSLがあります
/* 以下の loadtextfile は、 http://www.gutenberg.org/それは言う...
ルイス・キャロルによるプロジェクト・グーテンベルクの不思議の国のアリスの冒険
この eBook は、誰でもどこでも無料で使用できます。
ほとんど何の制限もありません。あなたはそれをコピーしたり、譲渡したり、
含まれている Project Gutenberg License の条件の下で再利用する
この eBook またはオンラインでwww.gutenberg.org
タイトル: 不思議の国のアリス
作者: ルイス・キャロル
掲載日: 2008 年 6 月 25 日 [EBook #11]
発売日:1994年3月
[最終更新日: 2011 年 12 月 20 日]
言語: 英語
*/
txt = Load Text File( "c:\path\Alice.txt " ); 長さ ( txt );
aa = [=> 0]; // デフォルト値ゼロの連想配列
// 単語を数えます。JMPには、単語のリストを返すwords()関数がありますが、そうではありません
// 単語内のアポストロフィと単語の端のアポストロフィを区別できる。
// 'we're' は、この正規表現が機能する例です。そのまま「ああ。
// 「ああ、それはどうしようもない」と猫は言いました。「ここではみんな怒っています。 私が怒ってんだ。あなたは怒っている。
rc = Pat Match( txt, Pat Repeat( (Pat Regex( "[\w]+('[\w]+)?" ) >> word +
Expr( word = Uppercase( word ); aa[word]++; ""; )) |
(Pat Regex( "[^\w]+" )), 1, 9999999, GREEDY ));
キー = aa << getkeys; N アイテム ( キー );
vals = aa << getvalues; N アイテム ( vals );
dt = New Table( "無題",
New Column( "単語", 文字, Set Values( キー ) ),
New Column( "count", Numeric, "Continuous", Format( "Best", 12 ), Set Values( vals ) )
);
dt2 = dt << sort( by( カウント ), order( 降順 ) );
Close( dt, nosave );
dt = dt2;
New Window( "単語", Border Box( Left( 10 ), Right( 10 ), top( 10 ), bottom( 10 ), v = V List Box() ) );
h = H リストボックス(); v << 追加 ( h );
行 = 12; //検査による
While( dt:count[行] > 8,
x = Text Box( dt:単語[行] || " " );
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 は文字列全体を処理します。繰り返し内で、2 つの正規表現は処理単語と単語間の処理を交互に行います。最初の正規表現では、expr を使用して、一致した各単語に対して何らかの JSL を実行します。expr が最後に行うことは、現在の位置で常に一致する空の文字列に評価されることです。この PatMatch は、単語を連想配列にカウントすることを含め、約 2 秒で約 150K 文字を処理します。
キーと値のペアからデータ テーブルが作成され、並べ替えられた後、一連の水平リスト ボックスを含む垂直リスト ボックスを含むウィンドウが作成されます。水平方向のリスト ボックスには、左から右に単語が表示されます。各単語を追加した後、wait(0) によりウィンドウが更新され、水平テキスト ボックスの幅が正しくなります (そして、それを確認できます)。ボックスが 700 ピクセルを超えたら、新しい行を開始します。
行 12 から始めて、THE AND TO A OF IT SHE SAID YOU IN I をスキップします。並べ替えられたカウントが 8 インスタンスを下回ったら停止します。ログ変換を使用します。 Alice には 386 のインスタンスがあります。
Xan が指摘しているように、接尾辞、接頭辞、または同義語だけが異なる単語には問題があります。おそらく他の問題もあるでしょう。
スルー・ザ・ルッキング・グラスにジャバウォックが登場。Slithy Toves はここにいません。
更新: おそらく毎回リンクからテキストを取得するべきではありません。loadtextfile をコンピュータ上の何らかのファイルにポイントします。 http://www.gutenberg.org/
Re: グラフビルダーのワードクラウド?こんにちはピーター、私はワードクラウド全般のファンではありません。 おそらく、それらの多くが、類義語やストップ ワードに注意を払わず、ランダムな単語の位置で不十分に行われているためです。 ただし、単語の長さなどの無関係な詳細が単語の注目度に影響を与える方法など、固有の欠点がいくつかあります。
私が見た中で最高のものは、NYタイムズが見ているものです就任演説、意味のある配置と強調表示があります。
Re: グラフビルダーのワードクラウド?その提案をしてくれたスタンに感謝します。私はツリーマップが好きですが、単語、特に長い単語を表示するにはワードクラウドの方が適しています。
Re: グラフビルダーのワードクラウド?
ピーターさん、こんにちは。
テキスト ファイル内の単語をカウントしてツリー マップを作成する JSL を次に示します。
正確には単語の雲ではありませんが、あなたが望む方向にあなたを始めることができます.
一番、
スタン
ログのクリア() ;
NamesDefaultToHere ( 1 ) ;
// テキストファイルのプロンプト
Getfile =ファイルを選択() ;
// 文字列を変数に格納
文章=テキストファイルを読み込む( Getfile ) ;
//空白やその他の区切り文字を削除してソートされた順序で単語のリストを作成します
ワードリスト=リストの並べ替え(言葉(文章、 ",./\;!?'()\!" " ))) ;
// リスト内のアイテムを数える
nwds = Nアイテム(ワードリスト) ;
// 2 つのリストを作成します。 1 つは削除用、もう 1 つは挿入用
削除リスト= {} ;
キープリスト= {} ;
// 一般的な単語を削除します。つまり; 3文字以内のもの
為に(私= 1 、私<= Nアイテム(ワードリスト) 、私++、
ワードレングス=長さ(ワードリスト[私] ) ;
もしも(ワードレングス<= 3 、
に挿入(削除リスト、ワードリスト[私] 、 1 ) 、
に挿入(キープリスト、ワードリスト[私] )
)
) ;
// データテーブルを作成
dt =新しいテーブル( 「ワードクラウドデータ表」 、
新しい列( 「言葉」 、キャラクター、設定値(キープリスト))) 、
) ;
集計する(
コントロールパネルを表示( 0 ) 、
グループ化列の欠落を含める( 1 ) 、
グループ化列の数による並べ替え( 1 ) 、
テーブルを追加(行テーブル(列のグループ化( :言葉) ) )
) <<データ テーブルにする;
// すべての単語のツリー マップを作成します
グラフビルダー(
コントロールパネルを表示( 0 ) 、
変数(バツ( :言葉) ) 、
要素(ツリーマップ(バツ、要約統計( "和" ) ) ) 、
) ;