環境
- 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です。あなたもそれでウェブフォントを使うことができます。
デモ:http : //www.jasondavies.com/wordcloud/
Github:https : //github.com/jasondavies/d3-cloud
Jonathan Feinbergが説明したアルゴリズムを実装して、Pythonを使用してタグクラウドを作成しました。それはwordle.netの美しい雲から遠く離れていますが、それがどのようにそれができるのかをあなたに与えます。
あなたはプロジェクトを見つけることができます ここで。
Jonathanがここで提案するアルゴリズムを使用するSilverlightコンポーネントを作成しました。ソースコードとサンプルプロジェクトはすべて私のブログで入手できます。
私のクラウドでは、さまざまな重みに基づいて単語の色とサイズを設定でき、単語の選択(座標からの)と選択した単語の強調表示をサポートしています。ソースは、必要に応じて使用できます。
単語の雲を作成するための処理ライブラリであるWordCramに取り組んでいます。これはWordleの影響をかなり受けており、上記にリンクされている同じPDF aebyによって通知されます。それはあなたのために衝突検出を処理し、あなたがあなたがあなたの言葉をどのようにレイアウトしたり、色付けしたり、回転させたりしたいかに焦点を合わせることができます。
http://code.google.com/apis/visualization/documentation/gallery.html
単語の雲の視覚化をチェックしてください。wordle.netほど豪華ではありませんが、サイトに簡単に追加できます。
テキスト内の関連性など、他のデータに関連する文字列の色、初期位置、サイズを割り当てることができる単語のような視覚化を探していました-何も見つかりませんでしたが、ここで見つけた情報のおかげで(特にジョナサンの説明とaebyのリンク)、私はようやく実装できました ' Cloudio比較的近くなり(少なくともそう思うと思います)、私が探していた機能を提供する 'をました。
これはSWTとJFaceで実装されており、コンテンツプロバイダーとラベルプロバイダーを設定してクラウドのレイアウトを変更し、他のEclipseプラグインまたはRCPに追加できるように、JFaceのMVCモデルに統合しようとしましたアプリ。文字列の初期位置の計算方法を変更して、クラスターの視覚化などに使用することも難しくありません。それはまだ十分に文書化されておらず、いくつかの点で制限されています(そして、私は数時間前に最初のアップロードを行ったので、それでも少しバグがあるかもしれません)。
そして、簡単な印象が欲しい場合のために、ここにいくつかの作成された雲へのリンクがあります: https //github.com/sschwieb/Cloudio/wiki/Example-Clouds
乾杯、ステファン
クラウドのようなWordleの実装をご覧ください。同じスパイラルアルゴリズムとQuadTreeデータ構造を使用します。
http://sourcecodecloud.codeplex.com
または
http://www.codeproject.com/Articles/224231/Word-Cloud-Tag-Cloud-Generator-Control-for-NET-Win
Lion and Lambは、聖書の選ばれた本から最も頻繁に使用される単語を使用して単語の雲を作成するオープンソースのiOSアプリです。
これは、Jonathan Feinbergによって記述されたアルゴリズムに基づいています。ヒットテストは四分木を利用しますが、境界ボックスはグリフの境界矩形に基づいています。グリフを多くの小さな境界の四角形に分割して、グリフの境界ボックス内に単語を配置できるようにします。
ここにDisorganizerと呼ぶTag Cloudジェネレータがあります:)
テスト目的で 、TagCloudService とかみそりのマークアップコントロール、WinFormをソース して、ブログやプロファイルなどに配置し、小さなラッパーでます。C#4.0とSystem.Drawing名前空間を多用しています。
他のクラウドジェネレーターでは、タグをクリックしてナビゲートしたり、ホバーアニメーションを作成したりして、クリック可能であることを示すことができないため、それを作成しました。ホバーアニメーションをHTMLで表示する必要があるため(オーバーレイと絶対配置でこれを行っています)<a>
タグを使用します)、垂直または水平の単語表示を開発していません。
警告:上記のリンクは数か月で無効になる可能性があります。周辺のプロジェクトから別のプロジェクトにゆっくりと切り離す予定です。
このサンプルブログ投稿で動作するデモを見ることができますが、それは不完全であり、不完全なサイトです。誰かが貢献したいなら私に連絡してください、私はそれをできるだけ早く分離していきます。
これは、Python 3でのwordleのエンドツーエンド実装のもう1つです。、主にJonathan Feinbergによる初期のアウトライン(QuadTrees、spiralsなど)に基づいた、。
コード(コメント付き、詳細なReadMeファイル付き)は、このGithubリポジトリで無料で入手できます。これは、コードで作成されたサンプルワードです。
Tim Dreamによって作成された非常に素晴らしい小さなJavaScriptライブラリがあります。
https://github.com/timdream/wordcloud2.js/blob/gh-pages/API.md
キャンバス上、または結果を変更するための多くのオプションを備えたHTMLタグを使用して、ワードクラウドを作成できます。それはwordleの出力に本当に近いです。