一种金融信息搜索中台的召回排序算法和层叠式技术架构的制作方法

文档序号:30265392发布日期:2022-06-02 03:56阅读:329来源:国知局
一种金融信息搜索中台的召回排序算法和层叠式技术架构的制作方法

1.本发明涉及一种基于动态金融知识图谱实现语义拓展召回和多因子线性排序,实现智能搜索的算法。本发明还涉及一种算法模块化解耦、共享型设计、并按照搜索流程水平层叠式的搜索中台技术架构。


背景技术:

2.搜索引擎是互联网产品的核心功能之一,帮助用户从海量资讯中,快速、准确寻找目标信息,是一个涉及到从亿级别的数据中挑选数十个正确结果的过程。
3.搜索引擎背后涉及到一系列的知识图谱、打标、打分、排重、召回、排序等算法支持,环环相扣、缺一不可、专业化维护。如图1所示。其中,召回算法、排序算法是搜索引擎2个最核心的算法:
4.召回算法是通过倒排索引,预先将新闻资讯打好标签,建立新闻资讯与标签的映射关系,搜索结果空间能从亿级别快速降维到万级别。
5.排序算法是通过打分机制,将搜索结果从高分到低分排序,并展示分数topn (按照不同功能和不同业务需求,n为非限定的正整数)的搜索结果展示给用户。
6.搜索引擎需要存储海量原文和索引,在大数据时代,单机数据库和单机计算已经无法满足业务需求,技术架构需要使用分布式计算,分布式存储和分布式缓存,来满足海量数据预处理、查询相关计算以及高并发查询需求,并且能根据业务需求,快速灵活地部署和迭代。
7.提供搜索引擎服务的知名企业,譬如:百度、google均使用自研搜索系统,文献中报道也只是冰山一角。搜索引擎是一个巨大的工程项目,对于中小企业一般不会自主研发。在开源的搜索引擎中,最知名的是elastic search(简称es)。 elastic search提供有限的召回算法和排序算法(通过原文的分词结果建立对原文的索引,通过计算分词在文档中的tfidf,即term frequency inversedocument frequency,建立评分排序),没有语义分析,没有内容排重,自带分布式计算和分布式存储,自带kibana统计监控,开箱即用的简易搜索引擎,适用中小企业低成本搭建搜索引擎。
8.现有搜索引擎基于用户画像,个性化推荐资讯、商品和视频,最大化用户使用时长、购买价值转化率、或者广告价值转化率等目标。金融信息智能搜索引擎的目标跟推荐搜索引擎有本质的不同,不完全是跟随用户,即用户喜欢什么,就推荐什么给用户看,更重要的是能高于用户和引领用户,在金融信息服务方面体现自身的专业性,业务专家或者产品经理觉得哪些信息对用户的投资带来价值 (譬如:在法律合规范围内,提示风险信息和投资机会),就推荐给用户看。在专业性和个性化之间,金融信息智能搜索引擎赋予专业性更高的权重。追求可解析性、可理解性、可规则化、可统计归因对提高专业性有指导性意义。
9.在传统的搜索引擎中,语义分析以通用场景为主,在金融垂直领域涉及较少。语义分析是通过维护近义词和反义词,其缺点是相对静态,无法满足市场信息和语境快速动态变化的需求。
10.在传统的搜索引擎中,排序算法是通过分词的tfidf实现文章打分,tfidf 仅仅是一个频率统计,只反映分词的稀缺性,不能反映资讯的时效性、权威性、热门程度、重要性、相关性和用户个性化等因素。
11.在个性化的搜索引擎中,千人千面的排序算法过分地跟随用户,强调用户偏好,没有体现金融机构的金融信息服务专业性,金融机构的职责需要更多地引领用户的财富增值保值。
12.传统的搜索引擎是一体化集成、专用型设计、垂直烟囱式技术架构,如图9 所示,针对一个业务,开发一个搜索引擎,其缺点是算法模块无法分解复用、不同业务之间重复造轮子、专业化分工不够、运维成本高。


技术实现要素:

13.本发明的目的是:提供一种垂直于金融、投资、财经领域的智能搜索中台(简称:金融信息搜索中台)。
14.为了达到上述目的,本发明的一个技术方案是提供了一种金融信息智能搜索中台的召回算法和排序算法,其特征在于,包括:
15.召回算法,建立权重随时间变化的金融知识图谱,基于金融知识图谱对用户输入的查询词作语义拓展后,进入召回阶段,其中:
16.上市公司的公司名称作为金融知识图谱的根节点,公司名称包括交易代码和别名,交易代码和别名与公司名称作等同映射;
17.上市公司的每个属性作为金融知识图谱的叶节点,挂在对应的根节点下面;
18.在计算金融知识图谱中节点之间的权重时,只考虑根节点与根节点之间的权重以及根节点与叶节点之间的权重,而不考虑叶节点与叶节点之间的“次近邻”关系权重,记:
19.第i个根节点与第j个根节点之间的权重为f
ij
(t):
[0020][0021]
第i个根节点与第i个根节点下的第o个叶节点之间的权重表示为f
io
(t):
[0022][0023]
式(1)、(2)中,frequency(i,j|t)表示在第t个时间段内,第i个节点所对应的词以及第j个节点所对应的词在数据源的同一个句子共现的频率,通过爬虫监控全网新增资讯的流式数据可以实时统计出来;l表示统计的时间区间长度;t表示当前时刻;
[0024]
通过金融知识图谱,对用户输入的查询词query作语义拓展,包括以下内容:
[0025]
若用户从根节点进入,则:
[0026]
步骤1、拓展出公司名称、交易代码和所有别名;
[0027]
步骤2、根据当前时间段,拓展出topn根节点;
[0028]
步骤3、根据当前时间段,拓展出topn叶节点;
[0029]
步骤4、替代用户的查询词query,将前述步骤1至步骤3扩展出的词加上用户的查询词query作为拓展查询词extended query,进入召回阶段;
[0030]
若用户从叶节点进入,则:
[0031]
步骤a、返回根节点;
[0032]
步骤b、重复上述步骤1至步骤4;
[0033]
召回算法基于拓展查询词extended query得到搜索结果候选集后,经过相似度算法排重/分组后,进入排序算法;
[0034]
排序算法,基于多因子线性排序算法模型对排重/分组后的搜索结果候选集,进行打分,其中:
[0035]
多因子线性排序算法模型采用下式进行打分:
[0036][0037]
式(3)中:w0、w1、w2、w3、w4、w5、w6为权重;
[0038]
f0为基准因子,是tfidf指标体现关键字在统计学上的稀缺性;
[0039]
f1为时效因子,是体现新闻在发文时间上的优先顺序;
[0040]
f2为来源因子,是基于业务部门对各大新闻媒体的内部评级,以及对版面在整个网站所在的位置评级的高低来计算;
[0041]
f3为热门因子,是通过用户互动数据的高低来计算;
[0042]
f4为相关性因子,根据股票名称在文章中的相关性打分r,基于相关性得分 r获得相关性因子f4;
[0043]
f5为质量因子,根据文章的信息量打分s,获得质量因子f5:
[0044]
根据文章的个性化向量,即文章在核心层、中间层、表象层3个维度上的打分,得到物品向量其中,核心层、中间层、表象层分别表示文章在3个不同深度层面的信息;
[0045]
为个性化因子,是根据用户的最近历史点击文章的物品向量计算的得到用户向量计算和之间的余弦夹角得到个性化因子。
[0046]
优选地,按照一定权重hs计算得到用户向量
[0047][0048]
式(4)中,权重hs满足m为回溯物品向量的个数,表示第i个物品向量。
[0049]
优选地,所述经过相似度算法排重/分组是指,通过相似度算法对搜索结果候选集结果进行排重,把相似度高的结果抛弃或者合并成一组,并且组内随机选择一个作为代表。
[0050]
优选地,所述相似度算法为simblock算法,包括以下步骤:
[0051]
步骤ⅰ、将待比较的字符串一及待比较的字符串二转化为每个字符向量的有序堆叠,从而获得与字符串一对应的矩阵以及与字符串二对应的矩阵表示为:
[0052][0053][0054]
式中,表示字符串一中的第i个字符向量化之后得到的归一化向量;表示字符串二中的第j个字符向量化之后得到的归一化向量;
[0055]
步骤ⅱ、与的余弦表示成如下广义形式:
[0056][0057]
式中,为度规张量,为全1矩阵;:为双点积;表示字符串一与字符串二的相关系数矩阵,对于中第i行第j列元素有
[0058]
步骤ⅲ、获得中元素非全0的区块,每一个区块对应一个分块矩阵,则每个分块矩阵对应字符串一与字符串二中一个相似的子字符串;分块矩阵越大,则相似的子字符串越长;每个分块矩阵的第一个元素和最后一个元素分别对应一个相似的子字符串的开头和结尾,每个分块矩阵的第一个元素和最后一个元素在中的索引下标分别对应相似子字符串在矩阵与矩阵中的位置;
[0059]
步骤ⅳ、初始化矩阵对矩阵进行s
×
s卷积操作(s为卷积核的大小,取值为大于或等于3的奇数正整数,即3、5、7、9、

)更新则有:
[0060][0061]
式中,b
ij
表示中第i行第j列元素,a
kl
表示中第k行第l列元素;
[0062]
步骤v、利用与的余弦cos来表示字符串一与字符串二的相似度,则有:
[0063]
优选地,对步骤v中的余弦计算公式进行化简,则有:
[0064][0065]
式中,nb表示第b个分块矩阵的大小,为第b个分块矩阵的行数或者列数的最大值;lu为字符串一的长度;lv为字符串二的长度。
[0066]
优选地,步骤v中,进一步取的上界作为相似度的输出结果 similarity,
[0067]
本发明的另一个技术方案是提供了一种金融信息智能搜索中台的水平层叠式技术架构的实现方法,所述金融信息智能搜索中台采用上述的召回算法和排序算法,其特征在于,将每个业务需要的功能进行模块化,并且将独立出来的模块交给专业团队去维护、迭代,每个模块按照搜索流程划分成不同的层级,包括数据层、语义分析层、召回层、排重/分组层、排序层以及缓存层;
[0068]
依据不同业务场景定义好每层需要的模块之后,将位于不同层的模块串联起来便能够得到一个全新的搜素引擎;所有模块独立管理,模块能够复用,所有模块共用一套监控、运维、安全、发布系统、底层数据库。
[0069]
优选地,依据每一个模块对计算资源的需求,分配不同的并行度使得系统任务调度时,能连贯调度不会因为某个环节的资源瓶颈而导致系统不稳定。
[0070]
优选地,定时批量更新高频查询词的搜索结果,并且将搜索结果保存在缓存中,等待用户直接查询,而不用进行实时计算;把实时计算资源留给那些长尾低频的查询词;
[0071]
搜索引擎在响应用户查询时,先查询缓存中是否有搜索结果,如果有,直接返回缓存中的搜索结果;如果无,走实时计算,返回搜索结果,并且更新缓存。
[0072]
本发明针对金融领域建立,建立了一个权重随时间变化的金融知识图谱,将上市公司与其子公司、董监高、核心产品(可拓展部分:行业、概念、重要法规、重要资源等)关联起来,通过金融知识图谱,对查询词实现语义拓展的召回算法。
[0073]
本发明通过建立多因子线性排序算法,提高用户搜索体验和业务场景相关性。
[0074]
本发明提出水平层叠式技术架构,实现各个业务功能灵活配置、轮子高效复用和专业化维护。
[0075]
与现有技术相比,本发明具有如下优点:
[0076]
一)针对金融领域的特殊需求:
[0077]
1)定制化权重随时间变化的金融知识图谱;
[0078]
2)定制化语义拓展召回算法;
[0079]
3)定制化多因子线性排序算法;
[0080]
4)提出模块化解耦、共享型设计、水平层叠式技术架构。
[0081]
二)在本发明中,每个技术都有自己的适用性场景:
[0082]
1)金融知识图谱的结构,带有金融行业特征,更多围绕公司、人物、产品 (业务)展开。
[0083]
2)召回算法和排序算法对比最好的现有技术
‑‑‑
向量化和个性化推荐可能未必适合金融领域这个特殊的场景,本领域更多强调准确无误和专业性。
[0084]
3)水平层叠式技术架构比较适合业务较多的大型企业,对于业务单一的中小企业,使用一体化集成、专用型设计,垂直烟囱式技术架构或者开源软件(譬如:elastic search)成本较低。
附图说明
[0085]
图1示意了金融信息搜索引擎的计算流程图;
[0086]
图2示意了权重随时间变化的金融知识图谱;
[0087]
图3示意了基于实时语料的统计,给金融知识图谱建立随时间变化的权重;
[0088]
图4示意了基于金融知识图谱,对查询词进行语义拓展的召回算法;
[0089]
图5示意了将每个字符向量化之后,可以建构两个字符串之间相关系数矩阵,形如一个个分块矩阵拼接而成,大分块保留,小分块过滤;
[0090]
图6示意了相关系数矩阵卷积前(a)和卷积后(b)的结果,对卷积后的结果的每一行或每一列求最大值max,可以得到相关子字符串的信号,并记录其谷值dip、峰值peak的大小和位置position;
[0091]
图7示意了两个真实字符串的相关系数矩阵(a),以及卷积后的相关系数矩阵(b)其信号和噪音分离的结果(c);
[0092]
图8示意了多因子线性排序算法;
[0093]
图9示意了一体化集成、专用型设计、垂直烟囱式技术架构的搜索引擎;
[0094]
图10示意了模块化解耦、共享型设计、水平层叠式技术架构的搜索中台;
[0095]
图11示意了搜索中台实时计算、批量计算流程图。
具体实施方式
[0096]
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本技术所附权利要求书所限定的范围。
[0097]
据统计,在本发明所对应的业务场景中,约99%的用户搜索量是直接搜索“股票名字”或者“股票代码”,用户搜索意图十分明确:寻找会影响股票价格波动的相关信息。针对这类搜索,本发明所公开的一种金融信息智能搜索系统创新性地提供一种金融知识图谱的建构方式,一种语义拓展召回算法、一种多因子排序算法(本发明不包含网络爬虫的部分)。
为满足不同业务需求,通过本发明可以搭建功能可灵活配置的搜索中台,提供一种水平层叠式技术架构。
[0098]
金融信息搜索引擎的计算流程,跟通用搜索引擎十分相似,如图1、图9、图10所示,包括以下步骤:
[0099]
步骤1、通过网络爬虫、第三方权威数据库、官方媒体、内部产出等渠道构成搜索引擎的数据源(raw data),内容包括:新闻资讯、研报、公告。
[0100]
步骤2、数据源经过算法池的多个算法加工,对每一条数据实现打标、打分、摘要、排重等。加工后的数据(post processing data)根据访问的频次,分别用分布式冷热数据库存储,冷数据保存在硬盘、不加载到内存,热数据不仅保存在硬盘,还加载到内存中。
[0101]
步骤3、不断更新和维护金融知识图谱的权重。
[0102]
步骤4、用户在终端输入查询词(query),经过金融知识图谱语义拓展之后得到拓展查询词(extended query),召回得到搜索结果候选集,其大小大约在几万到几十万条之间。
[0103]
步骤5、经过可以计算两个文本之间相似度的simblock算法(相似分块矩阵算法),对候选集中相似度大于95%的搜索结果进行排重/分组,并且随机取其中一个搜索结果作为排重/分组之后的代表。simblock算法的相似度95%意思是两个文本有95%的内容在有序字符层面是相似的。该相似度的阈值可以按照业务需求动态调整。
[0104]
步骤6、排重/分组后搜索结果候选集,经过多因子线性排序算法排序之后,返回数千条有效结果到终端分页展示。
[0105]
步骤7、用户的历史查询、点击等动作日志记录,会返回到算法池,用于计算用户画像。
[0106]
金融知识图谱,和基于金融知识图谱作语义拓展的召回模块:
[0107]
传统召回算法是通过文章的分词结果建立倒排索引,与用户输入的查询词在字符层面上进行硬匹配,而在语义层面上失灵,譬如:
[0108]
1、传统召回算法无法建立如“阿里巴巴”和“阿里”之间的别名关联。即:用户搜索“阿里巴巴”只会出现提到“阿里巴巴”的文章,而“阿里”的文章却出不来。
[0109]
2、传统召回算法也无法建立如“阿里巴巴”和“天猫”、“蚂蚁金服”、“马云”之间的内部关联。
[0110]
3、传统召回算法也无法建立如“阿里巴巴”和“拼多多”之间的外部关联。
[0111]
4、传统召回算法也无法建立如“阿里巴巴”和“蒋凡”之间的动态事件关系。
[0112]
本发明通过建立“权重随时间变化的金融知识图谱”(下文简称:金融知识图谱)可以有效解决传统召回算法在语义层面上的缺失。
[0113]
在金融知识图谱中,如图2所示:
[0114]
1.上市公司的公司名称(包括:交易代码和别名,与公司名称作等同映射) 作为根节点;
[0115]
2.上市公司的每个属性(包括:董监高、核心产品、子公司等)作为叶节点,挂在对应的根节点下面;
[0116]
金融市场一直在动态发展之中,这是金融市场一个十分重要的特点,金融知识图谱必须随时间增删节点,自动调整权重。金融信息要求较高的准确率,增删节点以及修改节
点的属性均与年报、公告为准,并且人工审核,只有权重是可以通过资讯动态计算的。在计算节点之间的权重时,为了简化计算量,本专利取“最近邻”近似,即只考虑:
[0117]
1.根节点与根节点之间的权重;
[0118]
2.根节点与叶节点之间的权重;
[0119]
不考虑叶节点与叶节点之间的“次近邻”关系权重。记:
[0120]
第i个根节点与第j个根节点之间的权重表示为f
ij
(t),如图3所示,通过“外部关联历史表(第t个时间段)”得到:
[0121][0122]
第i个根节点与(第i个根节点下的)第o个叶节点之间的权重表示为f
io
(t),如图3所示,通过“内部关联历史表(第t个时间段)”得到:
[0123][0124]
式(1)、(2)中,frequency(i,j|t)表示在第t个时间段内(t的颗粒度可以根据实际情况取:分钟、小时、天、周等单位),第i个节点所对应的词以及第j个节点所对应的词在数据源的同一个句子共现的频率,通过爬虫监控全网新增资讯的流式数据可以实时统计出来;l表示统计的时间区间长度;t表示当前时刻。
[0125]
如图3所示,使用关系表结构说明如何通过大量的语料做实时统计,股票的 f10信息是通过人工审核和维护,保证接近100%准确,知识图谱的节点信息可以直接从f10中同步过来,但是这样的表格没有权重信息,不分主次,只罗列了《节点,节点》节点对。统计节点对在语料中出现的次数,并保存语料id在历史表中。语料的颗粒度一般细到句子层面,历史表的颗粒度t可以是分钟、小时、天、周等单位。历史表的颗粒度t是指关于资讯流式数据,不是f10,统计的时间窗口宽度,譬如:将每个小时的文章当做一个批次,也可以将每天的文章当做一个批次。然后当前批次对历史表作统计,得到该时间段的权重排名topn的根节点和权重排名topn的叶节点,保存该批次的统计结果。
[0126]
通过金融知识图谱,对用户输入的查询词query作语义拓展,如图4所示,包括以下内容:
[0127]
若用户从根节点进入,譬如:输入“阿里巴巴”、“baba”、“阿里”,则:
[0128]
步骤1、拓展出股票名称、交易代码和所有别名;
[0129]
步骤2、根据当前时间段,拓展出topn根节点,譬如:“拼多多”。如图 3所示“权重排名topn节点结果表”,譬如:top1根节点索引为j
*
= argmax
jfij
(t);
[0130]
步骤3、根据当前时间段,拓展出topn叶节点,譬如:“天猫”。譬如: top1根节点索引为o
*
=argmax
o f
io
(t);
[0131]
步骤4、替代用户的query,将前述步骤扩展出的词和用户的查询词query 作为拓展查询词(extended query),进入召回阶段,如图2.query1所示;
[0132]
若用户从叶节点进入,譬如:输入“马云”、“天猫”,则:
[0133]
步骤1、返回根节点,譬如:“阿里巴巴”;
[0134]
步骤2、重复上述步骤1至步骤4,如图2.query2和图4.query所示;
[0135]
将扩展查询词(extended query)作为一组新的关键字,如图4所示,进入召回阶段,获得搜索结果候选集,如图4所示。
[0136]
通过可以计算相似度的simblock算法(相似分块矩阵算法),对候选集结果进行排重,把相似度高的结果抛弃或者合并成一组,并且组内随机选择一个作为代表。
[0137]
simblock算法(相似分块矩阵算法)在字符串向量化和余弦计算相似度的基础上,补充字符串的局域有序信息,具体包括以下步骤:
[0138]
将待比较的字符串一及待比较的字符串二转化为每个字符向量的有序堆叠,则有:
[0139][0140][0141]
式(3)中,表示字符串一向量化之后得到的矩阵;表示字符串一中的第 i个字符one-hot向量化之后得到的归一化向量;
[0142]
式(4)中,表示字符串二向量化之后得到的矩阵;表示字符串二中的第 j个字符one-hot向量化之后得到的归一化向量。
[0143]
one-hot向量化是指向量维度为字典长度,下标等于字符索引的元素为1,其余元素为0的向量。本实施例选用one-hot向量化并不是唯一选择,如果需要考虑字符更深层次的语义,可以用其他向量化技术,譬如:word2vec、主题向量、embedding。
[0144]
对于与长度相同的情况,传统的度规张量为单位矩阵(即g
ij
=δ
ij
,对角元为1、非对角元为0,基矢之间互相正交,对角元和非对角元有本质的区别);对于与长度不一定相同的情况,并且考虑到字符位置具有平移对称性,对角元和非对角元没有本质区别,不应该区别对待。定义度规张量为全1矩阵(即 g
ij
=1),则与的余弦可以表示成如下广义形式:
[0145][0146]
式(5)中,:为双点积,即即表示字符串一与字符串二的相关系数矩阵。式(5)中,转换表达方式的目的是为了引出对于中第i行第j列元素有如图6.a所示。将对所有矩阵元素的求和表示为∑a
ij
。∑a
ij
也可以近似地等于中各个大元素非0的分块矩阵(下面简称:分块矩阵)的求和,即有如图5所示:
[0147][0148]
式(6)中,每个分块矩阵代表两个字符串序列之间的相似部分,因为相同字符向量化之后余弦为1 不相同字符向量化之后余弦为0 把中元素接近全0(稀疏)的矩阵简化掉之后,剩下元素非全0(稠密)的矩阵。分块矩阵越大,字符串一与字符串二中相似的子字符串越长。每个分块矩阵的第一个元素和最后一个元素,分别对应一个子字符串的开头和结尾,其索引下标分别对应相似子字符串在字符串一与字符串二中的位置,如图5、图6.b所示;
[0149]
直接对公式(6)求和会包含大量噪音,噪音的累加不能忽略不计,因为两个字符串可能会有大量单字符或者超短字符组合是相同的。本发明希望能提取具有一定长度的字符组合。为了能有效提取分块矩阵的信息,对矩阵进行3
×
3 卷积操作得到如图6.a、图6.b所示:
[0150][0151]
式(7)中,b
ij
表示中第i行第j列元素。依照下标先行i、后列j,判断的3
×
3子方阵求和是否大于1:如果是,则计算的 3
×
3子方阵中的最大值赋值给b
ij
;如果否,则b
ij
不做任何改变。的初始值是全0矩阵,上述卷积一次即可,无需重复卷积。卷积后的结果会使得的信号和噪音容易分离,如图7.a、图7.b所示。把每一行和每一列的最大值max和位置position计算出来,可以更加直观地观察到信号和噪音的区别。
[0152]
约定3
×
3子方阵计算卷积,这是前文所述的短程局域有序概念,意味着限定了3个字符以内的微修改也会认为是相似,超过3个字距离的修改会打断分块矩阵的界定,被认为是两个不同分块矩阵。除了3以外,也可以选取其他颗粒度,譬如:5、7、9

