一种基于关键字集合的信息匹配方法转让专利

申请号 : CN201611102222.X

文献号 : CN106682102B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨牧洲刘隽诗黄鹤吴诚林董正浩卢晓慧李远志

申请人 : 中国通信建设集团设计院有限公司

摘要 :

本发明涉及一种基于关键字集合的信息匹配方法,包括以下步骤:服务器根据全体用户的关键字集合建立匹配树;系统获取新的信息;将获取的信息与预设的匹配树进行匹配,并获得用户列表;将获取的信息推送给用户列表中的用户。通过本发明所提出的基于关键字集合的信息匹配方法,在获得新的信息或者内容后,服务器针对该条信息或内容只需进行一次匹配操作即可获得关注该信息的全部用户集合,大大降低了服务端在进行信息匹配方面的开销。

权利要求 :

1.一种基于关键字集合的信息匹配方法,其特征在于,包括以下步骤:S1、系统获取新的信息;

S2、将获取的信息与预设的匹配树进行匹配,并获得用户列表;

S3、将获取的信息推送给用户列表中的用户。

所述匹配树的预设步骤包括:

S201、针对全部注册用户提供的关注信息关键字总集,统计所有关键字的出现频率;

S202、判断全部注册用户集合中是否有信息未处理的用户;

如果是,则执行步骤S203;

如果否,则执行步骤S207;

S203、选择任意一个信息未处理的用户获取用户信息并获取用户选择的关键字,分配缓存建立新的关键字集合C,将集合C中的关键字按照全部注册用户的选择频率进行从高到低排序;

S204、判断集合C中是否有未处理的关键字;

如果是,则执行步骤S205;

如果否,则将用户信息存储在新定义的根节点上;将集合C中第一个被定义的根节点加入根节点集合B中,释放缓存并执行步骤S202;

S205、在集合C未处理的关键字中选择排在第一位的关键字;如果排在第一位的关键字有多个,则任选一个;

判断所选择的关键字是否在根节点集合B中:

如果是,则执行步骤S206;

如果否,则为该关键字新建节点并执行步骤S206;

S206、定义该节点为新的根节点,如果该节点不是集合C中所有节点中第一个被定义的,将新定义的根节点作为上一个定义的根节点的叶节点,将二者连接,并执行步骤S204;

S207、返回匹配树的根节点集合,匹配树预设完成。

步骤S2具体包括:

S21、按照关键字的注册用户选择频率将匹配树的预设过程得到的根节点集合B中对应的根节点从高到低排序;

S22、判断集合B中是否还有根节点未进行处理;

如果是,则执行步骤S23;

如果否,则判断包括根节点集合和叶节点集合在内的所有节点集合是否处理完成,完成执行步骤S3;未完成执行步骤S26;

S23、获取集合中排在第一位的未处理节点对应关键字的状态,如果排在第一位的节点并列多个,则任选一个,如果为未匹配,则将该节点与获取的信息进行内容匹配,并将匹配结果标记为节点状态;

如果命中,则标记为:已匹配且命中;

如果未命中,则标记为:已匹配未命中;

如果该节点的状态为:已匹配且命中,将该节点加入堆栈;

S24、获取与该节点连接的所有叶节点,分配缓存建立新的叶节点集合,如果集合为空,则执行步骤S26,否则,按照关键字的注册用户选择频率将新的叶节点集合中对应的节点从高到低排序;

S25、判断集合中是否还有节点未进行匹配;

如果是,则执行步骤S23;

如果否,则清空该集合的缓存,执行步骤S26;

S26、堆栈内最后一个节点出栈,并将其对应的用户加入用户列表,返回上一层集合,如果上一层集合为根节点集合,则执行步骤S22,否则,执行步骤S25。

2.如权利要求1所述的一种基于关键字集合的信息匹配方法,其特征在于,还包括:当增加用户或删除用户时,对匹配树进行更新。

3.如权利要求2所述的一种基于关键字集合的信息匹配方法,其特征在于,当增加用户时,执行匹配树的预设步骤。

