干货|词云指北(下):字节跳动数据平台词云实践

玄魂 玄魂     2022-12-11     769

关键词:

本文通过调研学术、商业、开源三个领域词云相关的产品,对词云相关算法、产品进行从上至下的总结,帮助读者快速了解词云相关的算法发展,并希望总结出当前字节跳动数据平台词云发展的路线。 全文将分两次推送,第一篇专注分享词云算法的行业情况。第二篇介绍字节跳动数据平台词云实践。

文 |橘子 from 字节跳动数据平台前端团队

DATA

前言

前文我们介绍了当下词云发展的情况,和行业内一些商业\\开源的词云项目交互体验。接下来我们将重点分享针对学术算法的调研和商业产品的总结,对字节跳动数据平台词云发展的一些体会和当下的实践。

DATA

发展方向探讨

Geo Word Cloud

目前业界和开源并没有可用的地理词云生成工具,属于空白领域。

可能会遇到的问题:

  1. 是否有价值。地理词云的输入是地理坐标和标签,生成的词云可以展示标签在不同地理位置的大致分布,是否有合适的业务场景和应用价值?可能在 GIS 相关的项目中比较有应用前景,可以方便的将 GIS 系统中的地理和标签数据直接可视化出来。

  2. 算法效率低。计算上需要使用 K-means 、PCA(主成分分析),再加上放置单词时在传统词云算法的基础上需要额外考虑地理信息等,运算复杂度高。原论文(2016年)的 python 实现一张大数据量的图(上图)需要 30min。通过 简化/优化算法 应该能提高速度,但随着数据量的增加,效率依旧较低。

  3. 输入要求高。如果用户输入的地理点和标签密度较小,生成的词云会很稀疏、难看。

Shape Word Cloud

开源领域没有提供一个 有效/好用 的形状词云库实现。


我们可以在 Shape Wordle 算法的基础上,实现一个算法简化版本的形状词云:

  1. 放弃需要大运算量的基于 distance field 的形状感知螺旋线的算法,使用简单的螺旋线算法实现。

  2. 最好能够保留纯前端的图形分割,对每个 独立的图形/切割后的图形 进行独立的螺旋线算法可以极强的提高结果的美观度。

  3. 保留二次填充算法。在核心单词布局完之后,使用二次填充可以提高用户对图形的感知程度。此处可能会算法效率问题,特别是在跨端上会有问题。

但这样的缺点是:

  1. 二次填充算法是良好效果的基础,但一定会有效率问题。或许会导致其很难应用在性能较差的移动端。

  2. 能否找到效率和效果都比较合适的前端图形分割算法库。

词云创作工具

无论开源界还是商业上,都没有一个 方便编辑且美观的形状词云的生成工具。WordArt 和 微词云等工具编辑逻辑只能固定少数单词,非固定词每次算法运行位置都会发生改变,难以进行复杂的便捷操作。同时词云创作工具的应用场景和用户群体非常丰富,可以推动一个开源且好用的词云创建工具。

在上文简化版 Shape Wordle 算法的基础上,引入刚体力学的编辑方式,并以此为基础搭建一个设计工具。可能会遇到的问题:

  1. 纯前端的分词和词性还原。WordArt 分词是纯前端计算,对于英文来说,需要进行词性还原,对于中文来说,需要有效的分词工具。这两者在前端的落地均可能遇到一些问题。

  2. 其他算法上的问题跟 Shape Word Cloud 会遇到的问题一致。

图云方向

对于拼接效果非常完美的图云(如下图所示)一般需要较为复杂的图形学计算。下图为设计师设计的图云(网络素材)

较为前沿的算法生成的图云可以做到几乎完美接近设计师结果的紧凑度,下图为 Pyramid of Arclength Descriptor for Generating Collage of Shapes 论文的运行结果。

但其生成算法的复杂度极高,在使用 GPU 并行加速的前提下,完成上图使用了60min+,显然是对于纯前端库是很难接受的。

故图云的初步方向大概为:

  1. 将图片视作简单的矩形 或 多边形,直接采用螺旋线算法进行拼接。其生成结果一般会有紧凑性的问题,但具有可接受的速度。

  2. 引入力导向布局的概念。首先使用螺旋线算法对图云进行初步布局,然后引入力导向将布局好的图云进一步拉紧,提高紧凑度。

  3. 这两种方式都可以在可接受的速度下提供一个较为初级的图云实现。

