Press "Enter" to skip to content

雪球知识图谱的构建及应用

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

导读:雪球算法团队以搭建股票/基金领域最高效的算法平台为目标,利用知识图谱、预训练模型、文本向量等算法技术持续为用户分发优质内容, 通过信息创造价值,帮助投资者提高投资决策的效率。本文介绍了雪球算法团队在金融知识图谱上的相关工作,以及在内容搜索、标的搜索和推荐场景下的相关应用。全文由四部分组成:

 

背景介绍

 

雪球知识图谱构建

 

知识图谱应用

 

工业落地和思考

 

 

一、介绍

 

1.1 雪球介绍

 

雪球成立于2010年,通过高黏性的投资社区牢牢抓住高质量用户入口,构建了权益投资市场独特的内容和用户生态。从社区出发,雪球为中国投资者提供跨市场跨品种的免费行情资讯和便捷高效的股票、基金和私募交易服务,构建了「投前决策-投资交易-投后陪伴」的全流程服务链路。雪球以连接人与资产,让财富的雪球越滚越大为使命,在投资社区领域处于领先地位。

 

 

1.2 知识图谱构建背景

 

在日常的算法实践中,面临着如下诸多的挑战:

数据孤岛,联合查询耗时费力: 基金、股票、文本等各类数据分布在不同的集群中,跨集群/跨表查询面临着诸多困难,耗时耗力,延误各业务的迅速开展。
结构化查询需求增加: 用户对于产品的结构化查询需求,在以往的雪球搜索服务中难以被满足,且原有信息展示位置诸多,用户查找费时费力。
数据粒度不统一: 数据存在不同的粒度,难以统一使用,需要结合实体链接、实体消歧等诸多手段才能实现数据的可用性。
业务涉及关系深度查询和推理: 在雪球业务场景下,商品/文本背后隐含的逻辑关系需要借助于算法服务进行深度的查询与推理,如:同类型股票相似性挖掘等。
业务对实时性的要求较高: 在搜索和推荐场景下,耗时要求非常严格,算法团队需要提供实时性的服务才能满足用户的需求。

为了更好的服务雪球的相关业务线,将 商品-标的-文章-用户 有效的结合起来。雪球数据算法团队利用相关算法及大数据工具,围绕股票/基金/文本等相关内容数据,建立了雪球知识图谱,该图谱为各个业务场景提供可靠的数据服务,并赋能内容分发,进一步推动核心数据算法的落地。

 

二、雪球知识图谱构建

 

2.1 雪球知识图谱介绍

 

 

为满足不同场景下对于股票/基金等金融知识的需求,我们结合雪球业务场景进行深入的梳理和结构化的知识建模,围绕基金、股票、文章、概念、场景之间构建知识关联,建成金融服务领域大规模的知识图谱,图谱的知识结构示例如上图。

 

整体规模上,雪球知识图谱包含千万级别的节点和边、数亿属性,对股票/基金类/财经类知识有全面的覆盖和精准的刻画。

 

涵盖知识的类别上,雪球知识图谱包含:场内基金、场外基金、私募基金、A股、港股、美股、行业板块、概念板块、股票事件、上市公司、公司公告等十余类节点、持有、链接、管理等多类语义关系,可为金融类业务的发展提供丰富的结构化知识。

 

功能上,雪球知识图谱,在基金类业务、股票类业务、平台类业务等诸多业务线上可发挥其巨大的潜力,可支持搜索系统、推荐系统、NLP等诸多算法类业务的持续发展。

 

2.2 雪球知识图谱的结构设计

 

 

在设计雪球知识图谱的结构时,针对于不同的业务,我们从知识的覆盖面、知识的整体建模、服务的通用性上全盘考虑,设计如上图所示的结构。整个知识图谱被构筑为两层:本体层与数据层。考虑到雪球具体业务场景下对于可靠金融知识的需求,本体层作为知识图谱的骨架,围绕着人物、机构、标的、文章等进行建模并构筑层级关系,容纳了各场景所需的数据概念。而数据层作为真实的数据记录,以节点的形式容纳了雪球场景下基础的实例信息,以边的形式构建了各个节点间真实的金融关系。针对于雪球业务的特点,整体雪球知识图谱以多层级、多维度、跨业务的形式,对客观的金融知识进行建模,并服务于诸多场景之中。

 

