logo

基于NLP的产业链构建及应用

作者:珍珠科研号2021.10.22 11:54浏览量:582

简介:金融领域NLP知识图谱

分享嘉宾:毛瑞彬 深圳证券 数据中心副总监
编辑整理:谢芝玲 米哈游 平台组
图片.jpg

导读:产业链是一种金融领域NLP知识图谱和大数据多领域知识的一个综合应用,是金融科技时代服务、证券审核、融资以及区域经济发展以及招商的一种重要工具。本文的主要内容包括:① 理论与知识;② 架构与流程;③ 关键方法;④ 应用及示例,会比较偏向宏观和工程化。


01 理论与知识

1. 产业链的背景与驱动力

本质上产业链系统构建的驱动力,就是金融证券领域的价值发现和风险识别。随着互联网+和政务数据开放的发展领域,金融证券领域的数据全面丰富,行业应用也从小数据人工线下慢慢发往数字化发展。

产业链代表性的场景有三类:

  • 第一类是以交易所或者是证监会为代表的监管应用产品,包括IPO审核、上市公司监管,债券监管;
  • 第二类是以银行、券商为代表的金融市场服务,包括标的筛选、借贷管理、风控管理;
  • 第三类是以地方政府和招商局为代表的区域经济发展的应用场景,包括产业升级、招商、企业扶持等等。

实际上,这些典型的应用场景与国家防范金融风险、发展实体经济的政策都是一脉相承的,它的本质就是价值的发现和风险的识别。因此,如果说单个企业的价值和风险是个微观视角的话,那么行业或者产业的价值发现和风险的识别,应该是一个更为宏观或者是说更重要的一个层面。因此,实现产业链数字化,实现可阅读、可查询、可计算,进而服务于应用场景,是目前比较迫切的一个需求。

图片.jpg

2. 产业链的起源与发展

人类的起源就是源于群居者之间的分工,马歇尔曾经提出统一将生产部门的小型工业集中在某个区域互相协作,从而形成了产业。接下来,波特所写的《竞争优势》中提出了产业结构和生命周期的理论。随着全球化金融资本的发展以及国际政治形势的变化,中国成为了全球为数不多的全产业链国家,保障产业链供应安全也是近期国家关注的问题之一,因此,产业链是近几年热议的话题。

图片.jpg

3. 产业链的行业现状和建设目标

在金融的监管领域,包括穿透式监管和分行业监管,都是需要对产业和行业进行深入的了解,而在二级市场,虽然分行业进行研究和投资已经有着非常成熟的模式,但是这一部分的工作大多还是依赖于人工,由研究员或者专家所完成。因此产业链系统的构建已经在证券领域有了一定的发展。

当前的产业链产品主要面向二级市场的投顾、投研和风控,面向全市场的比较少。而且主要面向行业分类,或者上下游热点概念,从行业和公司的维度描述,因此,对于上述三个应用场景支持比较局限。

图片.jpg

基于这些问题,我们提出了对于产业链的新的建设目标,应用自然语言处理和软件工程思想,基于国民经济行业分类、投入产出表等等,构建一个从产业、行业和企业角度出发,多层次、多维度的产业链知识图谱,为监管、投融资、招商等应用提供较为全面的服务。详细来说,我们的建设目标可以从三个层次上来理解:

从产业层面上来说,主要需要了解产业链完整的视图、产业链的发展、上中下游重点细分行业、核心监管机构等要素;从行业层面来说,需要了解上下游和替代行业的发展情况,以及本行业的规模竞争格局;从企业角度来说,通过可比公司的重点财务数据,结合产业链细分行业价格、销售或者融资情况,了解企业的发展前景。

图片.jpg

02 架构与流程

依照上一章所提到的建设目标,对产业链整体架构进行设计,包括建设路径、系统架构和自动构建的流程。

1. 建设路径

