อัลกอริทึมในการใช้คำว่าคลาวด์เช่น Wordle


201

บริบท

  • ดูที่ Wordle: http://www.wordle.net/
  • มันดูดีกว่าเครื่องกำเนิดคลาวด์คำอื่น ๆ ที่ฉันเคยเห็น
  • หมายเหตุ: แหล่งที่มาไม่พร้อมใช้งาน - อ่านคำถามที่พบบ่อย: http://www.wordle.net/faq#code

คำถามของฉัน

  • มีอัลกอริธึมที่ทำสิ่งที่ Wordle ทำหรือไม่?
  • ถ้าไม่ใช่มีทางเลือกอะไรบ้างที่ให้ผลผลิตคล้าย ๆ กัน?

ทำไมฉันถึงถาม

  • แค่สงสัย
  • ต้องการเรียน

1
มีการดำเนินการอื่นบนพื้นฐานของการประมวลผลภาพเป็นที่นี่ ไม่เร็วมาก แต่มีความยืดหยุ่นสูงและดีสำหรับการทดลอง (มีการนำไปใช้อย่างสมบูรณ์ใน Mathematica)
Szabolcs

2
ฉันมากับตัวเองอัลกอริทึมของฉัน (สวยเรียบง่าย) และblogged เกี่ยวกับมัน มันเขียนใน Python และควรจะง่ายต่อการปรับแต่ง ฉันพยายามทำให้มันมีประสิทธิภาพครึ่งทาง ! ป้อนคำอธิบายรูปภาพที่นี่
Andreas Mueller

4
ฉันชอบวิธีที่คุณถามคำถามนี้จริงๆ! +1
kolistivra

คำตอบ:


472

ฉันเป็นผู้สร้าง Wordle นี่คือวิธีที่ Wordle ใช้งานได้จริง:

นับจำนวนคำทิ้งคำที่น่าเบื่อแล้วเรียงลำดับตามจำนวนจากมากไปน้อย รักษาคำ N อันดับสูงสุดสำหรับบางคำตอบกำหนดขนาดตัวอักษรตามสัดส่วนของแต่ละคำ สร้างรูปร่าง Java2D สำหรับแต่ละคำโดยใช้ Java2D API

แต่ละคำว่า "ต้องการ" ที่จะอยู่ที่ไหนสักแห่งเช่น "ที่สุ่มตำแหน่ง 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
"ขึงขัง Googling"
กดไลค์

6
ข้อมูลเพิ่มเติมที่นี่: static.mrfeinberg.com/bv_ch03.pdf - ขอบคุณ Jonathan
Reto Aebersold

ขอบคุณสำหรับข้อมูลที่โจนาธาน - ฉันหลงไหลด้วยอัลกอริทึมแบบเรียลไทม์ที่สามารถสร้างการแสดงผลที่ยอดเยี่ยมเช่นนี้
John Patrick

ฉันยังสับสนอยู่บ้างในส่วน "อยากจะอยู่ที่ไหนซักแห่ง" ตำแหน่งเริ่มต้นของคำสุ่มจริงๆหรือไม่?
adib

30
ความงามของ SO .. บุคคลที่คุณทำงานถามคำถามอาจตอบคำถามของคุณได้จริง
Arnab Datta

33

นี่คือจาวาสคริปต์ที่ดีมากจาก Jason Davies ที่ใช้ d3 คุณสามารถใช้ webfonts กับมันได้

การสาธิต: http://www.jasondavies.com/wordcloud/

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


ง่ายมากเพียงแค่คัดลอกไฟล์ src = ". js" แล้วอัปโหลดไฟล์ใหม่เพื่อสร้างหรือใช้ตามที่เป็นอยู่ ขอบคุณสำหรับการแบ่งปันและใช้งานได้ดี!
Michael d

มีวิธีการเปลี่ยนจานสีเป็นอะไรที่สวยงามมากขึ้น? ฉันพยายามแก้ไขไฟล์ js จากการเรียก JSON จาก: colourlovers.com/api/palettes/randomเป็นcolourlovers.com/api/palettes/topเป็น API ของ colourlovers แนะนำ แต่จานยังคงเหมือนเดิม
Michael d

นี่คือตัวอย่างการทำงานที่ตอบสนองตามตัวอย่าง แต่สามารถควบคุมคำและสีได้อย่างสมบูรณ์ สำหรับจานสีที่กำหนดเองโปรดใช้รหัสความคิดเห็นแทน jsbin.com/kiwojayoye/1/edit?html,js,output
Martin Braun

33