构建完成后的雪球知识图谱具备如下特点:

知识粒度统一: 在不同场景下,“知识”的粒度会有所差别,需要对各个不同颗粒度的商品进行理解和容纳。该方面,我们首先对整体的知识粒度进行详细的划分:基本词汇粒度;标准产品粒度;产品类目粒度;业务需求粒度;实际的构建时,对各个粒度进行统一的考虑,以标准产品粒度为基础构建节点,来实现知识的高度可用性;以基本词汇作为节点下辖属性,以便于知识图谱的细粒度查询;以产品类目和业务需求为本体,建立标准产品间的层级关系,对知识进行统一的管理。统一的知识粒度将客观的图谱知识向上关联至实际业务,向下关联至节点、属性层面,使得雪球图谱可以提供统一的服务。

以“泰达宏利新兴景气龙头混合A”为例,该粒度作为标准基金产品,是用户对于基金的最直接且最小的基本单位,在这一层级上,我们围绕基金主体的客观知识进行建模,例如基金产品都会具有基金代码、成立时间、基金规模、基金名称等属性。其下为基金词汇,存储了对基金特点进行描述的基本单词,如“泰达宏利、王鹏、新兴”。而其上的产品类目,如“混合型基金、货币型基金”、“公募基金、私募基金”等,以客观的方式对基金领域的品类进行建模,承载了用户对于基金类别的认知。 相比于产品类目粒度,业务需求粒度会依据业务当前的发展阶段进行人工定义和调整,会根据当前业务阶段的特点和需求建立对应的业务类别。

不同场景知识互联: 在不同场景下,“知识”的种类各异,各场景下知识的“互联”是雪球知识图谱的一大特色。面临基金、股票、文本等在各个业务中相互割裂、互不相同的问题,整个知识图谱以多关系异质图为结构。雪球知识图谱在构建时,通过引入基金与股票之间的持仓关系、基金公司/基金经理与基金的管理关系、股票与板块之间的对应关系、上市公司与股票间的对应关系、股票与股票事件的发生关系、文本与股票/基金之间的相关关系等诸多关系,实现知识的互联,完成各个业务数据在知识图谱中的集成,打通业务数据和客观知识之间的壁垒,提供更加全面的跨业务的全景数据视角。同时,图谱以通用接口的形式对业务进行统一的服务。雪球知识图谱覆盖了股票、基金、文本等多维度知识,未来还将容纳多模态的知识。不同场景知识的知识互联带来新的业务价值,产生创新机会,例如在基金销售场景下,知识图谱蕴含着“股转基”的价值机遇,通过为具备股票投资偏好的用户推荐关联的基金产品,进一步为用户的投资决策提供更全面的信息。

2.3 雪球知识图谱构建过程

 

在知识图谱构建过程中,雪球对工业知识图谱建设进行了深入的探索,建立了工业化的数据生产流程和质量规范。该部分对雪球知识图谱的数据来源、数据生产、数据维护等构建过程进行说明。

 

2.3.1 知识图谱的数据来源

 

雪球知识图谱基于各业务线的实际需求,主要包含两方面的数据:结构化的专家知识与非结构化的自生产知识。

 

结构化的专家知识:该部分知识主要包含基金、股票、公司等标的的详细信息/行情等知识(如下图所示),通过专业的数据生产团队来维护,由相关专业同事维护相关节点的概念与详细信息,具备较高的数据质量。

 

 

非结构化的自生产知识:该部分的知识则来自于算法团队内部,通过各类算法模型进行生产,生产数据通过审核验证后加入知识图谱,示例如下。

 

 

2.3.2 知识图谱的数据流程

 

雪球知识图谱的数据类别繁多,各类别知识的生产流程与周期不同,涉及业务、算法、数据各个团队。经过一段时间的磨合与探索,雪球建立了工业化的数据生产导入流程和质量规范。

 

 

整体的数据生产流程由数据同学进行负责,数据同学利用相关组件对专家知识、自生产知识进行汇总与加工,并建立基础的hive表,同时负责整体数据导入知识图谱。

 

算法数据的生产、知识图谱的使用与开发由NLP负责,基于知识图谱进行相关搜索应用、NLP算法的开发等,通过搜索意图识别、Text2SQL等技术实现知识图谱的使用。

 

2.3.3 知识图谱维护与监控

 

