Press "Enter" to skip to content

【交易技术前沿】华泰资管研报智能分析技术探索和实践

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

选自《交易技术前沿》第48期

 

华泰资管研报智能分析技术探索和实践

 

邱震宇、彭南博、朱阿柯、陈雨辉、肖驰

 

华泰证券股份有限公司 信息技术部

 

邮箱:[email protected]

 

投资管理是当前证券行业中非常重要且极具发展潜力的业务领域。在投资管理业务中,研究员需要消耗大量时间、精力来阅读和分析不同研究机构发布的研究分析报告。通常这些研究报告数量繁多、内容丰富、样式不统一,且领域内缺少专业的研报阅读和分析平台,这些都极大影响了研究员的工作效率和产出。为了帮助研究人员快速展开研究活动、提升产出效率,我们希望构建一个专业的研报分析平台,该平台利用人工智能领域中的自然语言处理和计算机视觉技术对研报进行智能分析。目前,我们已经构建了一个包括研报分类、研报文档结构化解析和研报要素抽取的一体化解决方案。该方案已经应用到华泰证券的投研能力服务平台中,并被研究员广泛使用。

 

1、研究背景

 

随着经济发展,中国居民财富持续增长。资产管理需求日益增多,资产管理业务迎来新的发展机遇。市场对机构的投资管理能力提出了更高的要求。近年来,华泰证券资管团队积极建设数字化投资研究平台以助力投资管理业务。公司希望借鉴国内外投研的先进经验,通过数字化与智能化技术为投研业务赋能,实现多源异构研究数据融合、产业投资逻辑的知识沉淀和投研过程的提质增效,从而提升研究效率,增强公司在资产管理领域的核心竞争力。

 

在投资管理业务的研究过程中,研究人员需要阅读和分析各个券商机构制作的研究分析报告。他们需要从这些报告中提取出有价值的关键信息,包括研报分析的个股、当前评级、目标价和盈利预测数据等。这部分研究工作较为繁琐,会耗费研究人员大量的时间和精力。

 

随着人工智能技术的发展,许多金融机构开始将自然语言处理技术引入到金融文本分析领域,如情感分析、舆情预警和实体识别等。这些工作通常是针对金融纯文本任务,实际上金融领域还有大量的富文本语料有待挖掘和分析,例如上市公司公告、研究机构研究分析报告等。这些报告大多都是PDF格式,其中包含文本、图表和表格等元素,这些元素语义丰富,具有很高的研究价值。

 

基于上述分析,我们希望利用人工智能技术从研报PDF中自动抽取出关键信息并组织成结构化的数据进行分析。具体地,我们结合自然语言处理与计算机视觉相关技术,设计了一套研究报告(以下简称研报)关键信息要素抽取解决方案。该方案包含研报文件解析、研报类型分析和研报要素抽取等功能。为了解决金融垂直领域知识迁移难、要素抽取训练集构建成本高等问题,我们构建了金融领域的语言模型训练框架。同时,我们引入数据增强的理念,保证在训练样本不多的情况下,模型依然能够在要素抽取任务中取得理想的效果。目前,上述解决方案已经被应用到华泰证券的投研服务应用平台,并被研究员广泛使用。

 

2、技术方案

 

研报要素抽取任务希望通过文件解析、类型分析、要素抽取等步骤,将研究报告PDF原始文件转化为结构化的要素信息。这些信息包括研报的标题、摘要、作者和盈利预测指标等。本章节将详细介绍研报要素智能抽取任务面临的难点,并针对这些难点提出相应的解决方案,其整体框架如图1所示:

 

 

图1 研报智能要素抽取方案整体框架

 

研究分析报告通常为PDF格式,我们首先引入定制化的研报PDF解析模块。在通用PDF解析模块的基础上,我们根据研报样式的特点对该模块进行优化,从而有效识别出研报中的文本段落、图表和表格等元素。这些结构化解析结果被输入到研报类型分析模块中进行进一步分析。研报类型分析模块会根据抽取出的要素判别研报所属的类型,如个股点评、行业分析或者宏观研究等。最后,我们引入要素抽取和标准化模块。考虑到研报内容和格式的多样性,我们设计了一套涵盖多家研究机构和多种类型研报的多层次要素抽取模板库。该模块将根据研报类型,选择相应的抽取方法对研报要素进行抽取。最终,方案会对抽取结果进行标准化处理以便输入到下游系统中。接下来,我们详细介绍上述模块的基本流程和技术原理。

 