与大部分的知识图谱的构建路径基本都是一致的,主要分为四个步骤,包括搜集资料数据、研究并建立框架、自动构建,最后,如果是工业化的话,肯定还需要对产业链的数据做人工审核。

首先,产业链数据的主要来源包括上市公司的公告、第三方的研究报告、重点行业的网站的新闻,还有一些行业数据等等;框架主要参考券商研究的模式(实际上也是波特提出的研究模型),包括刚才说的产业、行业、企业三个层次,详细的框架体系会在下一章进行说明;自动构建的程主要基于NLP的技术,从原始数据中进行抽取和实际的填充;最后通过人工审核,实现数据和系统的可用性。

这四个步骤需要经过多轮迭代、多次迭代,是一个循环的过程,经过这些过程,最终就能够建成一个比较完善的产业链知识图谱。

图片.jpg

2. 系统架构

① 本体设计

产业链本体的设计/框架的第一个层级其实就是一个产业,因为单条产业它本身并不是孤立的,它也是和其他的产业交融在一起的,所以我们把它与其它产业一起画成了一个环形图。然后产业中会根据国民经济行业分类、上市公司的主营业务等,结合应用场景,构建一个五到六级的行业分类,也就是说,每个产业下面又有一些行业,再根据细化的行业分类力度,将这些行业以上中下游的形式组织起来。

产业是行业的集群,每个产业里面包含了上游中游和下游的行业,是由多个相近、相似或者是产生实际交易的行业所组成的。其中,中间的上中下游的示意图是从产业出发所画的,上游行业需要成本占比较大或者技术含量较高,例如生产资料;中游行业一般是制造研发;下游是销售服务。最右边的上中下游示意图是行业和商业角度,右下角则是单个行业一些要素的描述,这两块本体设计比较抽象,后面会有实例帮助理解。

图片.jpg

② 计算层和知识层

在计算层,我们会从新闻报道、研报或公告中识别行业上下游公司、销售数据,并将这些识别的数据进行实体融合,再将结果与相关联的数据一起存储到图数据库或者搜索引擎中,那么这些数据作为分类库的实例化数据就会一起形成产业链制度,最后,针对不同的应用场景,我们提供不同服务。

图片.jpg

3. 自动构建

自动构建的流程也分为多个步骤。

  • 首先,因为公告研报和行业报告大多数都以PDF形式存在,所以我们需要对这些文件进行格式转换和平台解析,把文件中不同的元素进行区分;
  • 接下来就需要对要素进行分类,把区分出来的元素分到不同的行业要素上去;
  • 第三步需要对行业及上下游进行识别。因为每个行业都存在大量不同的说法,这些不同说法实际上就是一个同义词。
  • 因此,第四步就是同义词识别,我们需要将识别出的行业实体对应到统一标准说法的行业上,同时构建一个词库,为了后面进行实际融合做准备;
  • 第五步,对行业要素进行结构化;
  • 第六步,识别出行业中的典型公司,这一步也是需要对实体进行对齐,包括公司和其它实体,最后将这些数据通过工作系统进行人工审核,并对数据进行校正,至此就完成了一个迭代过程。

从上述环节我们可以看到涉及了绝大多数的NLP算法,包括分类、相似度、NER、知识对齐、关系抽取等等。

图片.jpg

03 关键方法

这一章节中会介绍基础设施,以及自动构建的环节中的关键技术。

1. 基础设施

因为在实际工程中我们使用了很多自然言处理的算法,因此需要通用的工具来支撑,而基础设施的主要目的就是为模型任务提供平台和工具。其中,基础设施的算法架构是一个成熟的架构,主要是分三层:

第一层是算法框架层,主要是就是一些常见的深度学习的算法框架;

再往上是工具栈,实际上就是基本NLP处理工具,就是语言模型和文本处理工具栈,具体包括词法、句法、语义解析,或者OCR,PDF解析这些工具;

最上层是一些算法应用的开发。