知识图谱服务需要保证数据的数量和质量的稳定性与可靠性,着重考虑的知识图谱维护工作如下。

 

知识图谱的应用场景较多,在知识图谱的维护方面,数据的有效性的维护是重中之重。雪球知识图谱更新频率最高的部分是行情数据,该部分数据用于线上搜索卡片的展示。考虑到数据的有效性,雪球知识图谱从源头着手进行数据的更新与维护,有效的保障了线上线下数据的一致性与有效性。整体数据的维护周期也缩短为小时级别,有效保障了知识图谱的质量。

 

 

为了保证知识图谱的高可用性,知识图谱数据质量与数目监控是知识图谱构建过程中不可或缺的一环。在生产侧,雪球对知识图谱的数据生产流程中的数据准确性/完整性进行校验,对数据生产调度任务进行全面的监控和告警;在使用侧,完成定时对知识图谱的节点、关系数目的double check,并利用源头数据定期与知识图谱数据进行比对,从而实现雪球知识图谱的全流程的监控,可以让图谱服务一直保持高可用状态。

 

2.4 图数据库选型

 

为了保障知识图谱的存储并支持大规模线上的服务,我们在构建图谱的伊始就对知识图谱的存储方式与服务方式进行了思考。出于对可维护性、存储稳定性、图谱查询服务高可用等多方面的考虑,着重调研了市面开源的多款图数据库:Neo4j、Nebula、Jenus等。通过选型和对比,最终选用图数据库Nebula存储知识图谱。Nebula Graph 是一款开源的、分布式的、易扩展的原生图数据库,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。

 

 

在查询服务上,Nebula图数据库也证明了其强大的性能。实际的线上知识图谱查询服务,基于其原生nGQL的查询支持高并发的同时,整体耗时维持在10ms左右。实践证明雪球知识图谱+图数据库Nebula结合可完全在线上发挥其强大的能力。

 

三、知识图谱应用

 

知识图谱在雪球场景的应用中,主要以两种服务形式进行应用:基于知识图谱的查询服务和基于知识图谱的算法服务。下述内容以雪球知识图谱搜索、前端卡片展示为例,阐述知识图谱的典型应用。

 

3.1 知识图谱搜索服务

 

雪球知识图谱搜索是知识图谱应用的最基础的形式,也是知识图谱查询的典型应用。旧有雪球搜索主要为用户提供帖子类的搜索结果,无法有效的匹配用户结构化查询的意图,搜索结果无法完全满足用户实际需求。同时,原有的数据查询与使用方式较为复杂,往往需要编写大量的查询语句,费时费力且无法进行各类知识的联合查询。雪球知识图谱查询为上述问题提供了对应的解决方案,一方面解放生产力,利用知识图谱查询解决了原有数据查询繁琐的问题;一方面,满足了用户精准搜索的结构化数据的需求。

 

雪球知识图谱搜索系统可以分析用户的搜索意图,并将查询query转换为对应的查询语句,执行知识图谱查询并返回结构化的查询结果。该服务的构建主要包含两部分:搜索意图识别模块(意图理解引擎)、query转写模块。意图识别模块负责识别搜索的具体意图,query转写模块可以将对应的搜索query转化成知识图谱查询语句进行查询,整体流程如下:

 

 

在构建搜索意图识别模块时,设计的意图理解引擎如下,通过规则引擎进行基础的意图识别,提升识别的速度,保障服务的低耗时;同时引入深度学习理解引擎,对意图识别模块进行结果泛化性能的提升。

 

 

在实践中,具体的意图匹配使用正则以及相关的语法模版来完成识别,针对大量正则引起的耗时问题,使用DFA进行正则匹配,保障了整体服务的耗时。同时,探索利用中控模块在未来解决深度学习理解引擎与规则理解引擎协同匹配的问题,最终的流程如下图所示。

 

 

通过上述方案,我们开发了多意图知识图谱查询功能,支持不同类型的自然语言搜索(支持功能如下所示),知识图谱与搜索相结合,为用户提供更加丰富的查询功能,提升用户搜索体验。

 

 

3.2 雪球搜索前端卡片展示

 