甚至更加更大的奇数正整数,这是对长程有序的考虑。
[0153]
把所有的增长信号(增长信号是指如图7.c所示的曲线所有锯齿状增长沿) 的谷值和峰值的大小(max
dip
,max
peak
)和位置(position
dip
,position
peak
)记录下来,通过位置信息(position
dip
,position
peak
)可以确定子字符串的位置,通过大小max
peak
和字符交集检验,可以确认子字符串之间的一一对应关系。如图6.b、如图7.c所示。
[0154]
如图7.c所示,max
peak
≈3n
b-2近似正比于分块矩阵的大小nb(行数或者列数的最大值)。
[0155]
与的余弦cos可以近似为:
[0156][0157]
其中,lu为字符串一的长度,lv为字符串二的长度,nb为第b个分块矩阵的大小(行数或者列数的最大值)。本发明取的上界作为相似度的输出结果:
[0158][0159]
由此定义的相似度similarity的含义是清晰明了的,相似子字符串的总长度在字符串一和字符串二孰短的长度占比。特别是当similarity=100%时,意味着一个字符串对另一个字符串实现全包含/覆盖。
[0160]
多因子线性排序算法模块:
[0161]
传统排序算法是通过用户输入的关键字在文章中的tfidf(term frequency inverse document frequency)指标进行打分。tfidf正比于词频,反比于文章数,是在统计学层面对关键字的稀缺性进行评价,tfidf对于过滤常用词、停用词十分有效,但是没有反映出文章的内容质量,在语境语义、金融专业性、用户个性化推荐等层面存在缺失:
[0162]
1、传统排序算法无法有效过滤营销推广文章,推广文章的特点是词频特别高以至于tfidf打分十分突出,譬如:“双十一天猫打折”,搜索“天猫”的结果页面里面几乎都被营销类文章占据,而影响阿里巴巴市值变化的有效文章却出不来。
[0163]
2、传统排序算法无法有效挑选重大新闻。重大新闻的特点是言简意赅,词频很低,譬如:“蚂蚁金服终止上市”,在搜索“蚂蚁金服”的结果页面几乎垫底,因为tfidf打分非常低。
[0164]
3、传统排序算法无法反映类似pagerank的来源权威性,对真实性和权威性实现评价。
[0165]
4、传统排序算法无法反映时下热点,相对静态。
[0166]
5、传统排序算法无法反映文章对股票投资是否有作用,文章是否有数据和观点给用户提供投资依据,还是只是标题党。
[0167]
6、传统排序算法无法反映文章是主要讲这个股票,还是一笔带过,随便提了一下,主要讲其他股票。
[0168]
7、传统排序算法无法有效挑选个性化新闻。个性化新闻的特点是千人千面,每个用户的搜索结果都是个性化定制,tfidf打分是千人一面,搜索结果同质化。没有考虑用户在认知水平的层面上有很大的区别。
[0169]
本发明建立了“多因子线性排序算法模型”能有效解决传统tfidf算法在多个语义层面上的缺失。该模型是基于多个归一化因子线性分解和线性组合的理念上构造,在“基准因子f
0”tfidf的基础上,新增5个“风格因子”(分别是时效因子f1、来源因子f2、热门因子f3、相关性因子f4、质量因子f5),以及“个性化因子”,如图8所示:
[0170][0171]
1、每个因子的动态计算将分配给不同组员去单独维护,权重w0、w1、w2、 w3、w4、w5、w6是基于业务场景需求和用户特征动态传入,也可以是静态人工设定,也可以是通过机器学习实现某个收益目标最大化计算得到。
[0172]
2、基准因子f0是关于查询词稀缺性的tfidf指标,正比于词频,反比于文章数,f0=tanh(u
tfidf
(tfidf))。
[0173]
3、时效因子f1是体现新闻在发文时间上的优先顺序,f1=-tanh(u
δt
(δt))。
[0174]
4、来源因子f2是来自新闻内容运营部门对各大新闻媒体的内部评级,或者版面所在的位置评级的高低来计算,f2=tanh(u
pr
(pagerank))。
[0175]
5、热门因子f3是通过用户互动数据(阅读、点赞、评论、转发)的高低来计算,f3=tanh(uh(h))。
[0176]
6、f4为相关性因子和f5为质量因子均是通过“词群算法”的结果衍生得到,包括以下步骤:
[0177]
a)根据股票名称在文章中的相关性打分r,基于相关性得分r获得相关性因子f4=tanh(ur(r));
[0178]
b)根据文章的信息量打分s,获得质量因子f5=tanh(us(s));
[0179]
c)根据文章的个性化向量,即文章在核心层、中间层、表象层3个维度上的打分,得到物品向量
[0180]
为个性化因子,是根据用户的最近历史点击文章的物品向量按照一定权重hs(满足m为回溯物品向量的个数)计算的得到用户向量
[0181][0182]
计算和之间的余弦夹角得到个性化因子;
[0183]
这里的因子都是经过tanh归一化的,取值范围为-1到+1之间,1到+1之间,未归一化的因子来自实际数据,其分布的取值范围在0到+∞之间,可以通过线性变换或者非线性变换(记为u),按照分位数展开成均匀分布的形式,使得95%的数据能在-3到+3之间近似均匀分布(uniform distribution)。
[0184]
水平层叠式技术架构搭建搜索中台:
[0185]
传统搜索技术架构是由业务驱动,基于业务单独定制的搜索引擎。相当于每个业务都有一个完整的搜索系统,即有独立的数据库,独立的算法,独立的中间件、监控、运维、安全、发布等配套设施,如图9所示。优点是能快速部署,风险独立,面向业务。缺点也是明显:
[0186]
1、重复造轮子,不可复用;
[0187]
2、人力投入和设备投入成本高;
[0188]
3、专业化分工不明显;
[0189]
4、一次修改,多次发布;
[0190]
搜索中台的水平层叠式技术架构是面向整体、全局,将每个业务需要的功能进行模块化,并且将独立出来的模块交给专业团队去维护、迭代。水平层叠式技术架构能有效减低人力成本和设备成本,提高工作效率:共用一套监控、运维、安全、发布系统、底层数据库,一次修改只需一次发布,到处生效。根据业务场景,通过模块组装,实现自定义搜索引擎快速灵活部署,快速调试和迭代优化,如图10所示,每个模块按照大类功能去划分成不同的层级,包括:
[0191]
1、数据层;
[0192]
2、语义分析层;
[0193]
3、召回层;
[0194]
4、排重/分组层;
[0195]
5、排序层;
[0196]
6、缓存层;
[0197]
水平层叠式技术架构能将模块独立管理,避免重复造轮子,轮子可复用,实现专业化分工。
[0198]
依据不同业务场景定义好每层需要的模块之后,将位于不同层的模块串联起来便可以得到一个全新的搜素引擎,实现自定义搜索引擎快速灵活部署,快速调试和迭代优化;所有模块独立管理,模块可复用,所有模块共用一套监控、运维、安全、发布系统、底层数据库。
[0199]
考虑到每一个模块对计算资源的需求都不一样,依据每一个模块对计算资源、存储资源的需求,分配不同的计算并行度、存储分区数、副本数,使得系统任务调度时,能连贯调度,不会因为某个环节的资源瓶颈而导致系统不稳定,如图 11所示。
[0200]
实时计算资源消耗极大,特别是高并发场景,对用户的所有请求query都进行实时计算是浪费资源、不现实的。考虑用户大部分查询词都是相同的,可以定时(在缓存的生命周期内)批量更新这部分高频查询词(即能覆盖99%以上请求的查询词)的搜索结果,并且将搜索结果保存在缓存中,等待用户直接查询,而不用进行实时计算。把实时计算资源留给那些长尾低频的查询词,第一次查询可能会慢一点,后续第二次或者以后有缓存辅助会快很多,如图11所示。
[0201]
根据所有用户的历史查询记录,定时“批量计算”更新高频查询词的搜索结果,并且将搜索结果保存在缓存中,如图11所示的
②→③
过程,等待用户直接查询,而不用进行实时计算,如图11所示的
①→③
过程;
[0202]
把“实时计算”资源留给长尾低频查询词的搜索结果,如图11所示的
②→③
过程。
[0203]
搜索引擎在响应用户查询时,先查询缓存中是否有搜索结果:
[0204]
1.如果有,直接返回缓存中的搜索结果,如图11所示的
①→③
过程;
[0205]
2.如果无,走实时计算,返回搜索结果,并且更新缓存,如图11所示的
②→③
过程。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1