DATA

数据平台形状词云实践‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

综合上述调研,我们首先探索了形状词云在 字节跳动数据平台业务中的落地。考虑到前端对性能的限制,需要在算法复杂度和可视化效果之间做取舍和平衡,我们在学术界诸多成果的基础上,设计并实现了符合 字节跳动数据平台业务需求的自研形状词云布局算法

该算法已经在字节跳动数据平台内部产品中实现落地,我们这里以一个实际业务场景举例展示算法的效果。

抖音电影指数这个业务场景中,会使用词云来展示有关于各个电影的相关评论数据词云,以向用户传递大众对该电影的观点,如下图所示:

上图中使用了一个相对基础的词云,仅能表现评论中的词频信息,并且每个电影的词云大多相似,没有具有电影相关的特色信息。

(下述中图片数据来自于无版权网站,文字数据由代码随机生成,文字位置为算法自动生成)

如果电影是相关人物的传记,那我们可以采用相关人物的剪影来突出电影特色,输入图形:

构建形状词云:

目前构建的形状词云能够在保证词频数据传递的准确性的基础上,自动构建出视觉效果良好的形状词云,可以更好的展现不同词云应用场景的特点。

甚至对于文字轮廓这种非常复杂的形状,我们也能实现一个良好的效果,输入图形:

构建形状词云:

此外,在更复杂、细节更多的形状中也实现了维持良好的视觉效果,输入图形:

构建形状词云:

也可以使用更随机的单词角度来表现摩托车手的“自由感”:

形状词云作为一个基础图表,我们提供了非常丰富的 API 来给字节内部使用者打造非常自由的创作空间。对于不想花时间配置复杂参数的用户,我们也引入了多种自动化算法根据用户的输入数据自动生成合适的配置,最少仅需三个属性(数据、文本对应的 key、形状图片) 即可生成效果良好的形状词云。

同时,有效的自动化算法也可以扩展形状词云的应用场景,例如在上述电影指数场景,用户不需要针对每个电影的数据量和形状对参数进行调节,依靠自动化算法可以生成相对合适的参数,从而减轻了大量使用形状词云的配置负担。

另外在词云动画效果上我们进行了精雕细刻,设计了不同的入场效果,比如位移动画:

渐变(同时改变字体和透明度):

未来,我们将会持续探索形状词云细节算法的优化,以及探索在性能可接受前提下图云相关算法的落地。

相关阅读:

观点|词云指北(上):谈谈词云算法的发展

团队介绍

字节跳动数据平台前端团队

在公司内负责大数据相关产品的研发。我们在前端技术上保持着非常强的热情,除了数据产品相关的研发外,在数据可视化、海量数据处理优化、web excel、WebIDE、私有化部署、工程工具都方面都有很多的探索和积累。接下来本文还将介绍数据平台前端团队自研的简单、易用、跨平台、高性能的图表库与图表研发框架。

- End -

字节跳动在异构场景下的高可用建设实践

字节跳动有众多的APP和服务,如何用混沌工程的方式保证这些系统和服务的高可用?本文详细介绍了字节跳动混沌工程技术的演进和系统高可用建设实践。本文主要为大家介绍字节跳动在高可用建设上的一些思考和落地... 查看详情

字节跳动埋点数据流建设与治理实践

本文将介绍字节跳动在埋点数据流业务场景遇到的需求和挑战以及具体实践。文|石伟 来自字节跳动数据平台开发套件团队出品| 字节跳动数据平台埋点数据流埋点数据流在字节跳动埋点数据流主要处理的数据是埋点,埋点... 查看详情

alluxio2022技术干货年终大赏