图片.jpg

算法的研发,它也需要一个统一的平台进行管理和调度,这个平台主要是服务于研发和管理,提供一些抽象的一些通用能力,包括这些语言标注、算法的框架,刚才我在上一章所说的技术流程都在里面,然后包括建模工具。最后模型开发完成之后,还需要进行快速的进行部署、测试和发布,并且要分配环境和资源。

算法的流程化的管理和自动化的辅助实际上是构建这么一个快速应用的基础,能够让研发人员专注于模型的开发。机器学习平台是我们重要的一个基础设施。

图片.jpg

2. 关键技术

① 语言模型

在预训练时代,语言模型基本上是必不可少的,因为金融领域的语言特征和其他文本会有一些不一样,比如短句比较多,另外零指代、指代歧义的情况比较多。因此,为了适应各种应用的需要,我们面向新闻、公众号、研报这三个典型的文本使用word2vec和bert进行了语言模型预训练,为下游应用建立提供一些支撑。

图片.jpg

② 词法、句法分析

词法分析相对来说比较简单,在面向领域的文本分析中,预训练还是非常必要的,实际中就直接对文本进行标注,然后再进行序列训练,基本就完成了,下图中是我们做的一些比较早的评测;

如果你需要做句法分析,使用开源的句法不是特别好用,肯定是需要一个专用的句法模型的。因为句法分析的分词粒度和词法里的分词力度和标准都不一样。其次,证券领域有很多复杂的句式,如果使用通用的社会文本的句法,效果不会特别好。要解决这些问题,所以我们需要构建了一个领域句法分析。

当我们有了领域词法和句法分析,就能够统一用起来,后面就不用去映射,简单高效。

图片.jpg

③ 自动构建技术-篇章分析

第一步就是对文本进行处理,大多数的数据都是以PDF的形式存在,PDF里面主要是包括文本、表格和图片,文本又包括目录、章节和段落。解析的目标就是把这些文件中不同的元素给识别出来,首先就需要进行格式的转换。关于PDF的格式解析有很多开源和商业工具,这就不多说了。然后再对我们刚才说的这一些目标进行识别。针对文本,可以通过PDF的stream进行解析;难度更大的图或者表结构,可以通过一些复杂的规则,或者是可以一些图片处理的方法,比如目标检测来实现;另外,针对文本中的目标章节和段落,可以通过规则或者是分类的方法进行处理。这样的话就能够形成从目录章节和段落表格,到句子和字段这么一个粗粒度到细力度的处理的流程,最终实现整个文本的解析。

图片.jpg

④ 自动构建技术-行业要素分类

接下来进行第二步产业要素的分类。将上一步识别出的文本以段落为单位,分别归到不同的行业类别里,本质上这是一个文本分类问题(左边的图只是示例,简单的列了六类,实际上整个行业数可能有十多类)。

文本分类问题一般有两种方法:一种基于特征工程的分类,另外一种就是基于端到端的分类方法。针对这两种方法,我们也都做了一些尝试,目前来看,如果文本本身区分的边界比较模糊模糊的话,直接使用端到端进行分类可能不太容易,当然可以加一些规则。我们实际上使用基于特征工程的分类方法,首先运用上面提到的工具栈中的分词 公里进行NER识别,再进行特征的构建,最后再过分类器。对于行业要素的分类,构造的一般特征可以包括行业名称、指示词、特征词,可能再加上句法的特征,识别准确率就会比较高。

图片.jpg

⑤ 自动构建技术-行业和上下游识别

下一步就是行业和上下游的识别,这一步和下面的要素结构化,都属于关系识别,使用的同一种方法。模型借鉴了multi-head selection的思想,这是一种很早就提出的方法,最早的时候是使用RNN去做的,但是到现在我们可以做一些变化,可以用bert去做这个事情。除此之外,模型中的encode和decode层都是可以变化的,也可以用不同的网络去进行拼接,然后去做调优和对比。