ฉันใช้อัลกอริทึมตามที่อธิบายโดย Jonathan Feinberg โดยใช้ python เพื่อสร้าง tag cloud มันอยู่ไกลจากกลุ่มเมฆที่สวยงามของ wordle.net แต่มันทำให้คุณมีความคิดว่ามันจะสามารถทำได้

คุณสามารถค้นหาโครงการที่นี่


ขอบคุณสำหรับการแบ่งปัน! ฉันจะตรวจสอบการใช้งานของคุณอย่างแน่นอน
namenlos

นี่มันเจ๋งมาก. ขอบคุณ!
tokudu

ลิงก์ (labs.atizo.com) เสียอีกครั้ง คุณควรโพสต์ภาพตัวอย่างหรือสองภาพเพื่อที่เราจะได้เห็นการเปรียบเทียบ
smci

@RetoAebersold มีอยู่แล้วเพื่อรวมรหัสนี้กับขวดหรือกรอบ django?
Mitul Shah

30

ฉันได้สร้างส่วนประกอบ Silverlight ที่ใช้อัลกอริทึมที่โจนาธานแนะนำที่นี่ ซอร์สโค้ดและตัวอย่างโครงการพร้อมใช้งานทั้งหมดในบล็อกของฉัน:

http://whydoidoit.com

เมฆสีคำ

คลาวด์ของฉันให้คุณใช้สีและขนาดคำตามน้ำหนักต่างกันและรองรับการเลือกคำ (จากพิกัด) และการเน้นคำที่เลือก แหล่งที่มาเป็นของคุณที่จะใช้ตามที่คุณเห็นสมควร

ตัวอย่าง Word Cloud


2
บล็อกของคุณว่างเปล่า ลิงค์เสียชีวิตหรือไม่
หรือผู้ทำแผนที่

นี่คือสแนปชอตของ archive.org, web.archive.org/web/20110820202717/http://whydoidoit.com/ … ฉันยังพบโครงการใน github github.com/whydoidoit/WordCloud
CJK

14

ฉันกำลังทำงานกับWordCramซึ่งเป็นไลบรารี่การประมวลผลเพื่อสร้างคลาวด์คำ มันได้รับอิทธิพลอย่างมากจาก Wordle และได้รับแจ้งจาก PDF เดียวกันโดยเชื่อมโยงกับข้างบน มันจัดการการตรวจจับการชนกันสำหรับคุณและช่วยให้คุณมุ่งเน้นวิธีที่คุณต้องการให้คำของคุณออกมาวางสีหมุน ฯลฯ


บริการของคุณมี API หรือไม่
บาร์ต

ขออภัย WordCram ไม่มี API มันเป็นห้องสมุดไม่ใช่บริการ
Dan Bernier


8

ฉันกำลังมองหาการสร้างภาพข้อมูลคล้าย wordle ซึ่งจะอนุญาตให้กำหนดสีตำแหน่งเริ่มต้นและขนาดของสตริงที่เกี่ยวข้องกับข้อมูลอื่น ๆ เช่นความเกี่ยวข้องภายในข้อความ - ไม่พบอะไรเลย แต่ขอบคุณข้อมูลที่ฉันพบที่นี่ (โดยเฉพาะคำอธิบายของโจนาธานและลิงค์ของ aeby) ในที่สุดฉันก็สามารถใช้ ' Cloudio ' ซึ่งใกล้เคียงกับ wordle (อย่างน้อยฉันก็คิดเช่นนั้น ... ) และนำเสนอคุณสมบัติที่ฉันกำลังมองหา

มันใช้งานได้กับ SWT และ JFace และฉันพยายามรวมเข้ากับรุ่น MVC ของ JFace ซึ่งคุณสามารถตั้งค่าผู้ให้บริการเนื้อหาและฉลากเพื่อปรับเปลี่ยนเค้าโครงของคลาวด์และเพิ่มลงใน Eclipse-plugins หรือ RCP อื่น ๆ ปพลิเคชัน นอกจากนี้คุณยังสามารถปรับเปลี่ยนวิธีการคำนวณตำแหน่งเริ่มต้นของสตริงเช่นที่ไม่ยากที่จะใช้สำหรับการสร้างภาพคลัสเตอร์หรืออื่น ๆ มันยังมีการบันทึกไม่ดีและมีข้อ จำกัด ในบางวิธี (และฉันทำการอัพโหลดครั้งแรกเมื่อไม่กี่ชั่วโมงที่ผ่านมาดังนั้นมันอาจจะยังมีข้อผิดพลาดเล็กน้อย) แต่ถ้าคุณสนใจนี่คือลิงค์:

