環境
- Wordle を見てみましょう: http://www.wordle.net/
- 私が見た他のどのワード クラウド ジェネレーターよりも見栄えが良い
- 注: ソースは利用できません - FAQ を読んでください: http://www.wordle.net/faq#code
私の質問
- Wordle が行うことを行う利用可能なアルゴリズムはありますか?
- いいえの場合、同様の種類の出力を生成する代替手段は何ですか?
私が尋ねる理由
- ちょっと興味があるんだけど
- 学びたい
私はWordleの作成者です。Wordleが実際にどのように機能するかを次に示します。
単語を数え、退屈な単語を捨て、数で降順に並べ替えます。上位N個の単語をいくつかのNに保持します。各単語に、その数に比例したフォントサイズを割り当てます。Java2D APIを使用して、単語ごとにJava2Dシェイプを生成します。
各単語は、「垂直方向の中央のランダムなx位置」など、どこかにあることを望んでいます。頻度の降順で、単語ごとにこれを行います。
place the word where it wants to be
while it intersects any of the previously placed words
move it one step along an ever-increasing spiral
それでおしまい。難しいのは、交差テストを効率的に行うことです。このために、ラストヒットキャッシング、階層型バウンディングボックス、およびクアッドツリー空間インデックス(これらはすべて、熱心なグーグルで詳しく知ることができます)を使用します。
編集:Reto Aebersoldが指摘したように、この同じ領域をカバーする本の章が無料で利用できるようになりました:美しい視覚化、第3章:Wordle
これは、d3 を使用する Jason Davies の本当に素晴らしい JavaScript です。Web フォントを使用することもできます。
Jonathan Feinbergが説明したように、Pythonを使用してタグクラウドを作成するアルゴリズムを実装しました。それはwordle.netの美しい雲から遠く離れていますが、それがどのように行われるかについての考えをあなたに与えます。
ここでプロジェクトを見つけることができます。
Jonathan がここで提案するアルゴリズムを使用する Silverlight コンポーネントを作成しました。ソース コードとサンプル プロジェクトはすべて、私のブログで入手できます。
My cloud では、さまざまな重み付けに基づいて単語の色とサイズを変更でき、(座標からの) 単語の選択と選択した単語の強調表示をサポートしています。ソースは、あなたが適切と思うように使用するあなたのものです。
ワード クラウドを作成するための処理ライブラリであるWordCramに取り組んでいます。これは Wordle の影響をかなり強く受けており、上記にリンクされている同じ PDF aeby から情報を得ています。衝突検出を処理し、単語のレイアウト、色、回転などに集中できます。
http://code.google.com/apis/visualization/documentation/gallery.html
ワード クラウドのビジュアライゼーションをご覧ください。wordle.net ほど派手ではありませんが、サイトに簡単に追加できます。
ここでは、クラウドのような Wordle の実装を参照してください。同じスパイラル アルゴリズムと QuadTree データ構造を使用します。
http://sourcecodecloud.codeplex.com
また
http://www.codeproject.com/Articles/224231/Word-Cloud-Tag-Cloud-Generator-Control-for-NET-Win
テキスト内の関連性など、他のデータに関連する文字列の色、初期位置、サイズを割り当てることができる単語のような視覚化を探していました-何も見つかりませんでしたが、ここで見つけた情報のおかげで(特にジョナサンの説明と aeby のリンク)、ようやく ' Cloudio ' を実装できました。これは比較的 wordle に近く (少なくとも私はそう思います...)、探していた機能を提供します。
これは SWT と JFace で実装されており、JFace の MVC モデルに統合しようとしました。これにより、コンテンツ プロバイダーとラベル プロバイダーを設定してクラウドのレイアウトを変更し、それを他の Eclipse プラグインまたは RCP に追加できます。アプリ。文字列の初期位置の計算方法を変更することもできます。これにより、クラスターの視覚化などに使用することが難しくありません。まだ文書化が不十分で、いくつかの点で制限されています (そして、数時間前に最初のアップロードを行ったので、まだ少しバグがあるかもしれません) が、興味がある場合は、次のリンクを参照してください。
また、簡単な印象が必要な場合に備えて、作成されたクラウドへのリンクを次に示します: https://github.com/sschwieb/Cloudio/wiki/Example-Clouds
乾杯、ステファン
Lion and Lamb は、選択した聖書の本から最も頻繁に使用される単語を使用してワード クラウドを作成する、オープンソースの iOS アプリです。
これは、Jonathan Feinberg によって記述されたアルゴリズムに基づいています。ヒット テストではクアッド ツリーが使用されますが、境界ボックスはグリフの境界四角形に基づいています。グリフを多くの小さな境界四角形に分割して、グリフの境界ボックス内に単語を配置できるようにしたいと考えています。
ここにタグ クラウド ジェネレーターがあり、Disorganizerと呼んでいます:)
TagCloudService とrazor マークアップ コントロール とWinForm をソースとして 、ブログやプロファイルなどに配置できるテスト目的で、小さなラッパーを使用します。C# 4.0 と System.Drawing 名前空間を多用します。
私が作成したのは、他のクラウド ジェネレーターでは、タグをクリックして移動したり、ホバー アニメーションを作成したりして、クリック可能であることを示すことができないためです。HTML でホバー アニメーションを表示する必要があるため (これは、オーバーレイ編集された絶対配置<a>
タグを使用して行っています)、任意の角度の単語表示を開発していません。垂直または水平のいずれかです。
警告 : 上記のリンクは数か月で無効になる可能性があります。周囲のプロジェクトからゆっくりと切り離して別のプロジェクトにする予定です。
このサンプル ブログ投稿で動作するデモを見ることができますが、これは不完全であり、不完全なサイトにあります。誰かが貢献したい場合は私に連絡してください。