这个模型实际上是应该是比较通用的一个模型,具体的过程:经过实体识别,模型decode的出来的特征就作为分类代表的embedding输入到下一层的关系分类器中,接着再通过一个softmax层,然后实现multi-head的selection。

图片.jpg

下图是行业和上下游识别的一个实例,对表格中的第一行的句子进行识别的话,得到行业是“聚酯化纤”,它是纺织、服装、汽车行业的上游。这一类的句子一般是从年报和公告中获取的,当包含这类信息的句子多了后,行业以及上下游关系基本上就可以零散地拼接出来,直至覆盖所有的国民信息行业分类体系。

行业识别中会有一些难点,例如针对纺织业的称呼,可能是“纺织业”,也有可能是“纺织”、“服装业”,直接抽取出别称的话,我们就需要将它们对应回“纺织业”上,这一类的问题需要后续对实体抽取结果做实体对齐,会在后面进行详细说明。

图片.jpg

⑥ 自动构建技术-要素结构化

接下来,针对上一步识别的结果,我们需要做要素的结构化,下图是要素结构化的实例。我们以市场规模作为例子,因为市场规模实际上是产业链支付里面一个比较重要的要素,市场规模的大小可以看出行业或企业在市场中是否有发展前景。对于例句,我们可以从中识别并结构化体外诊断这个行业2013年、2015年和2018年的市场规模以及对应的金额,接着我们就可以利用这个结构化信息,在后续发掘行业或者企业的时候,去判断识别它的发展空间。

图片.jpg

⑦ 自动构建技术-行业同义词识别

上面有提到需要进行实体对齐,那么在对齐之前,一般需要构成一个词库。当然也可以使用相似度,但是并不是唯一、也可能不是最好的解决方法。在工业场景下,词库的方法虽然会比较费劲,但是也通常会更有效,因此,针对这个问题,构建一个行业的同义词库还是非常有必要的。

目前我们所使用的是基于BPE,加上领域语言模型的模式。BPE主要是将平台出现的字符合并成序列或词,这种方法很好地解决了传统字典或者分词模型中未登录词的问题,但是它也会引入一些新的问题,这个需要再做一些任务,比如规则或者人工去做一些校对来进行解决。除此之外,使用BPE模型的另一个优点就是能够融入语境知识,这样的话们就能够获取到同义词。当然必要的时候需要最后加上人工筛选,通过这个方法是能够得到一个比较好的同义词库的。

另外就是将产业词向量化之后,基于领域语言模型,我们进行一个相似度计算选择,计算完之后,我们可以通过一些阈值再去判断结果,能找到相近的一些行业。

下图是一些实例,比如说防腐涂料行业,它可能会有代表性产品,比如卷材或者隔热涂料,聚氨酯涂料,这些代表性产品可以作为相近或者是相同的词语入到同义词库。这里说的相近和相同两个含义是不一样的,相同是指两个词语表示的意思相同,本身就是同义词,例如手机游戏和移动游戏。但如果是相近的话,可能两个词语代表的意思不一样,比如说防腐和卷材可能不同,但是它能够同时作为中游或者是原材料级别不同的相似行业,一方面可以作为这个行业的同义词,另外一方面还可以作为它的相近含义,去扩充我们的整个行业的词库。

图片.jpg

⑧ 自动构建技术-典型公司识别

得到同义词库之后,我们就在下一步就去做典型的公司识别,因为行业里面必须得有公司,最后应用的话,是需要落实到产业,行业和企业三个层次。

找到行业中的典型公司,实际上无论对于行业研究者或者是模型来说,都是一个比较大的挑战,主要是因为相关数据都零散地分布在各处。

比如说产品信息可能在出现在行业网站、电商网站,或者公告研报中。例如一个在线销售型的企业(例阿里巴巴或1688网站),它会按照某些产品或行业对公司进行分类展示,这个时候就可以去从网站上通过人工或通过其它方式去获取数据,但是同时,在公告或者研报里面也会有产品信息,此时就可以通过实体识别去把它给找出来。