และนี่คือลิงค์ไปยังกลุ่มเมฆที่สร้างขึ้นในกรณีที่คุณต้องการความประทับใจอย่างรวดเร็ว: 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 ไม่สามารถดาวน์โหลดได้และลิงก์ที่สองไม่ทำงาน
Sagar Nikam

ฉันตรวจสอบซอร์สโค้ด / ดาวน์โหลดของลิงค์แรก มันได้ผล ลิงก์ที่สองถูกย้าย แก้ไขแล้ว
George Mamaladze

4

Lion and Lamb เป็นแอพ iOS แบบโอเพ่นซอร์สที่สร้างคลาวด์คำโดยใช้คำที่พบบ่อยที่สุดจากหนังสือที่เลือกสรรมาจากพระคัมภีร์

มันใช้อัลกอริทึมตามที่อธิบายโดย Jonathan Feinberg การทดสอบ Hit ใช้ประโยชน์จากต้นไม้รูปสี่เหลี่ยม แต่กล่องขอบจะขึ้นอยู่กับรูปสี่เหลี่ยมผืนผ้าล้อมรอบของสัญลักษณ์ ฉันต้องการแยกสัญลักษณ์ออกเป็นส่วนเล็ก ๆ ที่มีขอบเขตเล็ก ๆ เพื่อเปิดใช้งานการวางคำภายในกล่องขอบของสัญลักษณ์

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

เมฆคำแห่งหนังสือวิวรณ์ในพระคัมภีร์


4

ฉันมีตัวสร้าง Tag Cloud ที่นี่ซึ่งฉันเรียกDisorganizer :)

แหล่งที่มาTagCloudService และการควบคุมมาร์กอัปมีดโกน และWinForm สำหรับวัตถุประสงค์ในการทดสอบ ที่คุณสามารถใส่ในบล็อกโปรไฟล์ของคุณ ฯลฯ โดยใช้ตัวหุ้มรอบ ๆ มันใช้ C # 4.0 & System.Drawing namespace อย่างหนัก

ฉันสร้างมันขึ้นมาเพราะด้วยเครื่องกำเนิดคลาวด์อื่น ๆ คุณไม่สามารถคลิกที่แท็กเพื่อนำทางและไม่สามารถสร้างภาพเคลื่อนไหวโฮเวอร์เพื่อแสดงว่ามันสามารถคลิกได้ เนื่องจากการแสดงภาพเคลื่อนไหวแบบโฮเวอร์ใน HTML เป็นสิ่งจำเป็นสำหรับฉัน (ฉันกำลังทำสิ่งนี้ด้วย<a>แท็กแบบวางซ้อน, ตำแหน่งที่อยู่อย่างแน่นอน) ฉันไม่ได้พัฒนาการแสดงผลมุมใด ๆ - พวกเขาเป็นแนวตั้งหรือแนวนอน

คำเตือน: ลิงก์ด้านบนอาจใช้งานไม่ได้ในอีกไม่กี่เดือนฉันวางแผนที่จะยกเลิกการเชื่อมโยงอย่างช้า ๆ จากโครงการโดยรอบไปยังโครงการอื่น

คุณสามารถดูตัวอย่างการทำงานบนโพสต์บล็อกตัวอย่างนี้แต่ไม่สมบูรณ์และในเว็บไซต์ที่ไม่สมบูรณ์ ติดต่อฉันหากใครต้องการมีส่วนร่วมฉันจะได้รับโดยแยกออกโดยเร็วที่สุด


ลิงค์ไปไม่ถูกต้อง ฉันชอบ UI ในบล็อกของคุณ
Doug S

ขอขอบคุณเพียงแก้ไขพวกเขา
Zasz

2

นี่เป็นอีกหนึ่งการใช้งาน wordle -endในPython 3 แบบส่วนใหญ่ตามโครงร่างเริ่มต้นของ Jonathan Feinberg (QuadTrees, spirals, ฯลฯ )

รหัส (ความเห็นพร้อมไฟล์ ReadMe โดยละเอียด) มีให้อย่างอิสระในที่เก็บ Githubนี้และนี่คือตัวอย่าง wordle ที่สร้างขึ้นด้วยรหัส

ก็อตแลนด์


0

มีห้องสมุด JavaScript ที่น่ารักที่สร้างโดย Tim Dream:

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

มันสามารถสร้างคลาวด์คำบนผืนผ้าใบหรือด้วยแท็ก HTML ที่มีตัวเลือกมากมายเพื่อแก้ไขผลลัพธ์ มันใกล้เคียงกับเอาต์พุตของ wordle จริงๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.