Wordle gibi bir kelime bulutu uygulama algoritması


201

bağlam

Sorularım

  • Wordle'nın yaptığı bir algoritma var mı?
  • Hayır ise, benzer çıktılar üreten bazı alternatifler nelerdir?

Neden soruyorum

  • sadece merak
  • öğrenmek istemek

1
Burada görüntü işlemeye dayalı alternatif bir uygulama var . Çok hızlı değil, ama çok esnek ve deney için iyi. (Mathematica'da tam bir uygulama var.)
Szabolcs

2
Kendi (oldukça basit) algoritmamı buldum ve blog yazdım . Python ile yazılmış ve özelleştirilmesi kolay olmalı. Yarıya kadar verimli hale getirmeye çalıştım. ! Resim açıklamasını buraya girin
Andreas Mueller

4
Bu soruyu sorduğun şekli gerçekten beğendim! +1
kolistivra

Yanıtlar:


472

Wordle'nin yaratıcısıyım. Wordle aslında şu şekilde çalışır:

Kelimeleri sayın, sıkıcı kelimeleri atın ve azalan sayıya göre sıralayın. Bazı N için en üstteki N kelimesini saklayın. Her kelimeye sayımıyla orantılı bir yazı tipi boyutu atayın. Java2D API'sini kullanarak her sözcük için bir Java2D Şekli oluşturun.

Her kelime "dikey merkezde rastgele bir x konumunda" gibi bir yerde olmak ister. Azalan sıklık düzeninde, bunu her sözcük için yapın:

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

Bu kadar. Sert kısım kavşak-test verimli, ben son hit önbelleğe alma, hiyerarşik sınırlayıcı kutuları kullanın kendisi için yapıyor olduğunu ve bir dörtlü ağaç mekansal indeksi (şeyler bunların tümü daha googling bazı gayretli ile öğrenebilirsiniz).

Düzenleme: Reto Aebersold'un işaret ettiği gibi, artık aynı bölgeyi kapsayan ücretsiz bir kitap bölümü var: Güzel Görselleştirme, Bölüm 3: Wordle


22
"Çalışkan Google." Like it :)
zengr

6
Daha fazla bilgi için: static.mrfeinberg.com/bv_ch03.pdf - Teşekkürler Jonathan.
Reto Aebersold

Bilgi için teşekkürler Jonathan - Bunun gibi harika görselleştirmeler yaratabilecek gerçekten basit algoritmalar beni büyülüyor.
John Patrick

Ben hala "bir yerde olmak istiyor" kısmında biraz şaşkınım. Kelimelerin başlangıç ​​pozisyonları gerçekten rastgele mi?
adib

30
SO .. 'un güzelliği, çalışması hakkında soru sorduğunuz kişi aslında sorunuza cevap verebilir!
Arnab Datta

33

İşte Jason Davies'ten d3 kullanan gerçekten güzel bir javascript. Web yazı tiplerini bile kullanabilirsiniz.

Demo: http://www.jasondavies.com/wordcloud/

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


Sadece src = ". Js" dosyalarını kopyalayıp üzerine inşa etmek veya olduğu gibi kullanmak için yeniden yüklemek çok kolaydır. Paylaştığınız için teşekkürler ve harika çalışıyor!
Michael d

Renk paletini daha estetik bir şeye dönüştürmenin bir yolu var mı? Ben gelen JSON çağrısından js dosyasında değişiklik denedi: colourlovers.com/api/palettes/random için colourlovers.com/api/palettes/top COLOURlovers' API önerir olarak değil palet aynı kalmıştır.
Michael d

Demoyu temel alan ancak kelimeler ve renkler üzerinde tam kontrol sağlayan duyarlı bir çalışma örneği. Özel bir renk paleti için lütfen yorumlanan kodu kullanın. jsbin.com/kiwojayoye/1/edit?html,js,output
Martin Braun

33

Bir etiket bulutu oluşturmak için python kullanarak Jonathan Feinberg tarafından tarif edildiği gibi bir algoritma uyguladım. Wordle.net'in güzel bulutlarından çok uzak ama size nasıl yapılabileceği hakkında bir fikir veriyor.

Projeyi burada bulabilirsiniz .


Paylaşım için teşekkürler! Kesinlikle uygulamanızı inceleyeceğim.
namenlos

Bu harika. Teşekkürler!
tokudu

Bağlantı (labs.atizo.com) tekrar koptu. Karşılaştırmayı görebilmek için gerçekten bir veya iki örnek resim yayınlamalısınız.
smci

@RetoAebersold bu kodu şişeye veya django çerçevesine entegre etmek için yine de var mı?
Mitul Shah

30

Jonathan'ın önerdiği algoritmayı kullanan bir Silverlight bileşeni oluşturdum. Kaynak kod ve örnek projeler blogumda mevcuttur:

http://whydoidoit.com

Renk kelime bulutu

Bulutum, kelimeleri farklı ağırlıklara göre renklendirmenize ve boyutlandırmanıza olanak tanır ve kelime seçimini (bir koordinattan) ve seçilen kelime vurgulamayı destekler. Uygun gördüğünüz gibi kaynak sizin.

Örnek kelime bulutu


