使用实时数据生成体育赛事战报的方法与流程

文档序号:17643275发布日期:2019-05-11 00:49阅读:2340来源:国知局
使用实时数据生成体育赛事战报的方法与流程
本发明属于自动写作
技术领域
,具体涉及一种使用实时数据生成体育赛事战报的方法。
背景技术
:足球是全球第一大运动,球迷众多。足球赛事战报作为球迷了解足球的重要信息来源,在体育新闻中占据了很大的比重。针对足球赛事战报的计算机自动写作研究日益成为热点。而体育直播很常见,涵盖了所有重要的比赛。体育直播包括文字直播,视频直播,电视直播等常见形式。足球赛事战报是广受球迷欢迎的一种应用文,通常由小编在体育赛事结束后的最短时间编纂并发布。我们可以使用算法自动地从数据源中获取体育比赛的相关信息,自动地构造赛事战报,将小编从重复性劳动中解放出来。足球赛事战报自动写作的相关技术研究从很久前就已经开始了,有着成熟的技术基础,近年不断增长的需求掀起了包括足球的体育赛事新闻自动写作的热潮。前人的研究集中于优化文本摘要技术,将足球赛事战报的自动写作问题看作从直播文本做句子选择的过程。但是直播文本存在着三大问题:冗余句问题、长短句问题、噪音句问题,前人的研究都没有同时解决这三大问题。而足球战报写作的数据来源其实不是只有文字直播,还有实时数据,但是现有技术的技术方案显然缺少对实时数据的分析,足球赛事战报的质量亟待提高。技术实现要素:针对上述现有技术中存在的问题,本发明的目的在于提供一种可避免出现上述技术缺陷的使用实时数据生成体育赛事战报的方法。为了实现上述发明目的,本发明提供的技术方案如下:一种使用实时数据生成体育赛事战报的方法,使用基于attention的序列模型transformer将关键事件转化为战报句。进一步地,所述方法包括:使用抽取模型从实时数据中抽取关键事件,然后用生成式模型将抽取出来的每一个结构化的关键事件翻译成战报风格的语言,最后将这些句子按照时间线拼接成一篇战报。进一步地,所述实时数据是一组描述赛场发生的所有事件的结构化数据,在标准的实时数据中,以客场球队所处球场边的上方角球区为原点,以球门线为x轴,边线为y轴,地平面的垂线为z轴,建立直角坐标系;player_id表示当前球员的唯一id,player_name_cn表示当前球员的中文名称,position_xposition_y表示当前球员在球场上的位置,pass_player_id表示传球球员的唯一id,pass_xpass_y对应传球球员所处的位置;event代表当前事件的类型,event_id代表当前事件在本场比赛中的唯一id,event_type是一个id类型的数字,表示该事件所对应的类型id,实时数据的射门事件中,变量goal_zgoal_y记录足球在飞跃球门框的一瞬间所处的空间位置,以分米为单位;实时数据以秒为最小时间单位,按照明确的标准,详细定义某一时间点比赛现场发生的事件;定义data表示某场比赛所有的实时数据,datai表示一场比赛实时数据中第i个事件,二者之间的关系用公式表示为:datai∈data(0≤i≤len(data)。进一步地,将实时数据中的精细信息离散化,把实时数据按照固定的模式转化为一个特殊的短语,然后使用翻译模型将这句特殊的短语翻译为战报句。进一步地,实时数据中总共包含20个维度,其中包括了一些表征相同信息的变量;event表示实时数据的类型,event_type表示实时数据的类型对应的id,team_name_cn表示球队的中文名字,team_id又表示该球队的唯一id、player_name_cn表示球员的中文名字与player_id表示该球员的唯一id。进一步地,transformer模型包括编码器-解码器的大框架,在编码器模块中,模型使用multi-headattention连接一个全连接前馈神经网络,在解码器模块中包括multi-headattention以及前馈网络,还包括一个专门对编码器的attention层;在attention以及前馈神经网络的输出端都连接了一个归一化层,最后连接一个线性层以及softmax层。进一步地,transformer模型工作的流程为:将实时数据处理后,得到一句由变量值以及空格组成的句子,对应着符号序列(x1,x2,…,xn),对其进行编码之后,对应隐层状态z=(z1,z2,…,zn),最后解码层生成输出序列(y1,y2,…,ym)。进一步地,编码层由2个相同结构的子编码层相堆叠得到,每个自编码层里有两部分子结构,第一部分是multi-headattention+归一,第二部分是一个简单的全连接前馈神经网络,每个单元均使用残差连接;解码层部分也是由2个相同的子解码层堆叠而成;每一个子解码层由3个子结构组成;归一部分与连接部分与编码层保持一致。进一步地,将query和key-value对看做一个集合,模型结构里的attention的作用是将这个结合映射到输出上;映射过程是将query与对应的key输入到一个函数中;在编码器中,key、value、query都来自于编码器中上一层的输出,解码器的key、value、query来自于decoder中当前时间以及之前的输出;在attention中增加了一个屏蔽层。进一步地,将输入的实时数据句子即(x1,x2,…,xn)通过wordembedding,变换为一个n×dmodel的矩阵,对这个矩阵与一个positionencoding矩阵相加,构造好编码层的输入;该输入被同时当作q、k、v作为multi-headattention中的输入,得到headi(1≤i≤h)的然后,将其分别通过attention结构,得到输出结果,是一个n×dmodel维矩阵;然后再经过2层相同的编码层之后,得到了最终输出,也是一个n×dmodel的矩阵;解码层将编码层的输出作为key和value,同时考虑历史已生成的词,通过attention结构的结果作为query,最后通过一个线性层以及softmax层,得到当前生成的词。本发明提供的使用实时数据生成体育赛事战报的方法,使用抽取模型从实时数据中抽取关键事件,然后用生成式模型将抽取出来的每一个结构化的关键事件翻译成战报风格的语言,最后将这些句子按照时间线拼接成一篇战报,从结构化的实时数据里抽取关键事件,由于实时数据结构规范,内容精确,因此抽取效果很好,克服了现有技术存在的缺陷,可以很好地满足实际应用的需要。附图说明图1为实时数据的直角坐标系图;图2为某场比赛中所有射门事件中足球相对于球门的空间位置示意图;图3为transformer模型的结构图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图和具体实施例对本发明做进一步说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。使用实时数据生成体育赛事战报的方法,使用基于attention的序列模型transformer将关键事件转化为战报句。使用实时数据生成体育赛事战报的方法,包括:使用抽取模型从实时数据中抽取关键事件,然后用生成式模型将抽取出来的每一个结构化的关键事件翻译成战报风格的语言,最后将这些句子按照时间线拼接成一篇战报。实时数据是一组描述赛场发生的所有事件的结构化数据。在体育赛事的过程中,不同维度的标准化的比赛数据,由经过严格训练的数据公司员工收集并分析。一篇真实的实时数据如表1.1所示。在球场上发生动作后的几秒钟内,这些数据即被存入数据库,并提供给外界。随着互联网产业的日益发展,以往只有专业的体育赛事分析公司才能接触到的实时数据,现在每一个互联网终端都可以便捷的实时得到。实时数据可以从新浪开放的特定接口按照特定的方式读取到。比如我们要获取matehid为149539这场比赛的实时数据信息,我们可以在浏览器或者用写代码访问http://platform.sina.com.cn/sports_all/client_api?app_key=3749442444&_sport_t_=f24&_sport_a_=matchevent&match_id=149539可获取json格式的实时数据。下表的实时数据样例节选自一场真实的比赛。表1.1实时数据样例我们共收集到10149场比赛的实时数据,共532510条实时数据。平均每场比赛有52.5条实时数据数据离散化后,通过人力用战报式的语言描述了(标注)每一条实时数据,用于模型的训练。战报是比赛结束后新闻编辑撰写的针对本场比赛新闻报道的一种题材,从收集到的战报来看,每篇战报平均由32个句子,1185个汉字构成。是众多体育新闻题材中的一种,一篇由编辑写作的战报如下所示:中超-秦升助莫雷诺破门登巴巴失点上港1-1申花如上文的战报,通常足球赛事战报由首段、中间段、尾段组成。首段负责交代比赛发生的时间、地点,简单介绍对阵的双方,有的编辑会把比赛结果放到第一段来介绍。中间段通常按照时间顺序,介绍球场发生的一些重要事件,有的编辑会针对某个事件发表一些点评性质的看法。大量观察小编写作的战报可以发现一个比较明显的现象“进球、红牌、明星球员的伤罚等时间”属于明显的关键事件,但是赛场毕竟变幻无穷,比如极端情况下,两队都没有进球,也很少红牌或者伤罚信息,我们又该按照什么样的策略去抽取关键事件呢?所以研究如何能够更好的抽取出赛场中的让读者更为满意的关键事件,才是我们追求的目标。尾段通常会是一段统计性质的文字。统计每一个球员的场上表现。也有的编辑只会简单罗列一下本场比赛所有的球员名字。足球赛事战报具有简明扼要、篇章固定、通俗易懂、信息量大等特点。越来越多的球迷习惯在足球比赛结束后的第一时间,通过阅读战报快速地了解整场比赛,通过阅读战报中记录的细节信息,了解自己喜爱的运动员在绿茵上的风采。为了完成一篇既能满足读者需要,又要保证内容正确的战报,编辑需要认真地观看比赛的每一个细节。战报日益增长的用户需求,对撰写战报的编辑提出严峻的挑战。实时数据分析标准11人足球场地长105m,宽68m。在标准的实时数据中,以客场球队所处球场边的上方角球区为原点,以球门线为x轴,边线为y轴,地平面的垂线为z轴,建立直角坐标系。如图1所示。player_id表示当前球员的唯一id,player_name_cn表示当前球员的中文名称,position_xposition_y表示当前球员在球场上的位置,pass_player_id表示传球球员的唯一id,pass_xpass_y对应传球球员所处的位置。event代表当前事件的类型,event_id代表当前事件在本场比赛中的唯一id,event_type是一个id类型的数字,表示该事件所对应的类型id,下表罗列了常见的事件类型以及对应的event_type。表2.1事件类型对应关系eventevent_type射门被后卫挡出15进球16射偏13击中门框14黄牌17第二张黄牌17过人3换人18实时数据的射门事件中,变量goal_zgoal_y记录足球在飞跃球门框的一瞬间所处的空间位置,以分米为单位。图2显示了某场比赛中所有射门事件中足球相对于球门的空间位置。实时数据以秒为最小时间单位,按照明确的标准,详细定义某一时间点比赛现场发生的事件。定义data表示某场比赛所有的实时数据,datai表示一场比赛实时数据中第i个事件,二者之间的关系用公式(1)表示:datai∈data(0≤i≤len(data)(1)完整的事件由19个变量组成,这些变量精确地还原了事件发生的前因后果。其中有一些变量表征相同的信息,本发明做了一定的删减。公式(2)定义事件与事件变量之间的关系:datai={goaly,goalz,passplayer,passx,passy,event,eventtype,eventid.,teamid,teamname,playername,playerid,positionx,positiony,second,minute,exchangename}(2)数据处理实时数据中包含了一些精细信息(比如坐标),然而对于模型来说,过于精细的信息是有害的,数据越精细,该特征越稀疏。将实时数据中的精细信息离散化,将实时数据转化为战报句可以看做一个翻译过程,把实时数据按照固定的模式转化为一个特殊的短语,然后便可以使用经典的翻译模型将这句特殊的短语翻译为战报句。实时数据中总共包含20个维度,其中包括了一些表征相同信息的变量。event表示实时数据的类型,event_type表示实时数据的类型对应的id,team_name_cn表示球队的中文名字,team_id又表示该球队的唯一id、player_name_cn表示球员的中文名字与player_id表示该球员的唯一id。观察小编写作的战报可以发现,小编在写作战报的时候不会总是千篇一律的用球员球队的中文全称,而是习惯于用球员或者球队的简称。因此,在训练数据准备阶段就将这些冗余信息直接删除。transformer模型transformer模型虽然抛弃了传统的卷积结构以及循环结构,仅仅保留了attention结构使得模型结果更加简单,训练效率更高。但是它依然是编码器-解码器的大框架。在编码器模块中,模型使用multi-headattention连接一个全连接前馈神经网络。在解码器模块中除了multi-headattention以及前馈网络还多了一个专门对编码器的attention层。在attention以及前馈神经网络的输出端都连接了一个归一化层。最后连接一个线性层以及softmax层。模型的结构如图3所示。模型工作的大体流程为:将实时数据处理后,得到一句由变量值以及空格组成的句子,对应着符号序列(x1,x2,…,xn),对其进行编码之后,对应的隐层状态z=(z1,z2,…,zn)。最后解码层生成输出序列(y1,y2,…,ym)。下面分开描述模型内部的一些模块。编码层部分依然沿用cnn中的层堆叠思想。图3的左半部分大方框框起来的部分可以看作一个子编码层,整个编码层是由2个相同结构的子编码层相堆叠得到。每个自编码层里有两部分子结构,第一部分是multi-headattention+归一,第二部分是一个简单的全连接前馈神经网络。每个单元均使用残差连接。解码层部分也是由2个相同的子解码层堆叠而成。每一个子解码层由3个子结构组成。其中两个子结构与编码器里的子结构相同,多出来的一个子结构称为maskedmulti-headattention,这个子结构可以在训练的时候过滤掉不合法连接。归一部分与连接部分与编码层保持一致。将query和key-value对看做一个集合,模型结构里的attention的作用是将这个结合映射到输出上。映射过程是将query与对应的key输入到一个函数中。在编码器中,key,value,query都来自于编码器中上一层的输出,解码器的key,value,query来自于decoder中当前时间以及之前的输出。为了避免信息向左流动,在attention中增加了一个屏蔽层(mask),可以以屏蔽掉那些不合法连接。模型工作的细节流程是,将输入的实时数据句子即(x1,x2,…,xn)通过wordembedding,变换为一个n×dmodel的矩阵,对这个矩阵与一个positionencoding矩阵相加,构造好编码层的输入。该输入被同时当作q、k、v作为multi-headattention中的输入。得到headi(1≤i≤h)的然后,将其分别通过attention结构,得到输出结果,是一个n×dmodel维矩阵。然后再经过2层相同的编码层之后,得到了最终输出,也是一个n×dmodel的矩阵。编码层完成了上面的过程之后,解码层开始执行生成过程。解码层将编码层的输出作为key和value,同时考虑历史已生成的词,通过attention结构的结果作为query,就可以像编码器一样,进行2层相同的解码层,最后通过一个线性层以及softmax层,就可以得到当前生成的词了。实验结果与分析实验设置分为两个方面,首先是验证基于transformer的翻译模型在将关键事件翻译成战报句的性能,其次是将转化后的战报句拼接,形成一篇战报,与前人的方法进行横向的对比。transformer转化战报句将实时数据转化为战报句,是本发明的主要目的。下表节选了没有对实时数据做数据离散化,仅仅对训练的战报句做分词的情况下transformer模型产生的结果。表4.1transformer输入输出示例在新浪足球接口中,34703是皇家贝蒂斯16号瑟尤多的id,但是本实施例的基于transformer的翻译模型却错误的识别成皇家贝蒂斯5号布斯克茨。仔细观察战报句与生成结果,我们可以发现这一现象并不是偶然。分析原因有两个,第一个可能就是我们的训练集不够大,才10万个左右的实时数据战报句对,而球员球队的对应关系比较复杂,一个球员可能会对应多个球队,比如世界杯与联赛,一个球队中的球员也可能会在不断的变动,这样一来,训练集中就会存在自相矛盾的信息。第二个问题就是上面也提到的序列生成模型的缺点,能够很好的拟合训练集的语言风格,但是难以生成指定的准确的内容。虽然基于深度神经网络的翻译模型有着强大的学习能力,应用在中文环境下的时候,甚至可以不用分词就能处理。通常情况下,翻译模型必须对输入语言建模,然后抽象为高维特征,然后再反向生成对应语言。但是在将关键事件转化为战报句这项任务中,结构化的数据项与战报句中的关键词的对应关系相对明显,不需要特别复杂的语法结构转换过程。分词以及离散化有助于提升基于transformer模型的翻译模型的性能。为了证明这一观点,我们将生成的战报句拼接为战报,然后使用文本摘要领域通用的rouge评价方法进行评价。表4.2优化有效性比对数据优化rouge-1rouge-2rouge-su4无优化0.4960.2240.238坐标离散化0.5460.2320.243战报句分词0.5630.2570.249实验表明分词以及数据离散化有效的提升了transformer模型的翻译性能,有利于提升足球赛事战报的写作效果。上面三组实验数据没有进行人工打分环节,因为基本的实现方法一模一样,只是战报句里面生成的内容会有优劣之分,只用机器打分方法已经能说明问题。与现有技术中的其他方法进行对比试验对比方法介绍:rf+dpp:是基于特征工程,使用行列式点过程以及冗余改善算法来改进常见的句子选择模型,这一算法在体育赛事直播文本抽取这一任务中表现很好。该模型被用于驱动今日头条体育新闻写作机器人张小明以及南方都市报写作机器人小南。该方法直接计算直播句与小编战报的rouge相似度,作为训练语料中直播句的权值,然后使用randomforest(rf)训练出一个直播句排序模型,对所有的直播句进行排序,得分比较高的直播句即为关键句,crf:将直播文本的直播句抽取看作是序列标注问题,采用条件随机场模型对直播文本进行01标注。目标是生成一串01的序列,1表示句子为摘要句,0表示句子为非摘要句。根据常识,决定一个句子是否可以被抽取为摘要句,会受多个因素的影响,根据对足球直播文本的分析,采用四类特征作为crf的训练特征,分别为:正例关键词、负例关键词、句子所在位置以及一个外在辅助特征,即是否在比分变化特征的特定窗口。cnn+scaning是针对直接对直播文本应用文本摘要算法遇到的难以解决的问题,采用的一种基于句子分类的拼接算法。首先准确识别每一个句子的类别,识别出来冗余信息,然后设计一个基于时间窗口的扫描算法,决定什么样的短句该与邻近的短句相结合,什么样的短句该与邻近的长句拼接。最终得到规整的直播文本。随后直接应用经典文本摘要算法生成战报。事件抽取+模板是一种实时数据的抽取算法,随后将关键的实时数据填充进模板,取得了很好的效果。在横向对比实验的指标设置方面,使用人工打分与机器打分相结合的方法。人工打分设置3个方面的评价指标,分别是关键事件覆盖率(criticalincidentcoverage)、细节还原率(detailreductionrate)和语言表达正确率(correctexpressionrate)。同样是组织3名同实验室的足球爱好者,在不知道战报来源的情况下,对写作结果进行评分,最后将得到的评分加以简单平均。从机器角度出发,本发明依然延用公开的评价算法rouge,进行对比评价,评价结果见表4.3所示。表4.3横向对比rf+dpp,crf,cnn+scaning方法的本质是从直播文本中选择或者生成关键句,形成一篇战报,与小编战报一样,上述方法生成的战报语言都比较灵活。而本发明介绍的方法是从精确的结构化实时数据中选取关键事件,基于数据生成合适的语言文字,形成一篇战报,在细节描述以及语言通顺上具有得天独厚的优势。值得强调的是,本发明使用算法分析实时数据,与数据相关的内容不会出错;小编战报中涉及数据的内容却不一定经得起推敲。因此,在数据信息准确性方面,本发明优于小编战报。同时,由于设计上的优势,本发明方法仅需要手工收集整理几千个对应事件的关键词,编辑少量的模版句,避免了费时费力的人工标注过程。表4.4生成结果对比本发明使用抽取模型从实时数据中抽取关键事件,然后用生成式模型将抽取出来的每一个结构化的关键事件翻译成战报风格的语言,最后将这些句子按照时间线拼接成一篇战报。从结构化的实时数据里抽取关键事件,由于实时数据结构规范,内容精确,因此抽取效果很好。前人的研究集中于使用文本摘要技术从直播文本中抽取关键句,包括基于crf的关键句抽取算法。但是研究发现这种技术路线难以克服遇到的所有问题。基于cnn+scaning的算法将直播文本的长句切分为短句,再基于char-cnn短文本分类模型将短句重新拼接为质量比较好的长句。这种方法很好的解决了从直播文本生成战报的工作。但是由于语义理解是世界性难题,难以从直播的句子去理解赛场的变化,因而难以进一步优化足球赛事战报写作算法。实时数据是一组描述赛场发生的所有事件的结构化数据,基于实时数据可以进行各种各样的数据分析工作。实时数据的获取可能比直播员实时书写直播文本描述赛场变化的难度更高,要求的专业素养也更高,但是随着产业链的发展以及现代社会科技的飞速发展,实时数据的生产传播越来越自动化。而且实时数据的应用范围也要远大于直播文本。直接从直播文本或者是一场比赛所有的实时数据用语言模型或者是翻译模型生成一篇战报是非常困难的,模型生成的战报会包含大量的语义错误以及逻辑错误。本发明采取了一个折衷的方案,首先设计了一种数据分析方案,从一场比赛的50个左右的实时数据中,选择出关键事件,而后,使用翻译模型将一条实时数据转化为一个战报句,最后将这些战报句进行拼接。很好的完成了从实时数据生成足球赛事战报的工作。人类在进行新闻写作的时候,往往第一步就是全局把握整场比赛的来龙去脉,根据自己的经验以及直觉锁定关键信息,然后组织合适的语言去概述所有的关键信息,写作出一篇精彩的足球比赛新闻报道。现阶段我们的算法还不能像专业编辑一样,能很直观的识别出比赛中的重要信息点。但是假如算法能建立一个从比赛开球开始到裁判吹哨结束的,按照时间线发展的通场比赛进展模型,真正理解了赛场发生的事件,我们的系统也能获得像人类编辑一样的写作能力。通过直播文本去做语义理解,是极其困难的,本发明介绍的实时数据却给了我们对全场比赛建模的可能性。实际上,实时数据中蕴含了更多有趣的信息。假如能更多的将现有数据分析的技术应用到实时数据的分析上,我们不仅仅可以将分析结果揉合到战报写作的过程中,让算法写作出来的战报更加专业详细,这些分析结果还可以应用在其他的领域。以上所述实施例仅表达了本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1