2.1 研报PDF解析

 

研报PDF解析是研报智能分析解决方案的第一个处理模块,后续处理模块的效果直接依赖本模块的解析质量,因此该部分是最基础也是最重要的模块。当前行业内,不少研究机构和公司对PDF文档解析研究并做出了一些比较成熟的产品。然而,这些PDF解析工具大都只针对上市公司及发债主体的公告和简单文书等,对研报适配性不太高。经过分析,我们总结出研报文件解析的两个难点:

 

1)研报样式多样缺乏统一规范,不同研究机构、不同研究员制作的研报样式会有所不同。图2展示了华泰研报与中金研报的样例,我们可以发现除了整体布局不同之外,局部内容样式也各有特点。例如,研报作者介绍、标的代码、评级、目标价的排版等;

 

 

图2 不同研究机构研报对比图

 

2)研报要素丰富,个别要素抽取难度大。研报中包含大量图表和表格,这些元素样式多样。表格会包含无边框、合并单元格等情况,如图3所示。这些都增加了表格元素识别的难度。

 

基于上述分析,我们构建了一套由点及面的研报PDF解析工作流,如图4所示。该流程从基本特征开始抽取,抽取出的特征将被输入到单页元素模型中进行解析,最后模型将关联多个单页元素得到篇章级层次的元素识别结果。下面将分别对这三个步骤进行详细的介绍。

 

 

图3 研报表格示例图

 

 

图4 研报PDF解析工作流程图

 

2.1.1  基础特征抽取

 

基础特征抽取包括文本特征、表格特征、图片特征和样式特征。文本特征除了常见的语义向量特征外,如N-GRAM统计特征(一种融合多段字符的特征)、主题特征等,我们还引入文本位置特征,如元素块在当前页面的坐标、与其他元素块之间的垂直、水平距离等;针对表格特征,我们提取了表格中的线段、线框的位置坐标、长度等特征。针对图片及扫描件元素,我们除了规则匹配外,还引入OCR(光学字符识别,用于识别图片扫描文件中的文字)识别工具提取图片的特征。此外,我们还提取了PDF内嵌的背景样式特征,例如字体、字号、颜色等CSS样式。

 

2.1.2  单页元素识别

 

单页元素识别模块,包括元素分类模型和元素关系模型两个模型。元素分类模型以XGBOOST模型(一种机器学习模型,以树模型为基础,应用集成学习思想提升模型能力)为基础,我们通过将文本和视觉两种特征作为输入,最终由模型来判断该元素是表格、文字还是图表。元素关系识别模型主要是识别两个文字段落是否需要合并。我们基于经典的大规模预训练语言模型BERT(Bidirectional Encoder Representation from Transformers,一种基于Transformers模型结构的预训练语言模型,在海量文本上进行预训练,得到一个具有一定语言能力的先验模型),训练得到一个判断两个文本元素块是否为同一段落的二分类模型。在构建数据集时,我们从本页文本元素块中,任选两个样本,若两个样本属于同一段落,则标注为1,否则为0。我们会尽量保证正负样本的比例维持在一个1:1的比例。最终该模型段落合并识别准确率能够达到90%以上。对于分栏识别,我们主要依靠视觉方面的特征,如水平元素块之间的间距、水平方向上元素块的类型分布、垂直方向是否有竖线像素块等。

 

篇章层次识别模块关注宏观层面的元素识别,包括段落之间的跨页合并、表格之间的跨页合并和整个文档的章节层次识别等。我们仍然使用BERT构建一个二分类模型来判别段落合并问题。在构建数据集时,我们从整个文档中任选两页,并抽取第一页靠近底部的文本元素以及第二页靠近顶部的文本元素作为样本对。对于表格之间的合并,我们同样综合了文本特征和视觉特征,文本特征包含了表格表头内容的向量表示、表格具体内容的统计特征表示等,视觉特征则包含了表格线框的位置特征、第二页表格中是否存在表头元素的位置特征等。我们也引入集成模型接收两种不同维度的特征来识别跨页的元素。

 

2.2 研报类型检测

 