2022,我们积累了很多应用案例,邀请了很多嘉宾参与了我们的社区直播活动17场主题活动(AlluxioDay、Meetup、DatafunSummit等)44位嘉宾44个主题(来自一线大厂的实战者)2000+分钟的分享时长(内容涵盖... 查看详情

字节跳动嵌入式数据分析最佳实践

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群商业智能(BI)已经广泛被应用到用户实际业务过程中,如果BI作为独立应用平台应用,那么用户在日常使用业务系统(比如CRM/ERP/OA等)... 查看详情

从clickhouse到bytehouse:实时数据分析场景下的优化实践

近日,字节跳动旗下的企业级技术服务平台火山引擎正式对外发布了ByteHouse。在打造ClickHouse企业版ByteHouse的过程中,我们经过了多年的探索与沉淀,今天和大家分享字节跳动过去使用ClickHouse的两个典型应用于优化案... 查看详情

字节跳动基于doris的湖仓分析探索实践

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群Doris简介Doris是一种MPP架构的分析型数据库,主要面向多维分析,数据报表,用户画像分析等场景。自带分析引擎和存储引擎,支持向... 查看详情

字节跳动火山数据中台在抖音头条的实践

...设,并在业务领域取得了响当当的成效。比如,字节跳动 查看详情

分布式链路追踪在字节跳动的实践

综述字节跳动在发展过程中,逐渐形成了十分复杂的超大规模微服务体系,对后端整体的可观测性解决方案提出了极高的要求。为了解决这个问题,基础架构智能运维团队自研链路追踪系统,将海量Metrics/Trace/Log数据进行整合与... 查看详情

presto在字节跳动的内部实践与优化

引言在字节跳动内部,Presto主要支撑了Ad-hoc查询、BI可视化分析、近实时查询分析等场景,日查询量接近100万条。功能性方面完全兼容SparkSQL语法,可以实现用户从SparkSQL到Presto的无感迁移;性能方面实现JoinReorder&#... 查看详情

字节跳动数据库的过去现状与未来

一文概述字节跳动云原生数据库系统的发展作者| 张雷(字节跳动-基础架构-数据库资深研发工程师)数据库技术一直是信息技术中极其重要的一环,在步入云原生时代后,云基础设施和数据库进一步整合,弥... 查看详情

字节跳动推荐平台技术公开,项亮:底层架构有时比上层算法更重要

允中发自凹非寺量子位报道|公众号QbitAI字节跳动已正式吹响进军云计算市场号角。12月2日,火山引擎全系列云产品亮相,共推出了78项云产品服务,涵盖云基础、视频及内容分发、数据中台、开发中台、人工智能等五... 查看详情

presto在字节跳动的内部实践与优化

引言在字节跳动内部,Presto主要支撑了Ad-hoc查询、BI可视化分析、近实时查询分析等场景,日查询量接近100万条。功能性方面完全兼容SparkSQL语法,可以实现用户从SparkSQL到Presto的无感迁移;性能方面实现JoinReorder&#... 查看详情

编程实践系列:字节跳动面试题

字节跳动面试题面试3轮技术面+1轮HR整体分三大块:项目经验计算机基础编程题(每轮一题)项目经验架构+业务做了什么核心设计优化解决了什么难题体现思考业务理解架构设计能力项目需求设计demo:如何... 查看详情

一文了解字节跳动如何解决sla治理难题

动手点关注 干货不迷路 👆基于字节跳动分布式治理的理念,数据平台数据治理团队自研了SLA保障平台,目前已在字节内部得到广泛使用,并支持了绝大部分数据团队的SLA治理需求,每天保障的SLA链路数量过... 查看详情

字节跳动面试分享:java编程思想百度云

缓存雪崩缓存雪崩指的是Redis当中的大量缓存在同一时间全部失效,而假如恰巧这一段时间同时又有大量请求被发起,那么就会造成请求直接访问到数据库,可能会把数据库冲垮。缓存雪崩一般形容的是缓存中没有而... 查看详情

提速10倍!深度解读字节跳动新型云原生sparkhistoryserver

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群前不久,在6月29日Databricks举办的Data+AISummit上,火山引擎向大家首次介绍了UIMeta,一款致力于监控、分析和优化的新型云原生SparkHistory... 查看详情

火山引擎进军云市场,计划未来三年服务十万客户

12月2日,火山引擎在升级为字节跳动企业级技术服务业务板块之后,首次亮相就正式发布全系云产品,包括云基础、视频及内容分发、数据中台、开发中台、人工智能等五大类、共计78项服务。火山引擎云产品是字节... 查看详情

2021年你与字节跳动只差这份笔记,绝对干货

概述想了很久怎么样可以让文章的标题不那么悲观,但是各种文案都在我脑海里面不断的被否定,要么是不那么抓眼球,要么是立意不匹配。最后想了想,这个标题是真的符合我最近的感悟。希望看过文章,... 查看详情