web-dev-qa-db-ja.com

WordleのようなWordクラウドを実装するアルゴリズム

状況

私の質問

  • Wordleの機能を実行するアルゴリズムはありますか?
  • いいえの場合、同様の種類の出力を生成する代替手段は何ですか?

私が尋ねる理由

  • ちょっと興味があるんだけど
  • 学びたい
196
namenlos

私はWordleの作成者です。 Wordleの実際の動作は次のとおりです。

単語を数え、退屈な単語を捨て、数で降順に並べ替えます。いくつかのNに対して上位Nワードを保持します。各ワードに、そのカウントに比例したフォントサイズを割り当てます。 Java2D APIを使用して、WordごとにJava2Dシェイプを生成します。

各単語は、「垂直方向の中央のランダムなx位置」など、どこかにあることを「望みます」。頻度の降順で、Wordごとにこれを行います:

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

それでおしまい。 hardの部分は、交差テストを効率的に行うためのものです。そのために、ラストヒットキャッシング、階層境界ボックス、およびクアッドツリー空間インデックス(すべてそのうちのいくつかは勤勉なグーグルでさらに学ぶことができます)。

編集:Reto Aebersoldが指摘したように、この同じ領域をカバーする本の章が自由に利用できるようになりました: Beautiful Visualization、Chapter 3:Wordle

460

Jonathan Feinbergがpythonを使用してタグクラウドを作成するアルゴリズムを実装しました。 wordle.netの美しい雲からはほど遠いですが、どうすればそれができるのかがわかります。

プロジェクトを見つけることができます こちら

32
Reto Aebersold

これは、Da3を使用するJason Daviesの非常に素晴らしいjavascriptの1つです。 Webフォントを使用することもできます。

デモ: http://www.jasondavies.com/wordcloud/

Github: https://github.com/jasondavies/d3-cloud

31
johnpolacek

ジョナサンがここで提案するアルゴリズムを使用するSilverlightコンポーネントを作成しました。ソースコードとサンプルプロジェクトはすべて私のブログで入手できます。

http://whydoidoit.com

Color Word cloud

マイクラウドでは、さまざまな重み付けに基づいて単語の色とサイズを設定でき、(座標から)単語を選択し、選択した単語を強調表示できます。ソースは、あなたが適切だと思うように使用するものです。

Example Word Cloud

31
Mike Talbot

WordCram 、Wordクラウドを作成するための処理ライブラリに取り組んでいます。 Wordleの影響はかなり大きく、上記と同じPDF aebyによって通知されます。衝突検出を処理し、単語のレイアウト、色付け、回転などの方法に集中できます。

14
Dan Bernier

http://code.google.com/apis/visualization/documentation/gallery.html

Wordクラウドの視覚化をご覧ください。 wordle.netほど派手ではありませんが、サイトに簡単に追加できます。

10
Wavel

私は、テキスト内の関連性など、他のデータに関連する文字列の色、初期位置、サイズを割り当てることができるワードルのような視覚化を探していました-何も見つかりませんでしたが、ここで見つけた情報のおかげで(特にジョナサンの説明とaebyのリンク)、ついに ' Cloudio 'を実装することができました。これは比較的単語に近い(少なくとも私はそう思います...)、探していた機能を提供します。

SWTとJFaceで実装されており、コンテンツとラベルプロバイダーを設定してクラウドのレイアウトを変更し、他のEclipseプラグインまたはRCPに追加できるように、JFaceのMVCモデルに統合しようとしました。アプリ。また、文字列の初期位置の計算方法を変更して、クラスターの視覚化などに使用するのが難しくないようにすることもできます。それはまだ不十分に文書化されており、いくつかの方法で制限されています(そして最初のアップロードを数時間前に行ったので、まだ少しバグがあるかもしれません)が、興味があるなら、ここにリンクがあります:

また、簡単な印象が必要な場合に作成されたいくつかのクラウドへのリンクは次のとおりです。 https://github.com/sschwieb/Cloudio/wiki/Example-Clouds

乾杯、ステファン

8
sschwieb

ここに、クラウドのようなWordleの実装を示します。同じスパイラルアルゴリズムとQuadTreeデータ構造を使用します。

http://sourcecodecloud.codeplex.com

または

http://www.codeproject.com/Articles/224231/Word-Cloud-Tag-Cloud-Generator-Control-for-NET-Win

8

ここにタグクラウドジェネレーターがあり、これを呼び出しますDisorganizer:)

ソース TagCloudService および レイザーマークアップコントロール および テスト目的のWinForm 少しのラッパーでブログ、プロファイルなどに配置できます。それ。 C#4.0およびSystem.Drawing名前空間を頻繁に使用します。

他のクラウドジェネレーターでは、タグをクリックしてナビゲートしたり、ホバーアニメーションを作成してクリック可能であることを示すことができないため、作成しました。私はHTMLでホバーアニメーションを表示する必要があるため(これは、オーバーレイされた、絶対位置の<a>タグで行います)、角度のあるWordディスプレイは開発していません。

警告:上記のリンクは数か月後に無効になる可能性があります。周辺のプロジェクトから別のプロジェクトにゆっくりと解放する予定です。

実際のデモを見ることができます このサンプルブログの投稿で ですが、不完全で、サイトが不完全です。誰かが貢献したいなら私に連絡してください、私はそれをできるだけ早く分離することに取りかかります。

4
Zasz

Lion and Lambは、聖書の選ばれた本から最も頻繁に使用される単語を使用してWordクラウドを作成するオープンソースのiOSアプリです。

Jonathan Feinbergが説明したアルゴリズムに基づいています。ヒットテストではクワッドツリーを使用しますが、境界ボックスはグリフの境界矩形に基づいています。グリフを多数の小さな境界四角形に分割して、グリフの境界ボックス内でWordを配置できるようにします。

GitHub: https://github.com/PetahChristian/LionAndLamb

A Word cloud of the Bible book of Revelation

4
user4151918

ここに、さらに別のend-to-endwordleの実装Python 3Jonathan Feinbergによる初期のアウトライン(QuadTrees、スパイラルなど)にほぼ基づいています。

このコード(コメント付き、詳細なReadMeファイル付き)は、この Githubリポジトリ で無料で入手できます。これは、コードで作成されたサンプルワードです。

Macbeth

1
Hayk