4.如权利要求2所述的一种基于关键字集合的信息匹配方法,其特征在于,当删除用户时,根据该用户的查询关键字,找到其对应的匹配树的叶节点,若当前叶节点上关联着不止一个用户,则只需删除该用户信息,若当前叶节点仅关联这一个用户,则删除用户的同时删除叶节点,再从该叶节点向根节点依次向上遍历节点并删除,直到遇到连着其他叶节点的根节点或遇到关联着其他用户的节点为止。

5.如权利要求1所述的一种基于关键字集合的信息匹配方法,其特征在于,还包括:当用户增加/删除其关注的关键字时,先按照原有关键字信息进行用户信息删除,再使用新关键字进行用户添加。

说明书 :

一种基于关键字集合的信息匹配方法

技术领域

[0001] 本发明涉及信息技术领域,尤其涉及一种基于关键字集合的信息匹配方法。

背景技术

[0002] 伴随着网络技术的不断发展,国际互联网(Internet)的覆盖范围越加广泛,其承载的信息也以爆炸性的速度在增长着,各大门户网站也都使用了搜索引擎来协助用户从海量的信息中寻找其关注的内容,但随着网络易用性的不断完善,用户体验作为衡量服务提供商(ISP)服务质量的标准越显突出,用户也不再满足于使用搜索引擎这种主动式的获取信息途径,而更倾向于信息主动展示这种既方便又轻松的方式,因此在近年来,订阅和信息推送等方式逐渐成为研究的关注点。
[0003] 用户获取其所关注信息的过程,根本上在于信息内容和用户关注内容的匹配,即关键字的匹配,在现有系统对订阅/推送信息的处理(匹配)和对订阅者列表的处理(筛选)是分开进行的,在筛选时也需要使用关键字对订阅者逐个进行匹配。而大型的订阅/信息推送系统往往拥有数十万甚至百万的用户,加之用户的关注点多样,即不同用户的关注内容(关键字数量、内容)往往不相同,这导致系统在进行用户-信息匹配,即获得某条信息后找出系统中对该信息进行关注的所有用户方面开销过大,影响系统的性能和服务质量。

发明内容