通过分析大量研报后,我们发现研报的类型有很多种,其内容和样式大不相同。不同类型研报内容对比如图5所示,行业研报会关注某个行业的进展,报告中就会列出行业内重点推荐的标的股票;个股点评类研报则会关注某个具体标的的近况,报告就会侧重分析其最近的财务状况、舆情事件等,并给出相关的盈利预测以及评级。基于上述原因,我们不能使用单一抽取模板来涵盖所有类型的研报,而是要因地制宜、有的放矢。

 

 

图5 不同类型研报对比图

 

研报类型可分为以下几类:个股点评类、行业研报、宏观报告、深度报告、策略报告、金工报告、固收报告和其他研报。根据研报的标题以及部分摘要文本,我们应用文本多分类技术来判别该研报的类型。原先,我们计划使用通用BERT模型作为基础模型。该模型通过在海量语料下进行预训练,已经学习到常见的通用语义信息。然而,在使用该模型进行分类时,我们发现该模型对于研报标题与摘要文本的理解并不如预期。很多金融场景下的专用术语如“老旧欠款、股权激励”等无法被模型完全理解。针对这个问题,我们利用当前新闻数据库中已经积累的百万级别金融新闻语料,以通用预训练BERT模型权重为基础,引入上市公司实体库的分词词库,进行了全词级别的金融领域BERT预训练。最终,我们得到了一个适用于金融场景下的BERT模型。该模型在研报分类的任务上相比原始BERT在准确率和召回率上都有接近2个百分点的提升,其均能达到90%以上。该模型处理流程如图6所示。

 

 

图6 研报类型检测流程图

 

该模型的预训练流程参照BERT的训练任务,包含了掩码语言模型任务和下一句预测任务 (Next Sentence Prediction, NSP),其框架如图7所示:

 

 

图7 BERT预训练模型框架图

 

2.3要素抽取和标准化

 

通过上面的处理流程,我们得到了研报文档的元素解析结果以及研报的类型标签,根据这两种数据,模型可以对研报要素进行进一步抽取。

 

2.3.1要素模板设计

 

根据已有的研报类型标签库,我们设计了一套多级体系的抽取字段模板。抽取字段模板分为通用字段和类型专用字段,通用字段表示所有类型研报中的通用信息,如作者、机构名称、研报标题等;类型专用字段则表示不同类型研报各自关注的字段,以个股点评类为例,研究员比较关注研报中分析的个股标的、评级、目标价,另外还有盈利预测的一些指标如营业收入、净利润、ROA(资产回报率)和ROE(净资产收益率)等。对于盈利预测指标来说,研报对于标的预测时间周期都不是单一的,通常会跨越多个年份。因此在设计盈利预测的要素模板时,要考虑将预测的年份周期也包含在其中。如图8所示:

 

 

图8 盈利预测表格示例图

 

2.3.2要素抽取

 

根据前述步骤得到的研报文档解析结果和研报类型,再辅以要素模板的指导,我们就可以对研报进行精细化要素抽取。根据要素在研报中所处的不同位置,我们将要素抽取分为文本段落中抽取和表格中抽取。下面将分别介绍这两种情况的流程。

 

1)文本段落中抽取

 

以研报所属的研究结构为例,这个要素一般会出现在研报结尾的声明或者备注段落中。图9展示了不同研报中机构所处的文本段落位置。

 

 

图9 研报机构描述在研报中的位置示例图

 

从图9中可以看到,不同机构研报的声明内容行文都不尽相同,模型无法使用简单的规则匹配来进行抽取。我们将该抽取任务抽象为一个文本序列抽取任务,任务的目标为在图9第一个例子中识别“华泰证券股份有限公司”是一个研究机构名称,且该研报是该机构制作。经过分析,我们发现这种声明一般只会出现在研报的最后1-2页,因此我们可以预先将抽取的篇幅限定在最后两页文本段落中,并根据关键词如“一般声明”、“声明”等进一步定位到待抽取的上下文(一般是1-2句话)。剩下的工作就是对上下文中的每句话引入一个序列抽取模型,判断当前语句中是否包含指定的要素。经典的序列抽取模型通过引入BERT模型并结合概率图模型条件随机场进行联合训练。实施这个经典方法最大的难点在于我们无法以较低的成本来构建一个足量数据的训练集。针对这个难点,我们采用了另外一种方式来建模上述问题。我们在待抽取的语句paragraph之前,引入一个question文本,以抽取研究结构为例,该question可以为“制作这篇研报的分析师所属的机构是什幺?”。然后我们就得到一个question + paragraph的训练样本,我们的任务目标为让模型在paragraph中找到question对应的答案文本,具体来说就是找到答案在paragraph的起始位置。模型示意图如图10所示。

 

 

