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

クラウドタイトル= "不思議の国のアリス" ;
// すべてのテキストを 1 つの変数に入れます
TXT =テキストファイルをロードする( 「c:\temp\alice.txt」 ) ;
ああ= [ => 0 ] ; // デフォルト値がゼロの連想配列
// 単語を数えます。 JMPには単語のリストを返すwords()関数がありますが、そうではありません。
// 単語内のアポストロフィと単語の端にあるアポストロフィを区別できます。
// 'we're は、この正規表現が回避できる例です。「ああ。
// 「ああ、それは仕方ないね」と猫は言いました。「ここではみんな怒っています。 私が怒ってんだ。あなたは怒っています。
ラジコン=パットマッチ(
TXT 、
パットリピート(
(パット・正規表現( 「[\w]+('[\w]+)?」 ) >>言葉+エクスプレッション(
言葉=大文字(言葉) ;
ああ[言葉] ++;
「」 ;
)) | (パット・正規表現( 「[^\w]+」 )) 、
1 、
9999999 、
よく深い
)
) ;
キー=ああ<<キーを取得する;
//show(N Items( key ));
ヴァルス=ああ<<値を取得する;
//show(N Items( vals ));
dt =新しいテーブル( 「」 、
新しい列( "言葉" 、キャラクター、設定値(キー) ) 、
新しい列( "カウント" 、数値、 「連続」 、フォーマット( "一番" 、 12 ) 、設定値(ヴァルス) ) 、
見えない
) ;
dt <<選別(に(カウント) 、注文(降順) 、テーブルを置き換える) ;
// 無視する単語
ストップワード= { 「ザ」 、 "だった" 、 "いいえ" 、 "と" 、 "の上" 、 「あ」 、 "と" 、 "から" 、 "これ" 、 "の" 、 "そうだった" 、 "ために" 、 "に" 、
「あん」 、 "に" 、 "それ" 、 "また" 、 "として" 、 "もっていた" 、 「0」 、 「1」 、 「2」 、 「3」 、 「4」 、 「5」 、 「6」 、 "7" 、 「8」 、 「9」 、 "で" 、 "なれ" 、 "の" 、
"した" 、 "それか" 、 "いいえ" 、 "また" 、 "は" 、 "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」 、 "どこ" 、
「いえ」 、 「B」 、 「C」 、 「D」 、 「え」 、 「ふ」 、 「ぐ」 、 「は」 、 "私" 、 「じ」 、 「き」 、 「L」 、 「ま」 、 「ん」 、 「お」 、 「ぷ」 、 「Q」 、 「R」 、
「す」 、 「て」 、 「う」 、 「V」 、 「わ」 、 "バツ" 、 「よ」 、 「Z」 、 "もつ" 、 "好き" 、 「で」 、 "そこには" 、 "全て" 、 「わかった」 、
"WHO" 、 "後" 、 "どれでも" 、 "だいたい" 、 "会社" 、 "次" 、 "彼ら" 、 "もしも" 、 "これらは" 、 "それから" 、 "しかし" 、 "私の" } ;
del_rows = dt <<行を取得します。 (含まれています(ストップワード、 :言葉) ) ;
dt <<行を削除する( del_rows ) ;
新しい窓( 「テキストワードクラウド」 、
アウトラインボックス(クラウドタイトル、
ボーダーボックス(左( 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 ] ;
ncolors =狭い(カラーリスト) ;
行= 1 ;
k = 1 ;
番号=狭い( dt ) ;
min_words = 8 ;
サイズ乗数= 1 ;
もしも(番号< 100 、
min_words = 2 ;
サイズ乗数= 2 ;
) ;
その間( dt :カウント[行] > min_words 、
バツ=テキストボックス( dt :言葉[行] || 「」 ) ;
バツ<<フォントサイズの設定(サイズ乗数*ログ( dt :カウント[行] ) * 4 ) ;
バツ<<フォントの色(カラーリスト[ k ]) ;
k ++;
もしも( k > ncolors 、
k = 1 ;
) ;
h <<追加する(バツ) ;
もしも( h <<幅を取得> 700 、
h = H リストボックス() ;
v <<追加する( h ) ;
) ;
行++;
待って( 0 ) ;
) ;
待って( 0 ) ;
近い( dt 、保存しない) ;
Re: グラフビルダーのワードクラウド?Craig さん、ありがとう。とてもクールな解決策です。
Re: グラフビルダーのワードクラウド?NY Times の外観は、実装が簡単なので優れています。

ここにJSLがあります
/* 以下のloadtextfileは、次の場所からファイルをフェッチします。 http://www.gutenberg.org/それは言う...
プロジェクト・グーテンベルクの不思議の国のアリス、ルイス・キャロル著
この電子ブックは、誰でもどこでも無料で使用できます。
ほとんど制限がありません。コピーしたり、譲渡したり、
含まれているプロジェクト グーテンベルク ライセンスの条件に基づいて再利用します。
この電子書籍またはオンラインでwww.gutenberg.org
タイトル: 不思議の国のアリス
著者: ルイス・キャロル
投稿日: 2008 年 6 月 25 日 [EBook #11]
発売日:1994年3月
[最終更新日: 2011 年 12 月 20 日]
言語: 英語
*/
txt = テキスト ファイルの読み込み( "c:\path\Alice.txt " ); 長さ( txt );
aa = [=> 0]; // デフォルト値がゼロの連想配列
// 単語を数えます。JMPには単語のリストを返すwords()関数がありますが、そうではありません。
// 単語内のアポストロフィと単語の端にあるアポストロフィを区別できます。
// 'we're は、この正規表現が回避できる例です。「ああ。
// 「ああ、それは仕方ないね」と猫は言いました。「ここではみんな怒っています。 私が怒ってんだ。あなたは怒っています。
rc = Pat Match( txt, Pat Reply( (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 = 新しいテーブル( "無題",
新しい列( "単語"、文字、値の設定( キー ) )、
新しい列( "count"、数値、"Continuous"、フォーマット( "Best"、12 )、値の設定( vals ) )
);
dt2 = dt <
Close( dt, nosave );
dt = dt2;
New Window( "words", Border Box( Left( 10 ), Right( 10 ), top( 10 ),bottom( 10 ), v = V List Box() ) );
h = H リスト ボックス(); v << append( h );
行 = 12; // 検査による
While( dt:count[行] > 8,
x = テキスト ボックス( dt:word[行] || " " );
x << setfontsize( Log( dt:count[row] ) * 4 );
h << append( x );
If( h << getwidth > 700, h = H List Box(); v << append( h ); );
行++;
待機( 0 );
);
PatMatch ステートメントは、いくつかの正規表現を使用してテキスト内の単語を識別し、大文字にして、連想配列のキーとして使用します。連想配列要素がまだ存在しない場合 (=>0 を参照) はデフォルトで 0 になるため、単語の最初のインスタンスには特別な努力は必要ありません。PatMatch 内の PatRepeat は文字列全体を処理します。リピート内では、2 つの正規表現が単語と単語間の要素を交互に処理します。最初の正規表現内では、一致した各単語に対して JSL を実行するために expr が使用されます。expr が最後に実行するのは、常に現在の位置で一致する空の文字列として評価されることです。この PatMatch は、連想配列への単語のカウントを含め、約 150,000 文字を約 2 秒で処理します。
データ テーブルはキーと値のペアから構築され、並べ替えられます。その後、多数の水平リスト ボックスを含む垂直リスト ボックスを含むウィンドウが作成されます。水平のリスト ボックスには、左から右に単語が入力されます。各単語を追加した後、wait(0) によってウィンドウが更新されるため、水平テキスト ボックスの幅が正しくなります (そして、それを確認できるようになります)。ボックスが 700 ピクセルを超えた場合は、新しい行を開始します。
行 12 から開始して、I の「彼女が言った内容」と「その内容」をスキップします。ソートされたカウントが 8 インスタンスを下回ったときに停止します。ログ変換を使用します。アリスには 386 個のインスタンスがあります。
Xan 氏が指摘しているように、接尾辞、接頭辞、または同義語が異なるだけの単語には問題があります。おそらく他の問題もあるでしょう。
ジャバウォッキーは『スルー・ザ・ルッキング・グラス』に登場します。スリシー・トーブスはここにはいません。
更新: おそらく、毎回リンクからテキストを取得するべきではありません。loadtextfile がコンピュータ上のファイル (おそらく次の場所からダウンロードされたもの) を指すようにします。 http://www.gutenberg.org/
Re: グラフビルダーのワードクラウド?こんにちは、ピーター、私はワードクラウド全般のファンではありません。 おそらくそれは、その多くが同義語やストップワードに注意を払っておらず、単語の位置がランダムであり、不十分に行われているためです。 ただし、単語の長さなどの無関係な詳細が単語のプロミネンスに影響を与えるなど、固有の欠点がいくつかあります。
私が見た中で最高のものは、NYタイムズの記事です就任演説、意味のある配置と強調表示が行われます。
Re: グラフビルダーのワードクラウド?スタンさん、その提案をありがとう。私はツリーマップが好きですが、単語、特に長い単語を表示するにはワードクラウドの方が適しています。
Re: グラフビルダーのワードクラウド?
こんにちは、ピーターさん
以下は、テキスト ファイル内の単語をカウントし、ツリー マップを作成するための JSL です。
正確にはワードクラウドではありませんが、希望する方向へのスタートに役立ちます。
一番、
スタン
ログをクリアする() ;
名前デフォルトここへ( 1 ) ;
// テキストファイルの入力を求めるプロンプト
ファイルの取得=ファイルの選択() ;
// 文字列を変数に格納
文章=テキストファイルの読み込み(ファイルの取得) ;
//空白やその他の区切り文字を削除して、ソートされた順序で単語のリストを作成します
単語リスト=リストのソート(言葉(文章、 「、。/\;!?'()\!」 」 )) ;
// リスト内の項目を数える
NWDS = N 個のアイテム(単語リスト) ;
// 2 つのリストを作成します。 1 つは削除用、もう 1 つは挿入用
削除リスト= {} ;
キープリスト= {} ;
// 一般的な単語を削除します。つまり; 3文字以内のもの
ために(私= 1 、私<= N 個のアイテム(単語リスト) 、私++、
ワード長=長さ(単語リスト[私] ) ;
もしも(ワード長<= 3 、
に挿入(削除リスト、単語リスト[私] 、 1 ) 、
に挿入(キープリスト、単語リスト[私] )
)
) ;
// データテーブルを作成する
dt =新しいテーブル( 「ワードクラウドデータテーブル」 、
新しい列( 「言葉」 、キャラクター、設定値(キープリスト)) 、
) ;
表にする(
コントロールパネルを表示( 0 ) 、
グループ化列に欠落しているものを含める( 1 ) 、
グループ化列の数による順序付け( 1 ) 、
テーブルの追加(行テーブル(列のグループ化( :言葉) ) )
) <<データテーブルにする;
// すべての単語のツリー マップを作成します
グラフビルダー(
コントロールパネルを表示( 0 ) 、
変数(バツ( :言葉) ) 、
要素(ツリーマップ(バツ、要約統計量( "和" ) ) ) 、
) ;