[0004] 鉴于上述的分析,本发明旨在提供一种基于关键字集合的高效信息匹配方法,解决了随着订阅者数量的不断增加,现有订阅和信息推送系统的性能开销随之增大,直接影响到整个系统性能的技术问题。
[0005] 本发明的目的主要是通过以下技术方案实现的:
[0006] 在基于本发明的一个实施例中公开了一种基于关键字集合的信息匹配方法,包括以下步骤:
[0007] S1、系统获取新的信息;
[0008] S2、将获取的信息与预设的匹配树进行匹配,并获得用户列表;
[0009] S3、将获取的信息推送给用户列表中的用户。
[0010] 在基于本发明的另一个实施例中,匹配树的预设步骤包括:
[0011] S201、对全部注册用户提供的关注信息关键字进行聚类,得到关注信息关键字总集,统计所有关键字的出现频率;
[0012] S202、判断集合中是否有信息未处理的用户;
[0013] 如果是,则执行步骤S203;
[0014] 如果否,则执行步骤S207;
[0015] S203、选择任意一个信息未处理的用户获取用户信息并获取用户选择的关键字,分配缓存建立新的关键字集合C,将集合C中的关键字按照全部注册用户的选择频率进行从高到低排序;
[0016] S204、判断集合C中是否有未处理的关键字;
[0017] 如果是,则执行步骤S205;
[0018] 如果否,则将用户信息存储在新定义的根节点上;将集合C中第一个被定义的根节点加入根节点集合B中,释放缓存并执行步骤202;
[0019] S205、在集合C未处理的关键字中选择排在第一位的关键字;如果排在第一位的关键字有多个,则任选一个;
[0020] 判断所选择的关键字是否在根节点集合B中:
[0021] 如果是,则执行步骤S206;
[0022] 如果否,则为该关键字新建节点并执行步骤S206;
[0023] S206、定义该节点为新的根节点,如果该节点不是集合C中所有节点中第一个被定义的,将新定义的根节点作为上一个定义的根节点的叶节点,将二者连接,并执行步骤204;
[0024] S207、返回匹配树的根节点集合,匹配树预设完成。
[0025] 在基于本发明的另一个实施例中,步骤S2具体包括:
[0026] S21、按照关键字的注册用户选择频率将预设根节点集合B中对应的根节点从高到低排序;
[0027] S22、判断集合B中是否还有根节点未进行处理;
[0028] 如果是,则执行步骤S23;
[0029] 如果否,则判断所有节点集合是否处理完成,完成执行步骤S3;
[0030] 未完成执行步骤S26;
[0031] S23、获取集合中排在第一位的未处理节点对应关键字的状态,如果排在第一位的节点并列多个,则任选一个,如果为未匹配,则将该节点与获取的信息进行内容匹配,并将匹配结果标记为节点状态;
[0032] 如果命中,则标记为:已匹配且命中;
[0033] 如果未命中,则标记为:已匹配未命中;
[0034] 如果该节点的状态为:已匹配且命中,将该节点加入堆栈;
[0035] S24、获取与该节点连接的所有叶节点,分配缓存建立新的叶节点集合,如果集合为空,则执行步骤S26,否则,按照关键字的注册用户选择频率将新的叶节点集合中对应的节点从高到低排序;
[0036] S25、判断集合中是否还有节点未进行匹配;
[0037] 如果是,则执行步骤S23;
[0038] 如果否,则清空该集合的缓存,执行步骤S26;
[0039] S26、堆栈内最后一个节点出栈,并将其对应的用户加入用户列表,返回上一层集合,如果上一层集合为根节点集合,则执行步骤S22,否则,执行步骤S25。
[0040] 在基于本发明的另一个实施例中,还包括:当增加用户或删除用户时,对匹配树进行更新。
[0041] 在基于本发明的另一个实施例中,当增加用户时,执行匹配树的预设步骤。
[0042] 在基于本发明的另一个实施例中,当删除用户时,根据该用户的查询关键字,找到其对应的匹配树的叶节点,若当前叶节点上关联着不止一个用户,则只需删除该用户信息,若当前叶节点仅关联这一个用户,则删除用户的同时删除叶节点,再从该叶节点向根节点依次向上遍历节点并删除,直到遇到连着其他叶节点的根节点或遇到关联着其他用户的节点为止。
[0043] 在基于本发明的另一个实施例中,还包括:当用户增加/删除其关注的关键字时,先按照原有关键字信息进行用户信息删除,再使用新关键字进行用户添加。
[0044] 本发明提出一种基于关键字集合的信息匹配方法,服务器根据全体用户的关键字集合建立匹配树,在获得新的信息或者内容后,服务器针对该条信息或内容只需进行一次匹配操作即可获得关注该信息的全部用户集合,大大降低了服务端在进行信息匹配方面的开销。
[0045] 本发明的其他特征和优点将在随后的说明书中阐述,并且,部分的从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

[0046] 附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
[0047] 图1是一种基于关键字集合的信息匹配方法流程图;
[0048] 图2是匹配树示例;
[0049] 图3是用户数在10000以内的实验结果;
[0050] 图4是用户数在50000以内的实验结果。

具体实施方式

