Wordleのような単語の雲を実装するアルゴリズム


201

環境

私の質問

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

なぜ私が求めているのか

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

1
ここでの画像処理に基づく別の実装があります。それほど高速ではありませんが、非常に柔軟で実験に適しています。(Mathematicaには完全な実装があります。)
Szabolcs

2
私は自分の(かなり単純な)アルゴリズムを思いついて、それについてブログに書きました。Pythonで記述されており、簡単にカスタマイズできます。私はそれを半分ほど効率的にしようとしました。!ここに画像の説明を入力してください
Andreas Mueller

4
私はあなたがこの質問をした方法が本当に好きでした!+1
kolistivra 2013年

回答:


472

私は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


22
「勤勉グーグル」。いいね:)
zengr

6
詳細はこちら:static.mrfeinberg.com/bv_ch03.pdf-Jonathanに感謝します。
Reto Aebersold、2011年

情報をありがとうJonathan-私は、このような素晴らしい視覚化を作成できる、本当にシンプルなアルゴリズムに魅了されています。
John Patrick

「どこかになりたい」という部分にはまだ少し戸惑っています。単語の最初の位置は本当にランダムですか?
adib

30
SOの美しさ。質問している仕事をしている人は、実際にあなたの質問に答えるかもしれません!
Arnab Datta 2012

33

これは、d3を使用するJason Daviesによる本当にすばらしいJavaScriptです。あなたもそれでウェブフォントを使うことができます。

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

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


src = "。js"ファイルをコピーして、再構築してそのままビルドするか、そのまま使用するのは非常に簡単です。共有していただきありがとうございます。
マイケルd

カラーパレットをより美的なものに変更する方法はありますか?colourlovers.com/api/palettes/randomからのcolourlovers.com/api/palettes/topへのJSON呼び出しからjsファイルを変更しようとしましたが、colourloversのAPIが推奨しますが、パレットは同じままでした。
マイケルd

以下は、デモに基づいたレスポンシブな作業例ですが、単語と色を完全に制御できます。カスタムカラーパレットの場合は、代わりにコメントコードを使用してください。jsbin.com/kiwojayoye/1/edit?html,js,output
Martin Braun

33

Jonathan Feinbergが説明したアルゴリズムを実装して、Pythonを使用してタグクラウドを作成しました。それはwordle.netの美しい雲から遠く離れていますが、それがどのようにそれができるのかをあなたに与えます。

あなたはプロジェクトを見つけることができます ここで


共有してくれてありがとう!私は間違いなくあなたの実装を調べます。
namenlos

これは素晴らしいです。ありがとう!
tokudu 2011年

リンク(labs.atizo.com)が再び壊れます。比較を確認できるように、サンプル画像を1つか2つ投稿する必要があります。
smci 2013年

@RetoAebersoldとにかくこのコードをフラスコまたはdjangoフレームワークと統合する方法はありますか?
Mitul Shah

30

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

http://whydoidoit.com

色の単語の雲

私のクラウドでは、さまざまな重みに基づいて単語の色とサイズを設定でき、単語の選択(座標からの)と選択した単語の強調表示をサポートしています。ソースは、必要に応じて使用できます。

単語雲の例


2
あなたのブログは空のようです。リンクが切れましたか?
またはMapper


14

単語の雲を作成するための処理ライブラリであるWordCramに取り組んでいます。これはWordleの影響をかなり受けており、上記にリンクされている同じPDF aebyによって通知されます。それはあなたのために衝突検出を処理し、あなたがあなたがあなたの言葉をどのようにレイアウトしたり、色付けしたり、回転させたりしたいかに焦点を合わせることができます。


サービスはAPIを提供していますか?
バート

WordCramにはAPIがありません。ライブラリではなく、サービスです。
Dan Bernier、2014


8

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

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

そして、簡単な印象が欲しい場合のために、ここにいくつかの作成された雲へのリンクがあります: https //github.com/sschwieb/Cloudio/wiki/Example-Clouds

乾杯、ステファン


8

クラウドのようなWordleの実装をご覧ください。同じスパイラルアルゴリズムとQuadTreeデータ構造を使用します。

http://sourcecodecloud.codeplex.com

または

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


sourcecodecloudはダウンロードできません。また、2番目のリンクも機能していません
Sagar Nikam '15

最初のリンクのソースコード/ダウンロードを確認しました。出来た。2番目のリンクが移動されました。修正されました。
George Mamaladze 2013年

4

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

これは、Jonathan Feinbergによって記述されたアルゴリズムに基づいています。ヒットテストは四分木を利用しますが、境界ボックスはグリフの境界矩形に基づいています。グリフを多くの小さな境界の四角形に分割して、グリフの境界ボックス内に単語を配置できるようにします。

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

黙示録の聖書の単語の雲


4

ここにDisorganizerと呼ぶTag Cloudジェネレータがあります:)

テスト目的でTagCloudServiceかみそりのマークアップコントロールWinFormをソース して、ブログやプロファイルなどに配置し、小さなラッパーでます。C#4.0とSystem.Drawing名前空間を多用しています。

他のクラウドジェネレーターでは、タグをクリックしてナビゲートしたり、ホバーアニメーションを作成したりして、クリック可能であることを示すことができないため、それを作成しました。ホバーアニメーションをHTMLで表示する必要があるため(オーバーレイと絶対配置でこれを行っています)<a>タグを使用します)、垂直または水平の単語表示を開発していません。

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

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


リンクが無効になりました。私はあなたのブログのUIが好きです。
Doug S

ありがとう、ちょうどそれらを修正しました
Zasz 2013年

2

これは、Python 3でのwordleのエンドツーエンド実装のもう1つです。、主にJonathan Feinbergによる初期のアウトライン(QuadTrees、spiralsなど)に基づいた、。

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

マクベス


0

Tim Dreamによって作成された非常に素晴らしい小さなJavaScriptライブラリがあります。

https://github.com/timdream/wordcloud2.js/blob/gh-pages/API.md

キャンバス上、または結果を変更するための多くのオプションを備えたHTMLタグを使用して、ワードクラウドを作成できます。それはwordleの出力に本当に近いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.