第二类是公司信息,包括公司介绍和公司生产销售的产品,刚才是从产品维度去找公司,现在又是从公司维度去找产品,这些可以通过公司简介、公司官网,或者是新闻中的宣传稿,来进行获取。

然后第三类就是一些工商信息,比如说软著商标,可能是某些行业的软著,也可能软著本身就可以代表某个行业,或者说包括在它的主营业务中。

这样的话,有了上述三类信息,把它们凑在一起,然后通过实体和行业的识别,就可以找到所属这个行业的典型企业。

图片.jpg

⑨ 自动构建技术-实体融合

前面我们提取的信息,最终需要经过实体融合,因为前面是识别这些东西,可能它并不是一个标准化的名称,也就是说没办法和我们构造的实体库进行映射。

实体融合主要是实体对齐,实体包括人,企业和行业,因为名称都比较短,难度会比较大,有一些方法,比如说之前提及的构建行业词库,如果使用这种方法,就使用识别出的实体来去词库中搜索,直接对应到某个行业上。除此之外,可以用图计算中的最小连通图去做人名或企业名称的识别,还可以通过搜索引擎或相似度去做计算。实践 上,我们可以把几个方法拼在一起,就能够大体上解决实体对齐的问题。当然作为上线的处理方案最后肯定还是会通过人工去做审核。

图片.jpg

⑩ 自动构建技术-文本批处理

所有自动构建的流程,从数据进入,到整体产业、行业、企业数据的输出,需要使用批处理系统串起来。批处理系统通过分布式消息队列的模式,当数据进入系统,就会自动进入消息队列相应的主题,接着我们将消息的消费与模型工具进行解耦,那么模型就部署在机器学习平台上,非模型的一些业务处理逻辑就是用容器进行部署,确保高可用,最后再加强人工,整个系统基本上就比较完善了,再加上实际中需要不停进行生产以及迭代,理论上是可以构建一个比较完善的产业链系统的。

图片.jpg

上述就是我们最终形成的这么一个系统,我们最后把市场数据和工程数据都以产业链为核心进行组织,就形成了一个规模较大的数据库,最后如果再加上应用就可以面向场景进行服务了。
图片.jpg

04 示例和应用

1. 产业可视化

下图将产业链分成资源、制造、消费和知识四个大类别。

图片.jpg

下图给了行业层面的新能源汽车的产业链构造,也就是上下游分布,最上面深蓝色的部分是上游,然后中间黄色的是中游,下面浅蓝色的是下游,都是行业集合的形式。

图片.jpg

下面我们用锂离子电池的正负极材料生产行业来进行展示,可以从下图看出,它的上游是一些生产需要材料,下游是它的一些应用。

图片.jpg

这个是一个刚才我们说的锂离子电池正极材料的行业像素,包括节点介绍,典型公司,行业要素(智能行业透视),还有财务指标和产品指标。

图片.jpg

2. IPO审核

接下来会介绍IPO审核的两个应用场景。

第一个是大宗商品原材料的采购价格对比。我们可以拿自动抽取的发行人招股书出所披露的大宗商品采购价格,去和行业价格数据进行对比,对存在重大差异的情况进行提示。比如有差异,但是它价格比市场价格稍微低一点,这种情况是否合理,就需要审核人员去进行判断。

第二个应用场景是对上市公司分产品毛利率进行比对。我们可以将上市公司的收入项目对齐到行业分类体系中,然后拿这个产品数据,和其他的同行业的公司进行对比,或是跟行业的均值进行对比。毛利率是一个可比对象,因为毛利率是最具综合性的一个财务指标,对比同行业可比公司,指标与行业均值是否一致,太高或者太低都需要发行人解释合理性。

3. 投融资