对于财报类搜索query,用户搜索意图明确,希望获取财报数据,查看股票在指定时间段内表现,辅助决策交易。以往雪球财报类query搜索结果页,召回query相关帖子,信息呈现较为松散,用户需多番搜索,筛选、逐个点击方能获取足够的财报信息。雪球知识图谱以结构化方式呈现财报数据,提升用户信息获取效率,提升财报季期间用户的搜索体验,该功能将在雪球APP 13.21版本发布。

 

同时,前端卡片作为知识图谱在业界最基础的应用,也是知识图谱在雪球落地的最主要场景之一˙。以雪球搜索财报卡片展示为例,雪球知识图谱通过对财报类搜索意图进行判别,并结合搜索query与股票的相关性进行财报卡片的展示,如下图所示,知识图谱可以直接将对应的财报进行返回和展示,满足了用户对财报信息的搜索需求。

 

 

3.3 结合知识图谱的预训练语言模型

 

预训练模型BERT 的出现推动了自然语言处理任务的发展,使得各个任务可以共享一个底层的通用嵌入表示,大幅提升了自然语言处理领域各任务的模型精度,在许多自然语言处理任务上都达到了SOTA(state of the art)的表现,成为了自然语言处理领域新的里程碑。同时,BERT显着地减轻了NLP算法工程师在具体应用中的繁重工作。过往的雪球算法往往使用通用领域的预训练模型来进行日常算法的开发与落地,有效但领域不适配,金融领域的预训练模型可以为各项任务应用带来显着的性能提升,也能进一步的改善用户体验。

 

 

结合雪球知识图谱,算法团队推出了金融领域预训练模型SnowBERT,并基于SnowBERT结合SimCSE搭建了语义向量/语义检索服务,下面对领域预训练部分进行阐述。

 

数据部分,利用知识图谱中的研报/公告等文本数据结合雪球平台的其他类文本数据构建了雪球金融文本数据集,包含近百亿token,文本来源涵盖股票微博/财经新闻/上市公司公告/研报/上市公司资料等。同时,利用知识图谱中的基金/股票数据在数据集中进行同类替换和随机替换,进一步扩充训练的数据;增加通用文本采样,使得模型具备泛化性能。

 

预训练任务设置为MLM和SOP任务进行预训练。并在训练阶段使用了全词Mask的方式,对SnowBERT预训练模型进行了充分的训练,从而使模型能够学到领域知识。

 

SnowBERT在语义匹配任务和基金分类任务等诸多算法任务上均进行了应用,优异的性能也大幅提高了相关任务的指标,以语义匹配任务为例,SnowBERT与基础BERT模型在召回指标上提升8%。

 

3.4 未来展望

 

未来,在雪球知识图谱的相关工作,将从如下方向进行:知识图谱的内容可进一步扩充,并进一步的打磨知识图谱搜索的相关功能;知识图谱在深度学习任务方向上的应用亟待突破,图谱算法落地方面需要投入更多的精力与思考,如在知识图谱结合预训练模型的方式上进行探索,使得知识可以参与指导模型训练,让算法真正能和图谱互相促进。

 

四、工业落地思考

 

在知识图谱飞速发展的今天,知识图谱构建已经不再是企业使用知识图谱的掣肘,但是如何将知识图谱落地于公司的实际场景中,使其发挥应有的潜力一直困扰着相关的从业者,知识图谱在工业界落地方式的探索也愈发显得急迫。在对雪球知识图谱的探索中,我们也针对这个问题进行了深入的思考,下文是我们的一些想法与思考。

 

为什幺要用知识图谱?首先,图谱中存储的都是图结构的知识,蕴藏着丰富的信息,通过图挖掘可以获取隐含知识;其次,图谱的知识基本上是事实,数据质量优秀,无须数据加工可直接用于相关应用场景;此外,图谱数据结合语义模型成为主流的一大趋势,以ERNIR3.0为主的模型在工业上的落地让知识图谱的价值更加凸显。

 

由于雪球各业务产生的数据蕴含着比较大的挖掘价值,同时图数据库的出现使得知识图谱在线上参与服务成为可能,两相结合可以更好存储、利用雪球的结构化数据,同时图谱也带来了新的应用场景。

 

知识图谱以何种方式落地?通用的图谱落地方式一方面是直接进行查询和推理,另一方面则是结合深度学习进行隐含知识的挖掘。沿着这两个思路,结合应用场景的具体需求,可以在知识图谱搜索场景直接查询相关知识,或在知识图谱预训练、知识图谱推理等场景下构建知识隐含模型。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。