контекст
- Посмотрите на Wordle: http://www.wordle.net/
- Это выглядит намного лучше, чем любые другие генераторы облаков слов, которые я видел
- Примечание: источник недоступен - прочитайте FAQ: http://www.wordle.net/faq#code
Мои вопросы
- Есть ли алгоритм, который делает то, что делает Wordle?
- Если нет, каковы некоторые альтернативы, которые производят подобные виды продукции?
Почему я спрашиваю
- просто любопытно
- хочу учиться
Ответы:
Я создатель Wordle. Вот как на самом деле работает Wordle:
Считайте слова, выбрасывайте скучные слова и сортируйте по количеству по убыванию. Оставьте верхние N слов для некоторого N. Назначьте каждому слову размер шрифта, пропорциональный его количеству. Создайте форму Java2D для каждого слова, используя API Java2D.
Каждое слово «хочет» быть где-то, например, «в некоторой случайной позиции х в вертикальном центре». В порядке убывания частоты делайте это для каждого слова:
Вот и все. Трудно часть при этом пересечении-тестировании эффективно, для чего я использую последний хит кэширование, иерархические коробки ограничительных и квадранты пространственного индекс (все из которых являются вещи , которые вы можете узнать больше о с некоторыми прилежным погуглить).
Изменить: Как отметил Рето Эберсолд, теперь есть свободная доступная глава книги, которая охватывает эту же территорию: Прекрасная Визуализация, Глава 3: Wordle
источник
Вот действительно хороший javascript от Jason Davies, который использует d3. Вы даже можете использовать веб-шрифты с ним.
Демо: http://www.jasondavies.com/wordcloud/
Github: https://github.com/jasondavies/d3-cloud
источник
Я реализовал алгоритм, описанный Джонатаном Фейнбергом, используя python для создания облака тегов. Это далеко от красивых облаков wordle.net, но это дает вам представление, как это можно сделать.
Вы можете найти проект здесь .
источник
Я создал компонент Silverlight, который использует алгоритм, предложенный здесь Джонатаном. Все исходные коды и примеры проектов доступны в моем блоге:
http://whydoidoit.com
Мое облако позволяет вам раскрашивать и измерять слова на основе разных весов, а также поддерживает выбор слов (из координаты) и выделение выделенных слов. Ваш источник, который вы можете использовать по своему усмотрению.
источник
Я работаю над WordCram , библиотекой обработки для создания облаков слов. Он довольно сильно подвержен влиянию Wordle и проинформирован тем же PDF-файлом, на который ссылается выше. Он обрабатывает обнаружение столкновений для вас и позволяет вам сосредоточиться на том, как вы хотите, чтобы ваши слова были выложены, раскрашены, повернуты и т. Д.
источник
http://code.google.com/apis/visualization/documentation/gallery.html
Проверьте визуализацию облака слова. Не так красиво, как wordle.net, но очень легко добавить на свой сайт.
источник
Я искал словесную визуализацию, которая позволила бы назначить цвет, исходное положение и размер строки, связанные с другими данными, такими как релевантность в тексте - ничего не нашел, но благодаря информации, которую я нашел здесь (Особенно объяснение Джонатана и ссылка Эби), я мог бы наконец реализовать « Cloudio », который сравнительно близок к wordle (по крайней мере, я так думаю…) и предлагает функции, которые я искал.
Он реализован с использованием SWT и JFace, и я попытался интегрировать его в MVC-модель JFace, чтобы вы могли настроить контент- и метки-провайдеров для изменения макета облака и добавления его в другие Eclipse-плагины или RCP Программы. Вы также можете изменить способ вычисления начальной позиции строки, чтобы ее было нетрудно использовать для визуализации кластера или для других целей. Это все еще плохо документировано и ограничено в некоторых отношениях (и я сделал первоначальную загрузку несколько часов назад, так что она все еще может быть немного глючной), но если вам интересно, вот ссылка:
А вот ссылка на некоторые созданные облака, если вы хотите быстрое впечатление: 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-приложение с открытым исходным кодом, которое создает облака слов, используя самые частые слова из выбранной книги Библии.
Он основан на алгоритме, описанном Джонатаном Фейнбергом. Тестирование попаданий действительно использует четырехугольное дерево, но ограничивающие рамки основаны на ограничительном прямоугольнике глифа. Я хочу разбить глиф на множество небольших ограничивающих строк, чтобы включить размещение слов в ограничительной рамке глифа.
GitHub: https://github.com/PetahChristian/LionAndLamb
источник
У меня есть генератор Облака тегов, который я называю Disorganizer :)
Источники TagCloudService и элемент управления разметкой бритвы, а также WinForm для целей тестирования, которые вы можете поместить в свой блог, профиль и т. Д. С небольшой оболочкой. Он активно использует пространство имен C # 4.0 и System.Drawing.
Я создал его, потому что с другими облачными генераторами вы не можете нажимать на теги для навигации и не можете создавать анимации при наведении курсора, чтобы показать, что на них можно нажимать. Поскольку мне необходимо показывать анимацию при наведении курсора в HTML (я делаю это с помощью наложенных, абсолютно позиционированных
<a>
тегов), я не разработал отображение слов под любым углом - они либо вертикальные, либо горизонтальные.Предупреждение: приведенные выше ссылки могут стать недействительными через несколько месяцев, я планирую постепенно отвязать их от окружающего проекта в отдельный проект.
Вы можете увидеть рабочую демонстрацию этого образца блога , но она неполная и на неполном сайте. Свяжитесь со мной, если кто-то захочет внести свой вклад, я постараюсь выделить его как можно скорее.
источник
Вот еще один конец к концу реализации Wordle в Python 3 в значительной степени на основе первоначального наброска Джонатана Файнберга (QuadTrees, спиралей и т.д.).
Код (закомментированный, с подробным файлом ReadMe) находится в свободном доступе в этом хранилище Github, и это пример словесного файла, созданного с помощью кода.
источник
Есть красивая библиотека JavaScript, созданная Тимом Дримом:
https://github.com/timdream/wordcloud2.js/blob/gh-pages/API.md
Он может создать облако слов на холсте или с HTML-тегами с большим количеством опций для изменения результата. Это очень близко к выходу Wordle.
источник