股权投资中的应用也有两个例子,一个是筛选企业,另一个是筛选行业,一般是先筛选行业、再筛选企业。

企业筛选以工业机器人为例,我们可以通过企业规模或经营状况进行排序,优先看路演、融资或高新技术企业,因为这些企业可能本来就已经募资了,未来它就离IPO就比较近。这种企业可能是PE比较喜欢。或者如果是天使轮或者是A轮,可能是VC比较喜欢。另外我们可以根据企业所在的行业与行业的典型公司进行多维度对比,从而筛选投资标的。下图我们可以看出,在后面的关键字里面,它有很多子行业,这个行业按照一定的排序,可以给用户提供一些参考。

图片.jpg

行业筛选以POCT和工业机器人为例(其中POCT为实时检测,包括唾液检测、血脂检测,或其它实时出结果的一个行业),筛选并对比行业规模。我们将行业规模提取并结构化成下面的表格,从表中可以看出,我们工业机器人2023年的行业规模非常大,有156亿,但是如果对比同时期全球行业规模的335亿和全国销量26万台,就能知道这个行业是不是你想要的行业,以及这个行业未来的空间是怎么样的。然后我们可以看看POCT行业,到2026年,我国的生产规模才15亿美金,但如果对比全球同时期的240亿美金,就可以看出也许这个行业的发展空间可能非常大,也许这就是一个比较新兴的行业,比较适合去投资。

图片.jpg

05 问答环节

Q:请问bert预训练模型表现的已经很好了,为什么仍然保留了word2vec?

A:BERT在一些任务上,例如相似度计算时,可能会超出一些字面意思,达到语义的级别,但这个时候你就会发现虽然它的召回率很高,但准确率会有一些问题。这样的话实际上我们就需要从传统的word2vec对文本从字面意思上做校正。但是也不是非此即彼,实际上可以利用word2vec从某些场景上做一些这种互相的补充。

因为我们主要是以实际效果为主,哪种方法的效果好,我们就用哪种方法,而不是说现在某个模型比较流行,比如端到端模式发展特别好,就用这个。

Q:请问行业是否经过了预定义?

A:实际上在我们在本体构建的时候,是做了一些行业预定义的,但是我们在预定义完成后,经过行业识别以及构建行业的同义词,实际上又对行业信息进行了一些补充。因此,预定义的分量是比较大的,但是你用一些技术方法对它进行补充,然后专家再去审核这个方法,可能能够节省一些人力,结果就是使用这种“两头凑”的方式去把行业信息补充完善。

Q:请问行业的文本分类任务有什么评价指标吗?一般的有监督训练是需要自己提前打标的单标签分类训练,但典型公司识别中某些大公司的经营范围广泛,是否采用了多标签分类?

A:对于行业分类,评测主要是通过人工,因为没有一个标准或者语料库,只能是人工去做,这也是一种通用的业界的方法。这个过程会经过多轮迭代,先做一个小库,可能一开始精度不是特别好,需要人工矫正一下,然后再把矫正后的语料放到总语料里面去,就像滚雪球一样,这样的话就慢慢能得到一个比较高准确率的一个语料库,最后就能够稳定下来。

然后在公司行业的识别上,因为一个公司肯定是属于多个行业的,之前有介绍系统通过了各种方法去做公司以及行业的映射(在自动构建技术章节的典型公司识别中),那些公司因为主营业务多,特别是主板的上市公司,可能属于特别多的行业,甚至一些非上市公司,它的一些信息都存在不同的文本里面,是需要去做多标签的分类的。好处就是因为我们有不同文本,数据量比较大,那么它的分类结果实际上是可以互相印证的,这样的话,即使你单纯在某一个语料上面的分类结果不是特别好,你也可以通过其他的方法去进行校验或者补充,最终将结果合并起来,效果也还是不错的。

今天的分享就到这里,谢谢大家。

相关文章推荐

发表评论