CN103778213B - 一种基于占用矩阵的词云图可视化方法 - Google Patents
一种基于占用矩阵的词云图可视化方法 Download PDFInfo
- Publication number
- CN103778213B CN103778213B CN201410020352.3A CN201410020352A CN103778213B CN 103778213 B CN103778213 B CN 103778213B CN 201410020352 A CN201410020352 A CN 201410020352A CN 103778213 B CN103778213 B CN 103778213B
- Authority
- CN
- China
- Prior art keywords
- phrase
- word
- word cloud
- matrix
- layout
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/34—Browsing; Visualisation therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
- Document Processing Apparatus (AREA)
Abstract
字号表示词频可视化文本概要的词云图,以初筛选和归纳性显著提高海量非结构数据使用效率。重叠检测是词云可视化难点,现有算法词组两两比较去重叠,时间复杂度高,速度慢。本发明提出一组基于占用矩阵的词云图可视化方法,包括:纵横交错词云、任意角度词云和基于占用矩形的词云。采用占用矩阵、边线检测、随机位置、旋转画布和坐标变换技术,将逐一比较转化为一次计算,复杂度降低,解决任意角度重叠。输入为具有一定格式的文本统计数据,输出为可适形、横向、纵横交错、任意角度、字模提取、近大远小、带分类标签具有随机性的组合布局词云,宏观展示文本重点,直观比较数据差异,可广泛应用于文本挖掘和可视化领域。
Description
技术领域
本发明属于数据挖掘和数据可视化领域,涉及一种词云图可视化方法,具体设计了一组基于占用矩阵的任意形状、任意角度、无重叠、字模提取、具有语义分类的词云图可视化算法。
背景技术
词云图(Word Cloud)是一种富信息文本可视化技术,通过布局算法用文字大小表示词频,辅以多种色彩显示,直观反映词组重要性差异,展示文本关键摘要信息。近年来,词云图作为极富表现力的可视化载体,广泛应用于网站导航、社会化标签呈现、Web文本分析以及各种文本挖掘和可视化场景。
词云图起源于标签云。标签云(Tag clouds),早在1997年已被作为网站可视化导航手段,用字体大小表示标签频数,文字逐行水平排列。2002年,照片分享网站Flickr用标签云表示标签流行程度。随后,网络书签应用del.icio.us也采用它标注用户的大量社会化标签。此后,大量网站使用标签云,导航离散的分类信息,点击标签链接进入相应的内容页面,统计易用性使它成为Web2.0时代的显著标志之一。近年,通过用户输入创建标签云的专业网站出现,包括TagCrowd、Tag Cloud Generator以及IBM的可视化分享网站Many Eyes。
标签云在布局复杂美观以及应用的延伸,逐渐演变发展了另一种独立的文本可视化技术——词云图。词云图通过色彩和布局增强了标签云的视觉效果,帮助人们简明扼要地了解文本的大体内容,实际上是一种离散的自动摘要生成和可视化工具。图1是标签云和词云图布局比较。标签云目前主要用于网站导航,而词云图用于各种文本可视化,但在某些情况下有相互指代之意,如***中“Word Cloud”词条直接指向了“Tag Cloud”,在百度搜索结果中也反映了两词相互指代的特点。
1.国内外词云图应用
沟通性和解说性是可视化的优势,特别用于向非专家用户描述一些专业抽象的信息。2008年美国总统大选期间,大量新闻报道采用词云图对比民主、共和两党候选人演讲用词,这一全新的文本可视化有效宣传了竞选核心理念。2013年我国“两会”期间,清华大学自然语言处理与社会人文计算实验室利用词云图对“两会”报告形象解读,产生了很强的社会反响,见图2所示。词云图的个人应用包括博客、微博、诗歌和歌词等文本统计和可视化。
2008年6月,美国可视化学者Jonathan Feinberg发布了一款在线词云图工具Wordle,词 组布局遵循一定算法,水平或者垂直排列,充分利用空隙,形成内部紧凑、轮廓明显的视觉效果。Wordle实现用户在线输入文本数据,自动统计频数,用户设置字体、布局和配色方案,该网站日志显示每天平均约有1.4万访问量。
Tagxedo也是一个在线词云制作工具,允许定义填充形状,有效丰富了可视化效果。此外标签云和词云图在线工具还有tagCloud、ImageChief、ABCya、Tagul、ToCloud和WordItOut。其中ABCya仅支持英文文本,自动过滤掉非英文字符,不能实现适形填充;WordItOut只提供了横向布局,也不能实现适形填充;Tagul能适形填充,生成标签云,不能添加语义特征;Make Word Masaic能纵横交错适形填充,没有语义特征。这些工具只能在线使用,限制了在软件中集成、可视化的灵活性差,使用范围有限。
清华大学孙茂松团队开发了一个在线“围脖关键词”词云工具,自动抽取关键词,分析微博用户言论并以词云显示,一定程度反映用户兴趣和经历,可以用于微博舆情监控。但其可视化布局的灵活性一般,没有实现任意角度词云。
2.词云图布局算法
Wordle采用随机贪心背包算法布局词组,先按词频降序排序,平方根变换词频和字体大小,对每个词组初设位置,如果与其他词组重叠,则通过增加极坐标半径调整坐标直到不重叠。由于每个词与已布局的所有词比较检测是否重叠,算法复杂度为O(n2),词组数超过百数量级后速度明显变慢,为此他们采用了三个优化技巧:采用层次边界盒子寻找词组边界;采用缓存技术先检测最可能重叠的词组;采用四叉树空间索引进一步减少重叠检测的次数。韩国学者在Wordle词云布局算法的框架下做了一些优化,提供了交互性更强的词云图工具ManiWordle。
此外,Seifert等提出了一个优化的布局算法,实现了从矩形布局到任意多边形布局,以创建更加丰富的词云图。Gambette和Veronis提出了整齐布局的“Tree Cloud”的词云概念。
IBM的文本可视化研究团队刘世霞等基于复杂网络的力导向布局算法研究了保留上下文的动态词云可视化,然而力导向算法本身也具有O(n2)复杂度。
3.目前词云图算法和应用存在的问题
词云图一出现引起广泛关注,在新闻分析、文献比较、情报分析、舆情监控、试卷分析、工艺美术和创意广告等多个领域有应用需求,以期快速理解文本数据重点,挖掘潜在模式,提高数据的可理解性,丰富视觉效果。然而现有技术存在如下问题。
(1)词云可视化的难点是处理重叠,以Wordle和力导向布局为代表的现有重叠检测算法,都将拟布局词组与已布局的所有词组逐一比较,无论如何优化,其算法本质具有O(n2) 复杂度,速度慢,影响用户体验。
(2)现有的工具和方法,仅能实现词云图可视化的无重叠、纵横交错、任意角度、居中布局、适形填充和多重语义的一种或几种,都不能实现全部的组合功能。
(3)在线词云图工具,色彩、字体、字号参数配置手工完成,不利于大规模数据自动分析以及与其它可视化技术的集成,对色彩、字体和角度信息的语义利用不充分。
(4)词云图在线工具不能嵌入软件中使用,难以实现和文本数据的无缝集成和同步,需要手工处理若干环节,仅适合生成单张的词云图。
发明内容
本发明提出一种基于占用矩阵的词云图可视化方法,生成任意形状、纵横交错、任意角度、字模提取、分类标注、配色可调、近大远小的词云,为各种词云图应用提供弹性组合解决方案。
本发明一种基于占用矩阵的词云图可视化方法,对词频降序排序,根据可视区域开设一个以像素为单位的大矩阵,其元素置为0,最大词频词组中心与可视区中央坐标重合,占用的可视区子矩阵置为1,表示已占用;后续词组以极坐标布局在可视区,采用边线检测是否与已布局词组重叠,重叠则随机生成新坐标,再次检测是否重叠,迭代至不重叠;检测是否可以旋转,即旋转后不超出可视区,也不与已有词组重叠,能旋转的则按一定概率选择是否垂直旋转90度,不能旋转或未选中的保持原来状态;再次检测是否可以向中心靠近,逐步靠近中心检测重叠后停止,采用垂直水平双向快速移动,再采用垂直或水平单方向慢速移动,并将所占用的可视区子矩阵置为1,表示已占用。在此基础上又设计了任意角度旋转词云,通过随机生成词组基线坐标和随机旋转角度,旋转后检测四角是否超出可视区,超出则重新生成坐标和角度,检测四边是否与已布局词组重叠,重叠则重新生成坐标和角度,是否可以向第一个词组中心移动,不重叠则移动,旋转画布后打印词组,再将画布恢复,将旋转后词组占用的可视区置1。调整占用子矩阵的边界参数控制行距。本方法能够快速实现词组无重叠、纵横交错、任意角度、近大远小、字模提取、适形填充等组合布局,色彩、角度或字体标注分类信息,宏观清晰地分析文本重点,直观比较词组内涵的数据差异,可广泛应用于文本挖掘和可视化领域,提高数据的可理解性。
一种词云图可视化方法,包括如下步骤:
步骤一:对于已排序的词组和词频,计算可视区域面积,对词频做规格化处理,词频表示字号,使所有词组、词频和词组字数表示的总面积小于可视区域面积;
步骤二:设置一个以可视区域的宽W和高H为尺寸的矩阵M,称为占用矩阵,M=[H*W],将其所有元素置为0,表示未被占用;
步骤三:将最大词频的词组布局在可视区中间,其所占用的M矩阵中的子矩阵元素置为1,表示该区域已占用;
步骤四:为下一个词组按照极坐标分配布局位置,如果词组不在可视区内先移动到可视区,通过矩形边线检测是否该区域被占用,即不重叠,如果重叠则为该词组随机分配布局位置,继续检测是否重叠,不重停止;
步骤五:检测是否可以旋转。将该词组垂直90度旋转后,检测是否与已布局词组重叠, 不重叠则可以旋转,随机选择部分旋转,不能旋转或未选中保持原位置;
步骤六:检测是否可以向中心靠近,在垂直和水平方向同时向可视区域中心移动一定步长,不重叠则继续移动,重叠后停止,撤回最后一次移动;逐像素检测垂直和水平单方向是否能靠近中心,能则移动直到重叠为止;
步骤七:在可视区域打印该词组,并将其所占用的矩形区域的子矩阵置为1,表示已占用,转步骤四,所有词组布局完成后本方法结束。调整占用子矩阵的边界参数控制行间距;
步骤八:对于词组内部造成的空隙,采用字模提取技术,字模像素与占用矩形区像素重叠才将占用矩阵对应元素置为1;
步骤九:对于词组字数差异造成内部缝隙时,布局一定比例词组后,采用极坐标检测占用矩阵内剩余空白圆形区并存储其位置、半径和与中心的距离,按照与中心距离升序排序,对后续的词组布局时,从距离中心最近的空白区开始尝试,再检测是否重叠和是否可以旋转,如果所有空白区都重叠,则随机生成该词组坐标;
步骤十:如果提前用已知的二值图形初始化占用矩阵M,可以填充生成任意图形的词云图;
步骤十一:在以上步骤基础上设计了任意角度旋转词云图。随机生成词组左下角基线坐标和随机旋转角度α,检测词组旋转后四角坐标是否超出可视区,超出可视区再次随机生成基线坐标和旋转角度,检测旋转后四边是否与已布局词组重叠,重叠则重新生成基线坐标和旋转角度,如果不是第一个词组,则检测是否可以向第一个词组中心移动,不重叠则移动,同样采用纵横双向快速移动和纵横单向逐像素移动,重叠后停止,按照旋转角度α旋转画布,打印词组后旋转画布-α角度;
步骤十二:如果预先对词组添加分类标签,可以用色彩、字体和旋转角度标注不同分类的词组,生成多重语义词云图;
步骤十三:一种基于迭代计算占用矩形的词云布局算法,通过将第一个词组布局在可视区中央,迭代计算其左上、左下、右下和右上剩余的矩形区域坐标和面积,按面积排序,对后续词组布局时,从面积最小的区域开始尝试,布局后计算新增加的2个矩形区域,将其中1个存储在所占用的矩形存储单元,只需新增1个存储单元,再次按照面积排序,迭代布局后续词组。
所述步骤二中采用与可视区域同尺寸的二值矩阵表示已被占用区域,以解决词云图的关键难点之一,即去除叠,调整占用矩阵的边界参数控制行间距,词组布局完成后将其占用的子矩阵像素置为1表示已占用。
所述步骤四中采用矩形边线检测是否与已布局词组重叠,检测代价最小。
所述步骤五中检测是否可以旋转,由于直接旋转的是画布,而不是词组,需要以词组中心旋转,并计算旋转后拟占用矩形区域是否与已布局词组重叠。
所述步骤六中为产生近大远小的视觉效果,将高频词组尽可能布局在中央,将词组按照快速垂直水平同时在不重叠情况下向中心靠近,再逐像素垂直、水平单方向在不重叠情况下向中心靠近。
所述步骤八中字模提取,词组布局完成后将其占用的子矩阵和字模重叠像素区置为1表示已占用,实现词组内部空隙的利用。
所述步骤九中,用字号较小的词组填充了由于随机算法和词组字数不同造成的空隙。
所述步骤二和步骤十中,设计上能实现填充任意形状的词云图。
步骤十一中,通过极坐标和直角坐标换算,以及旋转前坐标系和旋转后坐标系换算实现任意角度旋转的词云图,同时通过参数设置,水平、纵横交错是任意角度布局的特例。
步骤十一和步骤十二中,用色彩、字体和角度作为分类标签,能实现具有多重语义的词云图。
所述步骤十三中,通过迭代计算占用矩形,实现了最小代价无重叠快速确定性词云布局,其缺点是布局结束区局部不够美观,不能适形填充和字缝内填充。
本发明一种基于占用矩阵的词云图可视化方法的优点在于:
(1)设计采用占用矩阵解决词组重叠问题,词组占用的子矩阵置为1;采用矩形边线检测重叠,占用矩阵和边线检测的设计有效节省重叠检测时间。与Wordle和ManiWordle相比,将逐一与已布局词组比较转换为直接计算占用矩阵的下标,检测一个矩形边线是否被占用,重叠检测部分的算法复杂度为O(mn)(m<<n)。通过二值图像初始化占用矩阵,简便地实现填充任意形状的词云图,丰富了可视化效果。
(2)通过极坐标和直角坐标换算,以及旋转前坐标系和旋转后坐标系换算实现了任意角度词云图,它是一种更一般的布局算法,横向布局和纵横交错是其特例,通过参数控制词组横向、纵横布局以及使用角度作为分类标签。
(3)通过两阶段快速粗调整和慢速精细调整向可视区中心移动,实现高频词组尽可能聚集于中心,突出数据重点,两阶段调整使词组快速靠近中心坐标。
(4)词组初始坐标随机生成,每次运行词云图不尽相同,但所有的词组都尽可能靠近第一个词组中心,近大远小、突出重点、相似且不同。横向、纵横交错、任意角度、字模提取、填充图形、居中布局和色彩字体角度分类可以单独或组合使用,丰富了可视化效果。
(5)基于占用矩形的词云布局算法,提供了一种快速、布局紧凑、填充率较高的确定性布局,其在词组字号相同或近似时,布局效果较好。一般情况下,布局结束区域效果稍差,不能适形填充。
附图说明
图1标签云和词云图比较;
图2词云图《政府工作报告》示例;
图3为Wordle和ManiWordle使用的重叠检测技术;
图4为本发明一种基于占用矩阵的词云图可视化方法的步骤流程图;
图5为本发明一种基于占用矩阵的词云图可视化方法中最高词频词组居中布局,其基线坐标和占用矩阵对应的四角坐标计算;
图6为本发明一种基于占用矩阵的词云图可视化方法中词组在占用矩阵的子矩阵四角坐标计算和边线重叠检测图示;
图7为本发明一种基于占用矩阵的词云图可视化方法词组旋转90度后占用的子矩阵四角坐标计算公式图示;
图8为本发明一种基于占用矩阵的词云图可视化方法纵横交错布局后占用矩阵M的使用情况;
图9为本发明一种基于占用矩阵的词云图可视化方法生成无重叠横向布局词云图;
图10为本发明一种基于占用矩阵的词云图可视化方法生成纵横交错布局词云图;
图11为本发明一种基于占用矩阵的词云图可视化方法生成纵横交错居中布局词云图;
图12为本发明一种基于占用矩阵的词云图可视化方法字模提取图示;
图13为本发明一种基于占用矩阵的词云图可视化方法字模提取后占用矩阵使用情况;
图14为本发明一种基于占用矩阵的词云图可视化方法随机布局造成的空隙图示;
图15基于字模提取纵横交错词云图空隙发现图示;
图16基于字模提取纵横交错空隙优先词云图;
图17为本发明一种基于占用矩阵的词云图可视化方法生成横向适形词云图;
图18为本发明一种基于占用矩阵的词云图可视化方法生成纵横交错适形词云图;
图19为本发明一种基于占用矩阵的词云图可视化方法生成纵横交错居中布局适形词云图;
图20为本发明一种基于占用矩阵的词云图可视化方法生成纵横交错居中布局适形色彩分类的词云图;
图21为本发明一种基于占用矩阵的词云图可视化方法生成任意角度旋转词云的步骤流程图;
图22为本发明一种基于占用矩阵的词云图可视化方法中任意角度旋转后词组中心坐标、四角坐标和任意一点坐标的计算公式图示;
图23为本发明一种基于占用矩阵的词云图可视化方法生成任意角度旋转词云图的占用矩阵M使用情况;
图24为本发明一种基于占用矩阵的词云图可视化方法生成任意角度旋转词云图;
图25为本发明一种基于占用矩阵的词云图可视化方法字模提取任意角度词云图占用矩阵使用情况;
图26为本发明一种基于占用矩阵的词云图可视化方法字模提取任意角度词云图;
图27为本发明一种基于占用矩阵的词云图可视化方法生成适形任意角度居中布局词云图;
图28为本发明一种基于占用矩阵的词云图可视化方法生成适形色彩分类任意角度词云图;
图29为本发明一种基于占用矩阵的词云图可视化方法生成适形旋转角度分类词云图;
图30为本发明一种基于占用矩阵的词云图可视化方法生成适形色彩角度字体同时分类词云图;
图31为本发明一种基于占用矩形的词云图可视化算法步骤流程图;
图32为本发明一种基于占用矩形的词云图可视化算法占用矩形计算图示;
图33为本发明一种基于占用矩形的词云图可视化算法不同字号词云图;
图34为本发明一种基于占用矩形的词云图可视化算法相同字号词云图;
图35为本发明一种基于占用矩阵的词云图可视化方法填充率与运行时间比较。
具体实施方式
下面将结合附图对本发明作详细说明。
本发明目的在于可视化由各种文本生成的包含词组和词频的统计数据,用字体大小表示词频,词组颜色不同,突出显示高频词组,实现近大远小、无重叠、纵横交错、任意角度、字模提取和适应不同形状的词云图。为解决词云图无重叠提出了占用矩阵和边线检测技术,为实现纵横交错采用旋转画布和无重叠检测,为实现近大远小并保证运行速度提出了两阶段靠中心移动技术,采用图像初始化占用矩阵实现了适应图形填充,为解决词组内空隙采用字模提取技术,为解决随机算法造成的空隙采用空隙发现和居中优先填充技术,为实现任意角 度旋转提出了旋转前坐标系和旋转后坐标系换算技术计算边线坐标和占用区域坐标,用色彩、字体或角度表示分类信息,增加了分类语义。本发明输入为具有一定格式的文本统计数据,输出为可适应形状、无重叠、纵横交错、任意角度、字模提取、近大远小、带分类标签且具有一定随机性,相似又不同的各种组合布局词云图。
为验证本方法的正确性和有效性,本实施例采用2013年中国大学排名数据为实验载体。
步骤1:确保规格化后的词频为整数,方便表示为字号,同时需要保证所有可视化后词组总面积小于可视化区域面积。
词频采用如下的极差规格化,线性变换。
其中,wordsizei是第i个词组的词频规格化后表示的字号大小,wordsizemax为可以设置的最大词频词组的字号,wordsizemin为可以设置的最小词频词组的字号,Fi为第i个词组的词频,max(Fk)为所有词频的最大值,min(Fk)为所有词频的最小值。
用如下不等式检测可视化后词组总面积是否小于可视区面积,如果不成立,适当调整wordsizemin和wordsizemax,使词组总面积为可视区面积的50-80%,词云图画面饱满且算法收敛快。如果词组总面积大于可视区面积,或有长度超过可视区宽度和高度的词组,会导致算法不收敛,可视化失败。如果算法不收敛,通过减小字号解决。
其中charsizei为中文词组所含的单字个数,英文单词为所含的字母个数,W为可视区宽度,H为可视区高度。
表1是2013年中国大学前100排名数据,数据规格化后表示为文本,第一行为固定的wordcloud 100,其中100代表词组总数,每行数据如下:从“1”开始的标号,词组名称和规格化后的词频,分类标签。如第一行“1北京大学60 1”,数据用空格分隔,表中分类标签“1”表示“第一批985高校”,“2”表示“第二批985高校”,“3”表示其它的“211高校”。
表1中国大学2013年排名得分规格化后数据
步骤2:本发明以Java语言实现了所述词云图可视化,以全屏幕作为可视区为例,通过Java基础类库获得所用计算机屏幕宽度W和高度H,开设占用矩阵M[H][W]。
步骤3:计算屏幕中心位置坐标为
center=(center_x,center_y)
其中center_x=W/2,center_y=H/2。
将最大词频词组布局在中央,由于在Java中字符的基线是左下角坐标位置,因此第一个词组的坐标为
word_x0=center_x-wordsize0charsize0/2
word_y0=center_y+wordsize0/2-(int)(wordsize0*0.3)
采用g.setFont(new Font(″Microsoft YaHei″,Font.BOLD,wordsize0))设置字体和字号,后采用g.drawString(word0,word_x0,word_y0)显示该词组,由于在默认情况下有行距,减去wordsize0*0.3调整行距造成的字符位置偏差。
可视区域中心,最高频词组“北京大学”的基线坐标计算和占用矩阵M的子矩阵的四角坐标计算如图5所示。将词组对应的占用矩阵M的子矩阵(或字模像素)各元素置为1,表示已占用。
步骤4:对下一个词组,通过以下极坐标产生布局位置
word_xi=center-x+r cos(πi/8)
word_yi=center-y+r sin(πi/8)
检测其占用矩形区域的边线是否与已布局的词组重叠,实际是检测边线坐标对应的占用矩阵的元素是否均为0,该词组边线检测的坐标如图6所示,只要有一个像素点被占用则认为重叠,重新随机生成该词组的坐标,继续检测直到不重叠为止。如图6所示,词组“清华大学”的红色边线检测到了与“北京大学”的多个像素重叠,则再次随机生成“清华大学”的基线坐标,直到不重叠为止。
步骤5:检测该词组是否可以旋转,即旋转后所占用的区域不与已布局词组重叠,同样采用边线检测。在Java中旋转是基于画布的,因此在旋转过程中,需以词组的中心为基准旋转,其中心坐标为
center_xi=r_x+0.5wordsizeicharsizei
center_yi=r-y-0.5wordsizei
以词组的中心旋转画布90度后,该词组在旋转前画布上占用的子矩阵坐标如图7所示,检测该矩形区域边线元素坐标在占用矩阵上是否全为“0”,是则可以旋转,产生一个随机数决定是否真正旋转该词组,不能旋转或者可旋转但未选中的保持原来坐标不变。需要旋转的更新其基线坐标为图7中点1的坐标,其占用矩阵的子矩阵坐标参照图7中点1,2,3,4形成的矩形区域计算。
步骤6:检测该词组是否可以靠近可视区中心。根据可视区中心的宽高比,设置横向和纵向移动步长,如本例可视区域为1366∶768,宽高比设置为2∶1,横向步长为8,纵向步长为4,使得在水平方向上移动更快,横向纵向同时移动重叠后,后退最后一次移动步长,再次在纵向或横向单方向逐像素移动,重叠后停止,更新该词组的基线坐标。
步骤7:在可视区打印该词组,先根据词频设置字号,选择字体,具体用g.setFont(newFont(″Microsoft YaHei",Font.BOLD,wordsizei))函数设置字体和字号。如果该词不需旋转,参照图6计算的词组基线坐标,用g.drawString(wordi,word_xi,word_yi)函数打印词组,计算其所占用的矩形区域的子矩阵边界坐标,将子矩阵(或字模像素)所有元素置为1,表示已占用;如果该词需要旋转,以该词的中心先将画布旋转-90度,具体用g2d.rotate(-Math.PI/2,word_xi+wordsizei*charsizei,word_yi-wordsizei)函数旋转画布,打印该词组,再以该词的中心将画布旋转90度恢复原来状态,参照图7中计算旋转后的词组在未旋转的画布上对应的占用矩阵的子矩阵元素置为1,表示已占用,转步骤4为下一词组布局,所有词组布局完成后本方法结束。
以纵横交错布局为例,占用矩阵的使用情况如图8所示。本方法生成的横向布局词云图如图9所示,纵横交错布局见图10,纵横交错居中布局如图11所示。
步骤8:对于词组内部造成的空隙,采用字模提取技术,具体在Java中是采用基础类库提供的字模提取API,字模像素与占用矩形区像素重叠才将占用矩阵对应元素置为1,字模提取的结果示例如图12所示,字模提取后占用矩阵使用情况如图13所示。
步骤9:对于词组字数差异造成内部缝隙时,布局一定比例词组后,采用极坐标检测占 用矩阵内剩余空白圆形区并存储其位置、半径和与中心的距离,按照与中心距离升序排序。对后续的词组布局时,从距离中心最近的空白区开始尝试,再检测是否重叠和是否可以旋转,如果所有空白区都重叠,则随机生成该词组坐标。由于随机算法和词组字数差异造成的空隙如图14所示,空隙检测结果如图15所示,居中空隙优先填充结果如图16所示。
步骤10:如果提前用已知的二值图像初始化占用矩阵M,可以填充生成任意图形的词云图。本例所用的24位BMP图像为“中国地图”,读取图像的三基色,地图内像素对应占用矩阵M的元素置为0,地图外区域像素对应M的元素置为1,表示填充“地图”,所绘制的横向适形词云如图17所示,纵横交错适形词云如图18所示,纵横交错居中适形词云如图19所示。如果预先对词组添加分类标签,如读取表1中分类信息,用色彩标注不同分类的词组,生成具有分类标签的纵横交错居中适形的词云如图20所示,“985高校第一批”为第1类,“985高校第二批”为第2类,其它的“211高校”为第三类。
步骤11:基于以上步骤,独立实现任意角度旋转词云图,算法流程详见图21。任意角度旋转的难度是将旋转后坐标系的词组四角坐标、边线坐标和占用矩阵坐标换算到未旋转前的坐标系,四角坐标用于检测旋转后是否在可视区,边线坐标用于检测旋转后是否与已布局词组重叠,占用矩阵坐标用于将对应占用矩阵的区域设置为已占用,换算方法见图22。具体流程:对每一个词组随机生成左下角基线坐标(r_x,r_y),随机生成旋转角度α,根据词频表示的字号wordsizei和词组的字数charsizei计算其旋转前四角坐标,根据图22中的公式计算词组旋转角度α后的四角坐标,检测旋转后四角坐标是否在可视区内,不在则再次随机生成基线坐标和旋转角度,在可视区内则检测该词的矩形边线坐标,旋转角度α后的边线坐标位置对应的占用矩阵是否被占用,只要有一个点被占用则重新随机生成该词基线坐标和旋转角度,边线全部未被占用,则检测是否是第一个词组,如是第一个词组则存储其中心坐标位置,不是第一个词组检测其是否可以向第一个词组的中心移动,同样采用先纵横双向同时移动,后纵横单向逐像素移动,重叠后停止,计算当前词组的基线坐标位置,先以角度α旋转画布,设置字体、色彩,根据词频设置字号,打印词组,然后再将画布旋转角度-α,最后将旋转后的词组对应占用矩阵中的元素置为1,或者仅将字模区域的像素元素置位1,当前词组布局完成。为下一个词组布局,所有词组布局完成后,任意角度旋转词云图可视化方法结束。任意角度词云占用矩阵使用情况如图23所示,生成的任意角度词云结果如图24所示,字模提取任意角度词云占用矩阵使用情况如图25所示对应的词云如图26所示,为清楚起见,词组外加了边框,显示字模无像素的边界被利用,布局更紧凑。生成的适形任意角度靠近第一个词组中心词云布局如图27所示。
步骤12:基于步骤11可以组合使用色彩、角度和字体作分类标签,其分别生成的适形色彩分类任意角度词云如图28所示,用旋转角度分类的适形词云如图29所示,同时使用色彩、角度和字体分类的词云如图30所示。
步骤13:一种基于迭代计算占用矩形的词云布局算法,其流程如图31所示。通过将第一个词组布局在可视区中央,迭代计算其左上、左下、右下和右上剩余的矩形区域,坐标计算见图32,并计算剩余矩形面积,按面积升序排序。对后续词组布局时,从面积最小的区域开始尝试,布局时为居中排列,左上区布局在右下,左下区布局在右上,右下区布局在左上,右上区布局在左下,布局后词组占用一个矩形区,新增2个空白矩形区,将其中1个存储在所占用的矩形存储单元,另一个需新增1个存储单元,再次按照面积排序,迭代布局后续词组。不同词频布局结果见图33,相同词频布局结果如图34所示。
步骤14:为检验本方法的性能,对横向布局(记为WordCloud)、纵横交错布局(VWordCloud)、纵横交错居中布局(CVWordCloud)、适形纵横交错居中布局(SCVWordCloud)、任意角度旋转布局(AWordCloud)、任意角度旋转居中布局(CAWordCloud)、适形任意角度旋转居中布局(SCAWordCloud)、字模提取纵横交错居中布局(MCVWordCloud)、字模提取居中空隙优先填充纵横交错居中布局(MGCVWordCloud)、基于占用矩形的词云布局(RWordCloud)10个算法,在台式机AMDAthlonII*4 610e处理器,2.4G主频,3.5GB内存上,Eclipse开发环境下,检验算法性能。由于前9个算法的随机性,运行时间为20次的平均值。
为统一,字模提取、占用矩形矩阵和占用矩形算法,填充率计算均为所有词组的总面积(词组的字号平方乘以字数)除以可视区域面积。对于适形填充算法的不规则边界区域,实验采用蒙特卡洛方法计算面积,即随机生成占用矩阵的二维下标,运行N次,计算下标落入图形内部的次数n,占用矩阵面积为W*H,不规则图形的面积为
S=(n/N)×W×H
填充率与运行时间的比较如图35所示,运行时间为秒,10个算法的填充率都超过0.6以上,画面饱满,运行时间都在30秒以内,5个算法运行在0.5秒以下,用户体验布局在瞬间完成。其中CVWordCloud纵横交错居中布局词云的填充率更高,运行时间更短,而AwordCloud任意角度布局词云填充率稍低,运行时间稍长,所有的居中布局算法的填充率都较高,运行时间更短,其视觉效果近大远小符合突出重点的主观认识。基于占用矩阵的算法,随着填充率增加,布局后期,词组随机搜索到空闲区域的次数增加,布局运行时间增加。RWordCloud算法是确定性算法,填充率增加,运行时间不变。
Claims (11)
1.一种词云图可视化方法,其特征在于,包括如下步骤:
步骤一:对于已排序的词组和词频,计算可视区域面积,对词频做规格化处理,词频表示字号,使所有词组、词频和词组字数表示的总面积小于可视区域面积;
步骤二:设置一个以可视区域的宽W和高H为尺寸的矩阵M,称为占用矩阵,M=[H*W],将其所有元素置为0,表示未被占用;
步骤三:将最大词频的词组布局在可视区中间,其所占用的M矩阵中的子矩阵元素置为1,表示该区域已占用;
步骤四:为下一个词组按照极坐标分配布局位置,如果词组不在可视区内先移动到可视区,通过矩形边线检测是否该区域被占用,即不重叠,如果重叠则为该词组随机分配布局位置,继续检测是否重叠,直至不重叠;
步骤五:检测是否可以旋转。将该词组垂直90度旋转后,检测是否与已布局词组重叠,不重叠则可以旋转,随机选择部分旋转,不能旋转或未选中保持原位置;
步骤六:检测是否可以向中心靠近,垂直和水平方向同时向可视区中心移动一定步长,不重叠则继续移动,重叠后停止,撤回最后一次移动;逐像素检测垂直和水平单方向是否能靠近中心,能则移动直到重叠为止;
步骤七:在可视区域打印该词组,并将其所占用的矩形区域的子矩阵置为1,表示已占用,转步骤四循环,直至所有词组布局完成;调整占用子矩阵的边界参数控制行间距;
步骤八:对于词组内部造成的空隙,采用字模提取技术,字模像素与占用矩形区像素重叠才将占用矩阵对应元素置为1;
步骤九:对于词组字数差异造成内部缝隙时,布局一定比例词组后,采用极坐标检测占用矩阵内剩余空白圆形区并存储其位置、半径和与中心的距离,按照与中心距离升序排序。对后续的词组布局时,从距离中心最近的空白区开始尝试,再检测是否重叠和是否可以旋转,如果所有空白区都重叠,则随机生成该词组坐标;
步骤十:如果提前用已知的二值图形初始化占用矩阵M,可以填充生成任意图形的词云图;
步骤十一:在以上步骤基础上设计了任意角度旋转词云图。随机生成词组左下角基线坐标和随机旋转角度α,检测词组旋转后四角坐标是否超出可视区,超出可视区再次随机生成基线坐标和旋转角度,检测旋转后四边是否与已布局词组重叠,重叠则重新生成基线坐标和旋转角度,如果不是第一个词组,则检测是否可以向第一个词组中心移动,不重叠则移动,同样采用纵横双向快速移动和纵横单向逐像素移动,重叠后停止。按照旋转角度α旋转画布,打印词组后旋转画布-α角度;
步骤十二:如果预先对词组添加分类标签,可以用色彩、字体和旋转角度标注不同分类的词组,生成多重语义词云图;
步骤十三:一种基于迭代计算占用矩形的词云布局算法,通过将第一个词组布局在可视区中央,迭代计算其左上、左下、右下和右上剩余的矩形区域坐标和面积,按面积排序,对后续词组布局时,从面积最小的区域开始尝试,布局后计算新增加的2个矩形区域,将其中1个存储在所占用的矩形存储单元,只需新增1个存储单元,再次按照面积排序,迭代布局后续词组。
2.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤二中采用与可视区域同尺寸的二值矩阵表示已被占用区域,以解决词云图的关键难点之一,即去重叠;调整占用矩阵的边界参数控制行间距;词组布局完成后将其占用的子矩阵像素置为1表示已占用。
3.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤四中采用矩形边线检测是否与已布局词组重叠,检测代价最小。
4.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤五中检测是否可以旋转,由于直接旋转的是画布,而不是词组,需要以词组中心旋转,并计算旋转后拟占用矩形区域是否与已布局词组重叠。
5.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤六中为产生近大远小的视觉效果,将高频词组尽可能布局在中央,将词组按照快速垂直水平同时在不重叠情况下向中心靠近,再逐像素垂直、水平单方向在不重叠情况下向中心靠近。
6.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤八中字模提取,词组布局完成后将其占用的子矩阵和字模重叠像素区置为1,表示已占用,实现词组内部空隙的利用。
7.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤九中,用字号较小的词组填充了由于随机算法和词组字数不同造成的空隙。
8.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤二和步骤十中,设计上能实现填充任意形状的词云图。
9.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤十一中,通过极坐标和直角坐标换算,以及旋转前坐标系和旋转后坐标系换算实现任意角度旋转的词云图,同时通过参数设置,水平、纵横交错是任意角度布局的特例。
10.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤十和步骤十二中,用色彩、字体和角度作为分类标签,能实现具有多重语义的词云图。
11.根据权利要求1所述一种词云图可视化方法,其特征在于:所述步骤十三中,通过迭代计算占用矩形,实现了最小代价无重叠快速确定性词云布局,其缺点是布局结束区局部不够美观,不能适形填充和字缝内填充。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410020352.3A CN103778213B (zh) | 2014-01-16 | 2014-01-16 | 一种基于占用矩阵的词云图可视化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410020352.3A CN103778213B (zh) | 2014-01-16 | 2014-01-16 | 一种基于占用矩阵的词云图可视化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103778213A CN103778213A (zh) | 2014-05-07 |
CN103778213B true CN103778213B (zh) | 2017-02-15 |
Family
ID=50570448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410020352.3A Expired - Fee Related CN103778213B (zh) | 2014-01-16 | 2014-01-16 | 一种基于占用矩阵的词云图可视化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103778213B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104463931B (zh) * | 2015-01-07 | 2017-12-22 | 昆山百润科技有限公司 | 多人并发签章情形下实现***重叠检测及处理的方法 |
US10387471B2 (en) | 2015-07-30 | 2019-08-20 | Energage, Llc | Unstructured response extraction |
CN106469138B (zh) * | 2016-09-29 | 2020-07-17 | 东软集团股份有限公司 | 词云的生成方法及装置 |
CN106709968A (zh) * | 2016-11-30 | 2017-05-24 | 剧加科技(厦门)有限公司 | 剧本故事信息的数据可视化方法及*** |
CN108229992A (zh) * | 2016-12-15 | 2018-06-29 | 北京奇虎科技有限公司 | 生成标签云的方法、装置、浏览器和移动终端设备 |
CN106951544B (zh) * | 2017-03-24 | 2020-03-20 | 徐喆 | 云图动态播放方法和播放装置 |
CN107357909B (zh) * | 2017-07-17 | 2020-06-02 | 重庆邮电大学 | 高效多背包容器组卷***及其组卷方法 |
US11182415B2 (en) * | 2018-07-11 | 2021-11-23 | International Business Machines Corporation | Vectorization of documents |
CN109511006A (zh) * | 2018-11-13 | 2019-03-22 | 广州虎牙科技有限公司 | 一种词云图生成方法、装置、设备和存储介质 |
CN110134933B (zh) * | 2019-05-16 | 2024-05-24 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
CN110189393B (zh) * | 2019-06-05 | 2021-04-23 | 山东大学 | 一种形状词云的生成方法和装置 |
CN112579829A (zh) * | 2019-09-27 | 2021-03-30 | 北京国双科技有限公司 | 图表可视化方法及装置 |
CN112923539B (zh) * | 2019-12-05 | 2022-12-27 | 新奥数能科技有限公司 | 一种空调机组运行优化方法及*** |
CN112036158B (zh) * | 2020-09-01 | 2023-11-03 | 北京金堤征信服务有限公司 | 词云数据分布处理方法及装置 |
CN112348896B (zh) * | 2020-11-27 | 2024-07-09 | 中船鹏力(南京)大气海洋信息***有限公司 | 一种vts***中目标标签自适应布局的方法 |
CN112995540A (zh) * | 2021-03-01 | 2021-06-18 | 北京秒针人工智能科技有限公司 | 一种基于在线数据的图云生成方法和*** |
CN113378512B (zh) * | 2021-07-05 | 2023-05-26 | 中国科学技术信息研究所 | 一种基于自动标引的无级动态演化主题云图的生成方法 |
CN114416945A (zh) * | 2021-12-30 | 2022-04-29 | 北京火山引擎科技有限公司 | 一种词云图显示方法、装置、设备及介质 |
CN114995708A (zh) * | 2022-06-09 | 2022-09-02 | 北京火山引擎科技有限公司 | 一种图像展示方法、装置、设备、介质及产品 |
CN116643831B (zh) * | 2023-07-27 | 2023-10-13 | 城云科技(中国)有限公司 | Canvas绘制重叠文字的优化方法、装置及其应用 |
-
2014
- 2014-01-16 CN CN201410020352.3A patent/CN103778213B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN103778213A (zh) | 2014-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103778213B (zh) | 一种基于占用矩阵的词云图可视化方法 | |
CN103092954B (zh) | 用于文档导航的低分辨率占位符内容 | |
CN105723358B (zh) | 用于交互式站点与应用的自动转换的***和方法 | |
US9436673B2 (en) | Automatic application of templates to content | |
US11989662B2 (en) | Methods and systems for base map and inference mapping | |
CN102129453B (zh) | 以图文并茂方式显示搜索结果的显示控制装置及其方法 | |
CN109657204A (zh) | 使用非对称度量学习的自动配对字体 | |
Nocaj et al. | Organizing search results with a reference map | |
KR20120054750A (ko) | 선택적 디스플레이를 위한 방법 및 장치 | |
CN110033054A (zh) | 基于协同笔画优化的个性化手写体迁移方法和*** | |
EP2068251A2 (en) | A method of content adaptation for electronic displays | |
CN109859109B (zh) | 一种系列比例尺pdf地图无缝组织与显示方法 | |
WO2011136766A1 (en) | System and method for automatically providing a graphical layout based on an example graphic layout | |
CN106605194A (zh) | 语义卡视图 | |
CN109144504A (zh) | 基于d3的数据可视化图形生成方法及存储介质 | |
US9811505B2 (en) | Techniques to provide processing enhancements for a text editor in a computing environment | |
KR101338397B1 (ko) | 사용자 고유의 필적 생성 시스템 및 그 방법 | |
CN106650720A (zh) | 基于文字识别技术的网上评卷方法、装置及*** | |
Isenberg | Visual abstraction and stylisation of maps | |
CN104346046B (zh) | 三维仿真翻页方法及*** | |
US11829703B2 (en) | Parallel object analysis for efficiently generating layouts in digital design documents | |
CN104216635B (zh) | 上屏信息的获取方法及装置 | |
Riehmann et al. | The NETSPEAK WORDGRAPH: Visualizing keywords in context | |
Zhang et al. | Creating word paintings jointly considering semantics, attention, and aesthetics | |
CN112256168A (zh) | 一种手写内容电子化的方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170215 Termination date: 20180116 |