基于流计算模型的机器实时自动写稿系统及方法
技术领域
本发明涉及数据采集、数据分析、自然语言文字处理技术领域,特别涉及一种基于流计算模型的机器实时自动写稿系统及方法。
背景技术
近年来,人们对于机器写稿领域的关注日益增长,尤其是涉及到体育、财经、天气等行业的新闻报道,需要收集大量的数据并进行分析,比如前年的赛事与今年的赛事对比,今年的温度与去年同期温度的比较,对于新闻作者而言,需要花费大量的时间去做数据收集和分析来写这样一篇偏向统计、产生(阐述)事实的文章。采用自动化写稿系统可以解放记者,将他们从机械化、重复化的数据、简单常识中解放出来,从而有精力去从事更有深度的工作。
以气象领域为例,天气信息隔很小的距离就可能产生完全不同的结果,而受众对于高垂直度、强相关的天气信息需求又较大。短时预报、格点化预报、大面积覆盖的预报信息以及实况信息非常消耗人力和时间成本,并且对实时性要求很高。假设今天一早有寒潮预警,则记者需要去收集信息,对比历年寒潮情况、历史同期情况等,此时若引入机器写稿系统,可以完成对历史数据的统计分析,且其准确率也会更高。然而,仅仅是依靠历史数据的机器写稿系统并不能满足当下读者对天气预报、体育赛事等新闻的实时性要求,按照现有的机器写稿系统,假设今天要发布全国各地市的天气预报,则需要等全国各地市天气信息采集完成,再开始进行数据清洗和指标计算,在采集过程中需要等待较长的时间,影响时效性。
因此,对于运用数据较多的业务领域存在的机械性、准确率、时效性以及全天发稿问题,亟需一种能实时采集数据、分析数据,真正实现边采边算边写的机器实时自动写稿系统。
发明内容
本发明所要解决的技术问题在于克服上述问题,而提供一种基于流计算模型的机器实时自动写稿系统及方法,可实现实时采集数据、分析数据、计算指标、匹配模板,真正实现边采边算边写,并即时的、廉价地向读者发布新闻报道。
本发明的技术方案是:本发明所述的一种基于流计算模型的机器实时自动写稿系统,其特征在于:包括:
模板库,用于存储目标行业文稿的模板,包括句子模板、段落模板、文章模板;
知识图谱,用于存储目标行业的素材知识,包括行业相关的实体、各个实体间的关系和行业相关的事件;
数据采集模块,用于实时采集目标行业当日更新的原始数据并发送给分布式消息缓存系统和历史数据库;
历史数据库,用于存储数据采集模块采集过的历史数据;
实时数仓模块,基于流计算引擎,用于对分布式消息缓存系统中缓存的原始数据进行ETL处理以得到规则引擎模块匹配判断所需的事实指标和需要嵌套到模板中的事实数据,并重新缓存到分布式消息缓存系统;
规则引擎模块,与模板库、知识图谱、历史数据库相连,用于存储分别与模板库的句子模板、段落模板、文章模板以及知识图谱、历史数据库相匹配的规则,采用内存数据库存储规则相关阈值,并根据规则和阈值对事实指标进行匹配判断,获取知识图谱中的素材知识、历史数据库的历史数据和模板库的句子模板、段落模板、文章模板,通过自然语言处理生成整篇文稿;
自动分发模块,用于将生成的文稿分发给各个渠道。
进一步地,在本发明所述的基于流计算模型的机器实时自动写稿系统中,所述模板库内还包括有同义词表,用于存储句子模板、段落模板、文章模板中涉及词汇的同义词;所述规则引擎模块内还包括有与同义词表相匹配的规则,用于对句子模板、段落模板、文章模板中词汇进行同义词替换。
基于上述系统,本发明还提出了一种基于流计算模型的机器实时自动写稿方法,其特征在于:包括以下步骤:
S1:构建模板库:针对目标行业采集该行业各种文稿内容,提取常用句子、段落、文章版式,生成句子模板、段落模板、文章模板并存储到模板库中;
S2:构建知识图谱:选取目标行业相关数据源,通过爬虫采集目标行业的素材知识,经过清洗后提取并划分成实体、各个实体间的关系和事件,对应存储到实体表、实体关系表、事件表,生成行业知识图谱;
S3:构建规则引擎模块:构建分别与模板库的句子模板、段落模板、文章模板以及知识图谱、历史数据库相匹配的规则存储到规则引擎模块,采用内存数据库存储规则相关阈值;
S4:数据采集:数据采集模块实时监测并采集目标行业当日更新的原始数据并分别发送给分布式消息缓存系统和历史数据库中保存,其中前者作为实时计算的实时数据,后者作为历史数据存储;
S5:数据ETL处理:实时数仓模块提取分布式消息缓存系统中缓存的原始数据,并基于流计算引擎对原始数据进行清洗、过滤、扩维后计算出规则引擎模块匹配判断所需的事实指标和需要嵌套到模板中的事实数据,并缓存到分布式消息缓存系统;
S6:规则匹配:通过API调用拉取规则引擎模块,根据事实指标依次匹配模板库、知识图谱、历史数据库对应规则和阈值,获取模板库的句子模板、段落模板、文章模板以及知识图谱中的素材知识、历史数据库的历史数据,再通过自然语言处理生成整篇文稿;
S7:自动分发:自动分发模块将生成的文稿分发给各个渠道。
进一步地,在本发明所述的基于流计算模型的机器实时自动写稿方法中,所述S1步骤还包括采集句子模板、段落模板、文章模板中涉及词汇的同义词,建立同义词表;所述S6步骤还包括匹配同义词表相对应的规则来调用同义词表,对选中的句子模板、段落模板、文章模板中相应词汇进行同义词替换。
进一步地,在本发明所述的基于流计算模型的机器实时自动写稿方法中,所述自然语言处理进一步包括:
将事实数据、素材知识、历史数据嵌套到对应模板中;
将句子模板、段落模板、文章模板逐层嵌套。
进一步地,在本发明所述的基于流计算模型的机器实时自动写稿方法中,所述规则与其匹配的模板之间为一对多的映射关系。
进一步地,在本发明所述的基于流计算模型的机器实时自动写稿方法中,所述S2步骤还包括:根据行业知识图谱构建基于web的交互操作框架,形成知识图谱可视化界面。
本发明的有益效果是:
1、相比现有技术,本发明创作形式多样高效,利用流计算模型,特别适合需要进行大量信息与数据处理领域的写作,能够在进行数据采集的同时,进行数据清洗、数据计算,并调用规则引擎模块匹配文章素材与模板生成文章稿件,改变只能在所有数据采集完成后,再开始数据处理的传统模式,降低对数据采集的等待时间,可以边采边算边写。同时,该系统可以24小时自动写稿,可以大大提升聚合、时效类文章的创作效率,解决了运用数据较多的业务领域机械性、准确率、时效性以及全天发稿问题。
、本发明的自动写稿系统可以被广泛应用在偏向统计分析的新闻写作领域中,能够根据受众对象的需求来个性化提供具有实时性、信息量大、多样化的文章报道,确保重大信息不会被遗漏,并结合横纵数据的对比来实现全面系统的数据分析,充分适应受众多元化需求的变化。同时自动化的实现,使记者不再拘泥于单调重复的内容处理中,成本低廉,节约人力,写作效率高。
附图说明
图1为本发明所述的基于流计算模型的机器实时自动写稿系统流程图。
图2为本发明所述模板库中的模板结构示意图。
具体实施方式
本发明提出了一种基于流计算模型的机器实时自动写稿系统及方法,可以应用在很多领域的智能创作。以下以天气写稿为例,现结合附图和实施例对本发明加以说明。以下具体事例只是纯粹说明本发明的具体方法,不限制本发明的使用范围。
请参阅附图1所示,本实施例所述的基于流计算模型的机器实时自动写稿系统,包括:
模板库,用于存储气象领域文稿的模板,包括句子模板、段落模板、文章模板;
知识图谱,用于存储气象领域的素材知识,包括行业相关的实体、各个实体间的关系和行业相关的事件;
数据采集模块,用于实时采集气象领域当日更新的原始数据并发送给分布式消息缓存系统和历史数据库;本实施例中选用Kafka作为分布式消息缓存系统;
历史数据库,用于存储数据采集模块采集过的历史数据,主要用于数据统计或是分析结果,如计算历史同期,年内首次等聚合、统计指标;
实时数仓模块,基于Flink流计算引擎,用于对分布式消息缓存系统Kafka中缓存的原始数据进行ETL处理以得到规则引擎模块匹配判断所需的事实指标和需要嵌套到模板中的事实数据,并重新缓存到分布式消息缓存系统Kafka;
规则引擎模块,与模板库、知识图谱、历史数据库相连,用于存储分别与模板库的句子模板、段落模板、文章模板以及知识图谱、历史数据库相匹配的规则,采用内存数据库Redis存储规则相关阈值,并根据规则和阈值对事实指标进行匹配判断,获取知识图谱中的素材知识、历史数据库的历史数据和模板库的句子模板、段落模板、文章模板,通过自然语言处理生成整篇文稿;
自动分发模块,用于将生成的文稿分发给各个渠道。
其中,规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来,使复杂的业务规则实现变得简单,也可以动态修改业务规则,从而快速的响应需求变更。本实施例选用Drools,优点是提高系统的可维护性,方便系统整合,减少编写“硬代码”。
上述系统的自动写稿方法包括以下步骤。
S1:构建模板库:针对气象领域采集该行业的各种文稿内容,提取常用句子、段落、文章版式,生成句子模板、段落模板、文章模板并存储到模板库中;采集句子模板、段落模板、文章模板中涉及词汇的同义词,建立同义词表。
具体的,差异化处理不同情况下的天气数据,经过专家讨论对天气数据进行多维度的划分,比如天气阴晴雨雪、气温、风力、未来几天的天气变化、气温变化、风力趋势等,在模板库中建立很多对应不同维度的模板,比如在气温维度下,以未来7天气温表现趋势为例,有气温的小幅度上升、气温大幅度上升,下降、忽高忽低等趋势,通过数据收集尽可能多的列出上述不同趋势,针对同一种趋势亦建立多个模板进行表述。比如针对气温上升可以有的表述为:气温上升5度、气温上升至15度,而“上升”一词,可以从模板库中同义词表中获取相应的同义词,如攀升、回升等,以保证天气类稿件的新颖性和灵活可创造性;建立模板的过程中要进行多维度的划分,更表现在同一个指标,要从多维度解读,以得到不同模板的表述。例如,连续阴雨天气的预报信息,可以看年内降水量,并结合气象历史,查看历史同期降水量、近三年降水量变化趋势等,可以解读为平均降水量为多少,雨量等级是多少,相较于历史同期是否有增长等。连续晴天,可以看本月光照时长、比常年同期偏多偏少等情况、整体光照变化趋势等。
一个模板是一个预先写好的模拟句子、模拟段落、模拟文章,一个句子模板中间可以插入一些具体数据,一个段落模板中间可以插入句子,一个文章模板中间可以插入段落。例如一个非常简单的句子模板1:预计【日期】【白天/夜间】会有【雨的类别】,平均日降水量为【具体数据】毫米。这个简单的例子演示模板是可以通用的,模板中填充的数据由实时数仓模块提供。再举一个简单的段落模板1:【全省天气现象】;全省未来几天的天气情况,首先来关注下未来三天会有怎样一个温度变化趋势,【全省未来三天的气温情况】;再来看今后三天的降水情况,【全省未来三天的降水情况】;接下来,给出各地市详细的气温情况,【全省各地市气温情况】。其中段落模板1【全省未来三天的降水情况】处,可填充句子模板1,比如预计明天夜间会有小雨,平均日降水量为5毫米。
S2:构建知识图谱:选取气象领域相关数据源,通过爬虫采集气象领域的素材知识,经过清洗后提取并划分成实体、各个实体间的关系和事件,对应存储到实体表、实体关系表、事件表,生成行业知识图谱,也包括包含事件等因素的复杂知识图谱,并根据行业知识图谱构建基于web的交互操作框架,形成知识图谱可视化界面,用于实现知识图谱可视化。
在天气写稿系统构建知识图谱的过程中,爬取中国气象台、百度百科等数据,包括天气语义数据、空气质量语义描述等,增加上下文语义,外链到气象、相关疾病、健康等数据。将采集到的素材知识分类成实体、关系、事件,其中气象灾害预警信号、防御指南、穿搭、出行、出游、节气百科、气象节日、当季城市热门旅游景点作为实体类。以气象灾害预警信号和防御指南为例,台风、大风、暴雨、暴雪、寒潮、低温、霜冻、道路结冰、冰雹、高温、干旱、雷电、大雾、霾可以作为预警信号实体,每个实体具有属性预警等级:如Ⅳ级(一般)、Ⅲ级(较重)、Ⅱ级(严重)、Ⅰ级(特别严重)。防御指南实体为每一条防御建议或是温馨提示。每一种预警信号和防御指南之间存在一对多的关系,如台风天气,可以对应多条建议:1.政府及相关部门做好防台准备工作;2.紧固门窗、围板、棚架、户外广告牌、临时搭建物等易被风吹动的搭建物,妥善安置易受热带气旋影响的室外物品等。
S3:构建规则引擎模块:构建分别与模板库的句子模板、段落模板、文章模板以及知识图谱、历史数据库相匹配的规则存储到规则引擎模块,每个规则对应一个模板主题,而一个模板主题包含多个模板,即规则与其匹配的模板之间为一对多的映射关系;采用内存数据库Redis存储规则相关阈值,可根据实时反馈的结果调整阈值,比如,高温阈值在冬天可设置为20度,在夏天可设置为35度等。
图2展示了模板库中的模板结构示意图。其中,104域表示行业,比如天气、财经、体育等,105域表示规则号,106域表示该规则的概要描述,108域是对106域的详细表达,一个106域可以且建议有多个108域,107域某种详细表达对应的唯一标识。上述句子模板1、段落模板1都属于108域的内容。此外,108域也包括有文章模板,根据不同规则将段落嵌套在文章模板中。
S4:数据采集:数据采集模块实时监测各种数据采集渠道如中央气象台、墨迹天气、中国天气网等,并采集气象领域当日更新的原始数据,如当前天气、未来天气数据、生活指数、旅游景点天气等,分别发送给分布式消息缓存系统Kafka和历史数据库中保存,其中前者作为实时计算的实时数据,后者作为历史数据存储。
S5:数据ETL处理:实时数仓模块提取分布式消息缓存系统Kafka中缓存的原始数据,并基于Flink流计算引擎对原始数据进行ETL处理后计算出规则引擎匹配判断所需的事实指标和需要嵌套到模板中的事实数据,并缓存到分布式消息缓存系统Kafka。
其中,基于Flink的实时数仓建设逻辑和传统数仓相似,基于分层的业务逻辑来构建,包括操作数据集(ODS层)、明细层(DWD层)、汇总层(DWS层)、应用层(ADS层),且明细层(DWD层)、汇总层(DWS层)上建立有维度表,按照各个维度对数据进行处理。
实时数仓框架中采用实时计算引擎和分布式消息缓存系统Kafka交互,经过实时计算引擎从Kafka中提取原始数据做一些加工然后放回Kafka。其中,DWD层对原始数据进行清洗、过滤、扩维等ETL处理后,继续发往Kafka供DWS层使用,在DM层形成指标池,最终得到各种事实指标和事实数据,比如最近3天的平均最低气温、某省沿海内陆城市的平均最低气温、未来7天的风力风向等。
S6:规则匹配:通过API调用拉取Drools规则引擎模块,根据事实指标依次匹配模板库、知识图谱、历史数据库对应规则和阈值,依次获取模板库的句子模板、段落模板、文章模板,获取知识图谱中的素材知识,如防御指南、温馨提示、出行指南等,历史数据库的历史数据,如历史同期,年内首次等聚合、统计指标,同时匹配同义词表相对应的规则来调用同义词表,对选中的句子模板、段落模板、文章模板中相应词汇进行同义词替换,再通过自然语言处理,最终返回整篇文稿。
其中,所述自然语言处理进一步包括:将事实数据、素材知识、历史数据嵌套到对应模板中;将句子模板、段落模板、文章模板逐层嵌套。
S7:自动分发:自动分发模块将生成的文稿分发给各个渠道。
可以理解的是,对于本领域的普通技术人员来说,可以根据本发明的技术构思做出其它各种相应的改变与变形,而所有这些改变与变形都应属于本发明权利要求的保护范围。