[0051] 下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。
[0052] 根据本发明的一个具体实施例,公开了一种基于关键字集合的信息匹配方法,本发明实施例中的信息匹配方法,可以应用于包含有浏览器的终端中,该终端可以是智能电视、智能手机或者平板电脑等;或者该信息匹配方法应用于服务器中。实施例中所指的用户信息处理及关键字处理是指执行本发明方法相关步骤。如图1所示,方法包括以下步骤:
[0053] S1、系统获取新的信息;
[0054] 该信息是订阅和信息推送系统新获得的需要推送的信息,比如:应用场景是微博时,该信息可以是其他用户发表的内容或者广告信息;应用场景是游戏网站时,该信息可以是其他玩家的当前信息或者根据用户偏好的推送内容;应用场景是搜索网站时,该信息可以是系统检索到的相关信息。
[0055] S2、将获取的信息与预设的匹配树进行匹配,并获得用户列表;
[0056] 对获取的信息进行分词处理,获取关键词,并与预先设置的关键词库进行对比,最终确定其关键词。
[0057] 进一步地,在匹配之前,基于关键字集合预设匹配树,具体包括以下步骤;
[0058] S201、针对全部注册用户提供的关注信息关键字总集,统计所有关键字的出现频率;
[0059] S202、判断集合中是否有信息未处理的用户;
[0060] 如果是,则执行步骤S203;
[0061] 如果否,则执行步骤S207;
[0062] S203、选择任意一个信息未处理的用户获取用户信息并获取用户选择的,分配缓存建立新的关键字集合C,将集合C中的关键字按照全部注册用户的选择频率进行从高到低排序;
[0063] S204、判断集合C中是否有未处理的关键字;
[0064] 如果是,则执行步骤S205;
[0065] 如果否,则将用户信息存储在新定义的根节点上;将集合C中第一个被定义的根节点加入根节点集合B中,释放缓存并执行步骤202;
[0066] S205、在集合C未处理的关键字中选择排在第一位的关键字;如果排在第一位的关键字有多个,则任选一个;
[0067] 判断是否在根节点集合B中:
[0068] 如果是,则执行步骤S206;
[0069] 如果否,则为该关键字新建节点并执行步骤S206;
[0070] S206、定义该节点为新的根节点,如果该节点不是集合C中所有节点中第一个被定义的,将新定义的根节点作为上一个定义的根节点的叶节点,将二者连接,并执行步骤204;
[0071] S207、返回匹配树的根节点集合,匹配树预设完成。
[0072] 实际应用中,随着系统用户的不断增多,以及各种事件的发生,一些关键字的使用频率也会发生变化,如某时期内的新闻热点会导致大量用户对该热点相关的关键字关注增多。这种频率的变化对匹配树的匹配精度不会带来影响,但会影响匹配的效率,则可以考虑定期(或者在用户大量变动之后)重新建立匹配树。
[0073] 表1列出了在某新闻发布场景中注册用户所关注的关键字集合,在该应用场景下,为了实现精确匹配从而过滤掉自己不关注的无用新闻,各用户(除F外)都使用了多关键字以限定发布给自己的新闻的范围。只有同时匹配上某用户对应的全部关键字的新闻,才是用户想要接收的,该场景即为一种基于多关键字的精确匹配。
[0074] 表1:用户及对应的关注关键字列表
[0075]
[0076] 以上述应用场景为例,建立的匹配树如图2所示,{股票,邮箱}为根节点集合,图中圆形表示树的节点,方框表示对应节点上存储的用户信息。
[0077] 将获取的信息与预设的匹配树进行匹配,并获得用户列表,具体包括:
[0078] S21、按照关键字的注册用户选择频率将预设根节点集合B中对应的根节点从高到低排序;
[0079] S22、判断集合B中是否还有根节点未进行处理;
[0080] 如果是,则执行步骤S23;
[0081] 如果否,则判断所有节点集合是否处理完成,完成执行步骤S3;
[0082] 未完成执行步骤S26;
[0083] S23、获取集合中排在第一位的未处理节点对应关键字的状态,如果排在第一位的节点并列多个,则任选一个,如果为未匹配,则将该节点与获取的信息进行内容匹配,并将匹配结果标记为节点状态;
[0084] 如果命中,则标记为:已匹配且命中;
[0085] 如果未命中,则标记为:已匹配未命中;
[0086] 如果该节点的状态为:已匹配且命中,将该节点加入堆栈;
[0087] S24、获取与该节点连接的所有叶节点,分配缓存建立新的叶节点集合,如果集合为空,则执行步骤S26,否则,按照关键字的注册用户选择频率将新的叶节点集合中对应的节点从高到低排序;
[0088] S25、判断集合中是否还有节点未进行匹配;
[0089] 如果是,则执行步骤S23;
[0090] 如果否,则清空该集合的缓存,执行步骤S26;
[0091] S26、堆栈内最后一个节点出栈,并将其对应的用户加入用户列表,返回上一层集合,如果上一层集合为根节点集合,则执行步骤S22,否则,执行步骤S25。
[0092] 系统在获取新的信息后(以一篇新闻为例),自根节点集合中出现频率最高的关键字进行匹配,当匹配到某一节点后,再在其对应的“叶节点集合”中选择节点进行匹配,直到没有节点能匹配命中,或当前匹配的节点没有“叶节点”为止,自此得到匹配命中的节点序列,即匹配子树。逐层回到上一级叶节点集合中继续匹配,最终得到用户集合。
[0093] S3、将获取的信息推送给用户列表中的用户;
[0094] 伴随着系统的使用,会不断出现新用户注册,老用户退出的情况,而随着用户的变更关键字也会出现增删改,此时需要同步更新匹配树。避免因为更新不及时导致推送错误。
[0095] 当增加用户时,流程与建立匹配树的流程相同;
[0096] 当删除用户时,根据该用户的查询关键字,找到其对应的匹配树的叶节点,若当前叶节点上关联着不止一个用户,则只需删除该用户信息,若当前叶节点仅关联这一个用户,则删除用户的同时删除叶节点,再从该叶节点向根节点依次向上遍历节点并删除,直到遇到连着其他叶节点的根节点或遇到关联着其他用户的节点为止;
[0097] 当用户增加/删除其关注的关键字时,先按照原有关键字信息进行一遍用户信息删除,再使用新关键字进行用户添加。
[0098] 选取实验数据进行验证时,结合目前互联网上的搜索习惯,即大量用户聚焦在少量“信息集中”的关键字上,本申请实施例选择了13个关键字组成集合{"股票","新浪","网易","汽车","科技","财经","搜狐","邮箱","QQ","Gmail","图书","移动","联通"},采用随机生成复数用户的方法,每个用户在上述关键字集合中随机选取n(1
[0099] 在信息匹配(发布/推送)系统中,比较操作是最消耗性能的,因此本申请实施例在分析算法性能时,集中考察该方面。本申请实施例模拟出2段“文章”(以下称为例文)以供验证算法,第一段例文包含关键字集合中10个关键字,第二段例文包含全部13个关键字。
[0100] 在实验中,使用匹配树的节点所含关键字与例文进行匹配时,无论该关键字是否匹配成功,都视为一次匹配操作。基于上述原则,例文2在匹配时,会遍历到匹配树的全部节点,即例文2在实验中得出的匹配次数与匹配树的节点个数相等。
[0101] 如图3和图4分别表示以对应数目的用户建立匹配树后,再使用例文进行匹配直至得到目标用户集合时需要的匹配次数(对数纵坐标),分析实验结果可以得到:
[0102] 在用户数量很少时,因为随机产生的用户搜索/订阅关键字离散,建成的匹配树节点数要大于关键字总数(13)和用户数目之和,因此在例文2匹配时,由于需要遍历匹配树的节点操作,导致匹配效率要低于经典方案(每个关键字匹配一次+每个用户比对一次关键字)。随着用户数的增加,匹配树的变化则明显减弱,因为实验用户的查询/订阅关键字是从关键字集合中随机选择的,可能出现的变化在4000左右则当用户数目超过一定数量
时,匹配树的结构便几乎不会发生大变化,从实验结果中得出,在用户数超过20000时,匹配树算法的消耗基本稳定,不会随用户数的增加而出现明显改变。
[0103] 通过实验数据,证明了本申请实施例提出的匹配方法相比传统的方法,在性能消耗方面有显著的优势,尤其适用于有着大量用户使用的订阅/推送系统。
[0104] 综上所述,本发明实施例提供了一种基于关键字集合的信息匹配方法,其有益效果:
[0105] 服务器根据全体用户的关键字集合建立匹配树,在获得新的信息或者内容后,服务器针对该条信息或内容只需进行一次匹配操作即可获得关注该信息的全部用户集合,大大降低了服务端在进行信息匹配方面的开销。
[0106] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。