2
Blogunuz boş görünüyor. Bağlantı koptu mu?
VEYA Haritacı


14

Kelime bulutları yapmak için bir İşleme kütüphanesi olan WordCram üzerinde çalışıyorum . Wordle'den oldukça ağır bir şekilde etkilenir ve yukarıda bağlantılı olan aynı PDF tarafından bilgilendirilir. Çarpışma algılamayı sizin için yapar ve kelimelerinizin nasıl düzenlenmesini, renklendirilmesini, döndürülmesini vb.


Hizmetiniz bir API sunuyor mu?
bart

Maalesef, WordCram'ın bir API'sı yok. Bu bir kütüphane, hizmet değil.
Dan Bernier


8

Bir metin içinde alaka düzeyi gibi diğer verilerle ilgili bir String'in rengini, başlangıç ​​konumunu ve boyutunu atamaya izin verecek bir kelime benzeri görselleştirme arıyordum - hiçbir şey bulamadım, ancak burada bulduğum bilgiler sayesinde (Özellikle Jonathan'ın açıklama ve Aeby link), sonunda 'uygulamak Cloudio nispeten yakın Wordle geliyor', (en azından ben ... öyle düşünüyorum) ve teklifler aradığım sahiptir.

SWT ve JFace ile uygulanır ve JFace'in MVC modeline entegre etmeye çalıştım, böylece bir bulutun düzenini değiştirmek ve diğer Eclipse eklentilerine veya RCP'ye eklemek için içerik ve etiket sağlayıcıları ayarlayabilirsiniz. uygulamaların. Ayrıca, bir dizenin başlangıç ​​konumunun hesaplanma şeklini değiştirebilirsiniz, böylece küme görselleştirmesi veya başka bir şey için kullanılması zor değildir. Hala kötü belgelenmiş ve bazı yönlerden sınırlı (ve birkaç saat önce ilk yüklemeyi yaptım, bu yüzden yine de biraz buggy olabilir), ancak ilgileniyorsanız, link:

İşte hızlı bir izlenim edinmek istiyorsanız, oluşturulan bazı bulutların bağlantısı: https://github.com/sschwieb/Cloudio/wiki/Example-Clouds

Şerefe, Stephan


8

Burada Wordle bulut gibi uygulamamı görüyorum. Aynı spiral algoritmayı ve QuadTree veri yapısını kullanır.

http://sourcecodecloud.codeplex.com

veya

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


sourcecodecloud indirilebilir değil, ayrıca ikinci bağlantı çalışmıyor
Sagar Nikam

İlk bağlantının Kaynak Kodunu / İndirmesini doğruladım. İşe yaradı. İkinci bağlantı taşındı. Şimdi düzeltildi.
George Mamaladze

4

Lion and Lamb, İncil'in seçilmiş bir kitabındaki en sık kullanılan kelimeleri kullanarak kelime bulutları oluşturan açık kaynaklı bir iOS uygulamasıdır.

Jonathan Feinberg tarafından tarif edilen algoritmaya dayanmaktadır. İsabet testi dörtlü bir ağaç kullanır, ancak sınırlayıcı kutular glifin sınırlayıcı dikdörtgenini temel alır. Bir glifin sınırlayıcı kutusuna sözcük yerleşimini etkinleştirmek için glifi birçok küçük sınırlayıcı rekteye ayırmak istiyorum.

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

Vahiy İncil kitabın bir kelime bulutu


4

Burada Disorganizer dediğim bir Tag Cloud jeneratörüm var :)

Kaynaklar TagCloudService ve jilet biçimlendirme kontrolü ve test amaçlı bir WinForm , blogunuza, profilinize vb. C # 4.0 ve System kullanır.

Bunu oluşturdum çünkü diğer bulut jeneratörleriyle gezinmek için etiketleri tıklayamazsınız ve tıklanabilir olduklarını göstermek için fareyle üzerine gelme animasyonları oluşturamazsınız. Fareyle üzerine gelme animasyonunu HTML'de göstermek benim için gerekli olduğundan (bunu bindirmeli, kesinlikle konumlandırılmış <a>etiketlerle yapıyorum) Herhangi bir açılı kelime ekranı geliştirmedim - bunlar dikey veya yatay.

Uyarı: Yukarıdaki bağlantılar birkaç ay içinde geçersiz hale gelebilir, onu çevredeki projeden ayrı bir projeye yavaşça çözmeyi planlıyorum.

Bu örnek blog gönderisinde çalışan bir demo görebilirsiniz , ancak eksik ve eksik bir sitede. Birisi katkıda bulunmak istiyorsa benimle iletişime geçin, en kısa zamanda ayırmaya başlayacağım.


Bağlantılar geçersiz oldu. Blogunuzdaki kullanıcı arayüzünü beğendim.
Doug S

Teşekkürler, sadece düzelttik
Zasz

2

İşte Python 3'te bir başka uçtan uca wordle uygulaması büyük ölçüde Jonathan Feinberg (dörtlü ağaçlar, spiraller, vs.) tarafından ilk taslağına dayanır.

Kod (ayrıntılı ReadMe dosyasıyla yorumlanmış) bu Github deposunda serbestçe kullanılabilir ve bu kodla oluşturulan örnek bir wordle'dir.

Macbeth


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.