图10 抽取式阅读理解任务处理流程图

 

这种方式借鉴了机器阅读理解的任务思想,通过引入一个问题文本,让模型能够更深入理解当前的任务信息和待抽取文本的语义信息,使得模型在标注数据不多的情况下,也能获得比传统的序列抽取模型更好的效果,另外,我们增加了question文本,也间接得起到了数据增强的作用,缓解了数据标注不足的问题。基于上述方法,我们在标注了100-200篇左右的文本后,就获得了准确率、召回率大于90%的效果。

 

2)表格中抽取

 

要素除了出现在文本段落中,还会出现在表格中,例如盈利预测指标。在研报文本解析模块中我们对表格识别做了优化,表格元素识别质量得到了大幅提升。得益于表格识别的稳定性能,我们能够准确地从表格中提取指定要素。因此,我们在该步骤中通过规则匹配来进行处理,模型只需定位到表头中的要素位置,匹配相应的数值即可。以图8中的营业收入为例,我只需要先定位出表头中包含年份+“E”的表格,然后定位出该表中包含营业收入关键词的行,并根据年份对应的列位置,匹配相应的数值即可。

 

2.3.3要素标准化输出

 

当抽取完所有要素之后,模型还要对要素进行标准化的格式输出。对于金额型要素,例如营业收入、净利润,模型需要统一其单位和量纲;对于百分率、日期要素,模型需要统一其输出样式;对于评级、行业等要素,由于不同机构使用的体系不同,原样输出会给研究员带来一定的困扰。因此,我们与研究员一起制定了一个统一的评级描述模板和一级行业目录,将抽取出来的评级和行业映射到统一模板输出。另外,为了提升行业要素抽取和映射的准确率,对于行业研报,我们还会将研报中提到的行业内推荐个股标的抽取出来,并根据行业目录,将这些个股标的对应的一级行业搜索出来,并选择匹配频率最高的行业名称输出。

 

3、成果及应用

 

目前,这套研报智能要素智能分析的解决方案已经应用在公司的投研服务平台以及内部轻应用中。投研服务平台会展示研报的综合统计以及每份研报要素抽取之后的结构化结果。图11展示了不同维度下研报的分类统计,此功能依赖于研报分类检测服务。

 

 

图11 研报分析综合统计图

 

图12展示了某个具体研报的要素抽取结果,包括机构、作者、行业、评级、个股标的、目标价以及盈利预测数据等等。

 

 

图12  研报要素抽取效果图

 

图13展示了公司内部轻应用中的研报智能分析功能。

 

 

图13  轻应用功能展示图

 

4、总结与展望

 

本文主要介绍了华泰证券在研报智能分析和要素自动提取的技术探索与实践。我们的技术方案包含了研报文档解析、研报类型检测以及要素抽取及标准化输出等功能。根据当前解决方案的实际应用来看,大部分的研报都能被准确地分析并输出结构化的要素信息,这证明我们的方案是实际有效的。经过与研究员的需求讨论和样例分析,我们的方案目前仍然存在一些不足,我们计划在以下几个方面继续优化:

 

1)部分研报会将所有元素块图片化。这种情况下,整篇研报都是由单独的图片拼接而成。模型对于这类研报的解析效果还不佳。我们计划根据这类研报的特点,优化OCR服务;

 

2)当前抽取要素以文本类型为主,然而研报中有很多统计分析数据是以图表形式展示。我们计划对研报中的图表进行抽取,并与其图注相关联。最后,研究员通过图表搜索功能搜索到自己感兴趣的图表内容;

 

3)研报中存在分析师的主观分析文本,我们计划构建一个研报观点分析检测模型,将研报中的观点、结论型文本提取出来。同时引入情感分析模型判断研究员对个股或者行业的情绪,供上游应用使用。

 

Be First to Comment

发表评论

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