酒店数据匹配方法及装置与流程

文档序号:18739436发布日期:2019-09-21 01:36阅读:610来源:国知局
酒店数据匹配方法及装置与流程

本发明涉及酒店数据管理领域,尤其是一种酒店数据匹配方法及装置。



背景技术:

现有相当多的旅游平台,同一酒店可能出现在不同的平台上,因此在线旅游网站需要匹配酒店以合并本质相同的酒店,现有的酒店匹配方案中,主流做法是对名称地址进行解析,然后加入电话号码等纬度,通过事先设定权值的方式,对不同维度进行打分并加权求和,得到最后的相似度,根据设定的相似度阈值确定两家POI酒店链接是否为同一个。但是,在匹配过程中,人工占比仍然较高,例如,在美团酒旅的应用场景中,60%以上的POI实体链接匹配任务进行全自动处理化,剩下40%POI实体链接需要进行人工运营处理,主要涉及去重和后期验证工作,耗费人力资源,影响匹配效率。

因此需要提出一种能够减少人工占比,解放人力资源,从而提高匹配效率的酒店匹配方法。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的目的是提供一种提高匹配效率的酒店匹配方法及装置。

本发明所采用的技术方案是:

第一方面,本发明提供一种酒店数据匹配方法,使用ElasticSearch执行匹配过程,包括:

获取不同平台的平台酒店数据,并对所述平台酒店数据进行数据处理,得到原始酒店数据,写入原始酒店数据索引表;

按照预设的平台优先级顺序,选取第一平台的原始酒店数据,写入匹配酒店索引表,根据匹配因子的相似度,逐一与其余平台的平台原始酒店数据进行酒店匹配,得到匹配酒店索引表;

根据所述匹配酒店索引表生成匹配表和基础信息表,所述基础信息表包括酒店标准编号和不同平台原始编号;

结合所述匹配表和所述基础信息表,进行匹配准确性验证。

进一步地,所述酒店匹配的过程具体为:

在所述原始酒店数据索引表中逐一查询第一平台的原始酒店数据,直至查询到相似度最高的另一平台的原始酒店数据时,在所述原始酒店数据索引表中反向验证所述另一平台的原始酒店数据,如果查询到所述另一平台的原始酒店数据时,比较两个所述另一平台原始酒店数据的酒店编号是否一致;

如果两个酒店编号一致且所述匹配因子的相似度大于第一相似度阈值时,将所述另一平台的原始酒店数据的酒店编号,写入所述匹配酒店索引表中第一平台的原始酒店数据的匹配酒店编号内,否则,将所述另一平台的原始酒店数据作为一条新数据写入所述匹配酒店索引表中。

进一步地,所述匹配准确性验证具体为:

从所述匹配表中查找名称相同且地址相同的酒店,下线经纬度错误且匹配平台数量少的酒店;

和/或,在所述匹配表中随机抽取预设数量的酒店作为验证酒店,在所述匹配酒店索引表中依次计算每一个所述验证酒店的名称、地址相似度,并根据计算结果评估匹配质量。

进一步地,所述数据处理包括:数据清洗和/或各平台数据校验和/或数据去重。

进一步地,所述数据清洗包括:

根据坐标反查功能将所述平台酒店数据中国内酒店和国际酒店进行区分;

并根据不同提供方的坐标反查功能进行相互校验,将酒店坐标和酒店地址进行对应。

进一步地,所述各平台数据校验包括:

校验所述平台酒店数据中酒店的经纬度是否在第二预设范围内,并下线不符合第二预设范围的平台酒店数据;

校验所述平台酒店数据中酒店的名称、地址、经纬度字段是否有内容缺失,如果有内容缺失,则下线对应的酒店数据;

校验所述平台酒店数据中酒店的星级和/或评分是否在第三预设范围内,并修改不符合第三预设范围的酒店,对其做数据标准化处理。进一步地,所述数据去重包括:

对名称、地址完全相同的酒店进行去重;

和/或,将酒店名称相同,地址位于第四预设范围内的酒店,按组归入重复酒店库,对所述重复酒店库中的同组酒店,按照预设时间间隔获取价格,下线没有获取到价格的酒店;

如果同组酒店均没有价格,则将其存入备用酒店库,定期进行价格获取,当获取到价格后,则激活有价格的酒店,重新进入所述平台酒店数据中。

第二方面,本发明提供一种酒店数据匹配装置,包括:

平台酒店数据爬取装置,用于获取不同平台的平台酒店数据,并对所述平台酒店数据进行数据处理,得到原始酒店数据,写入原始酒店数据索引表;

酒店匹配装置,用于按照预设的平台优先级顺序,选取第一平台的原始酒店数据,写入匹配酒店索引表,根据匹配因子的相似度,逐一与其余平台的平台原始酒店数据进行酒店匹配,得到匹配酒店索引表;

生成匹配表和基本信息表装置,用于根据所述匹配酒店索引表生成匹配表和基础信息表,所述基础信息表包括酒店标准编号和不同平台原始编号;

匹配准确性验证装置,用于结合所述匹配表和所述基础信息表,进行匹配准确性验证。

第三方面,本发明提供一种酒店数据匹配设备,包括:

至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如第一方面任一项所述的酒店数据匹配方法。

第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一项所述的方法。

本发明实施例的有益效果是:

本发明实施例通过获取不同平台的大量平台酒店数据,并对平台酒店数据进行数据处理,得到原始酒店数据,写入原始酒店数据索引表,然后按照平台优先级,选取原始酒店数据的第一平台原始酒店数据,写入匹配酒店索引表,根据匹配因子的相似度,依次与其余平台的原始酒店数据进行酒店匹配,得到匹配酒店索引表,根据匹配酒店索引表生成匹配表和基础信息表,在得到的匹配表中进行匹配准确性验证。本发明通过ElasticSearch建立索引并通过相似度算法进行反向验证,执行效率高,能够过滤匹配较差的酒店链接,并且经过实例验证,能够对多平台酒店实现全自动匹配,自动匹配准确度超过90%,因此只需要少量人力资源补充完成匹配过程,降低了人工占比,提高了酒店匹配效率。

本发明适用于各种类型的匹配或比价项目。

附图说明

图1是本发明中实施例一的酒店数据匹配方法实现流程图;

图2是本发明中实施例一的酒店数据匹配方法的原始酒店数据索引表和匹配酒店索引表示意图;

图3是本发明中实施例一的酒店数据匹配方法整体实现框架示意图;

图4是本发明中实施例二的酒店数据匹配装置结构框图。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

实施例一:

本发明实施例一提供一种酒店数据匹配方法,图1为本发明实施例提供的一种酒店数据匹配方法的实现流程图,如图1所示,该方法利用ElasticSearch(记为ES)执行匹配过程,本实施例中,也可以通过MongoDB等方式实现,在此不做赘述,具体包括以下步骤:

S1:获取多个平台的原始酒店数据,具体是:通过爬取平台或不同平台的API接口,获取不同平台的大量平台酒店数据,如携程、艺龙、道旅、去哪儿等平台,并对平台酒店数据进行数据处理,得到原始酒店数据,写入ES的原始酒店数据索引表,记为all_plats_in。

其中,经过实践发现,来自爬取平台列表页的酒店数据质量较高,重复数据少,因此本实施例中,更优的方式是利用爬取平台。

S2:进行酒店匹配,具体是:按照预设的平台优先级,选取原始酒店数据的第一平台原始酒店数据,写入ES中得到匹配酒店索引表,记为all_hotel_in,根据匹配因子的相似度,依次与其余平台的原始酒店数据进行酒店匹配,得到匹配酒店索引表。

预设的平台优先级指将不同平台的数据进行排序,可以根据业务需要进行更改,例如设定携程作为第一平台,即最重要业务平台,对应的携程的酒店数据为平台优先级第一的原始酒店数据。

本实施例中,匹配因子包括:名称、地址、经纬度、电话、邮编等,按照业务需求给匹配因子划定权重和优先级,例如,本实施例的一种实施方式下,以经纬度(过滤限制3公里以内的酒店)作为筛选条件,然后是名称、地址、电话、邮编,计算匹配因子相似度时,ES在其他平台酒店数据中进行搜索,并对搜索的酒店进行打分得到相似度,从而确定相似度最高的酒店数据。

S3:根据匹配酒店索引表在ES中生成匹配表(记为hotel_map_in)和基础信息表(hotel_in),其中,匹配表hotel_map_in包括:酒店的标准编号和匹配上的酒店在不同平台的原始编号,标准编号指按照业务需要定义的编号标准给酒店进行编号,基础信息表hotel_in从匹配酒店索引表结合各平台的原始酒店数据提取得到,包括:每个酒店的基本信息,例如名称、地址、电话、星级、匹配数量、经纬度、地区信息等,匹配数量可以作为后期向用户推荐酒店的推荐考虑因素。

上述地区信息的获取过程为:根据预设的平台优先级,从各平台原始酒店数据中提取基础信息,生成ES的平台信息表,根据平台信息表中经纬度信息,通过谷歌或百度坐标反查接口将城市信息保存数据库,经过后期整理完善后,将城市city、区state、国家country等地区信息提取出来,添加到基础信息表hotel_in中。

S4:结合匹配表和基础信息表,进行匹配准确性验证。

下面详细描述本实施例的一种酒店数据匹配方法的具体过程。

其中S1中,数据处理具体包括:数据清洗、各平台数据校验和数据去重。

1)数据清洗包括:

根据坐标反查功能将平台酒店数据中国内酒店和国际酒店进行区分,并根据不同提供方的坐标反查功能进行相互校验,将酒店坐标和酒店地址进行对应,这是因为平台原始酒店数据中可能存在部分脏数据,其经纬度或者地址信息有问题,如果不进行处理,就在后续的匹配过程中造成隐患。本实施例的一种实施方式中,可以利用百度或者谷歌的坐标反查功能进行相互校验。

2)各平台数据校验包括:

校验平台酒店数据中酒店的经纬度是否在第二预设范围内,并下线不符合第二预设范围的平台酒店数据,本实施例中,第二预设范围可选的包括:校验酒店纬度在-90至90之间,经度在-180至180之间,并且经纬度不在-1至1之间,理论上经纬度在-1至1之间的位置不在陆地上,因此不存在酒店,本实施例中,经纬度校验可以根据陆地、大洲和国家等详细数据进行第二预设范围调整,从而修复更多的数据问题。

校验所述平台酒店数据中酒店的名称、地址、经纬度字段是否有内容缺失,如果有内容缺失,则下线对应的酒店数据,这里的酒店包括国内酒店和国际酒店,对应的名称包括中文名称和外文名称,对应的地址包括中文地址和外文地址,对应的经纬度字段包括中文经纬度字段和外文经纬度字段,因为可能由于翻译缘故造成酒店外文名称不统一,导致有些酒店数据存在外文名称、地址字段中混有中文字段的现象,这些细节在检验过程中都要予以考虑。

校验平台酒店数据中酒店的星级或评分是否在第三预设范围内以及各字段是否有缺失、格式是否都满足要求,并修改不符合第三预设范围的酒店,对其做数据标准化处理本实施例中,第三预设范围可选的包括:星级或评分统一在0-5之间。

3)数据去重包括:

对名称、地址完全相同的酒店进行去重,本实施例中,将同一个平台的国内酒店,当酒店名称、地址完全一致时,进行去重并归入重复酒店库。将国际酒店中外文名、外文地址完全相同的酒店去重,并归入重复酒店库。

将酒店名称相同且地址位于第四预设范围内的酒店,按组归入重复酒店库,对重复酒店库中的同组酒店,按照预设时间间隔获取价格,下线没有获取到价格的酒店。

如果同组酒店均没有价格,则将其存入备用酒店库,定期进行价格获取,当获取到价格后,则激活有价格的酒店,重新进入平台酒店数据中。

本实施例中,第四预设范围可选的为经纬度3公里以内(该参数根据实际匹配效果不断优化和调整),即酒店名称相同,且经纬度位于3公里以内的酒店归入重复酒店库。对于成对的重复酒店,爬取未来5个时间间隔的酒店价格,时间间隔的取值要错开周末和节假日,如果这对重复的酒店中,其中一个能获取价格,一个不能,则下线不能获取价格的酒店,匹配时不予考虑,可选择通过多次设置不同时间间隔进行价格查询的方式提高下线准确度。对两个都有价格的酒店做人工校验,剔除重复酒店。如果两个酒店都是不能获取价格的酒店,将这对重复酒店存进备用酒店库,并定期对备用酒店库中的酒店进行价格获取,一旦获取到价格后,则激活该酒店,重新进入匹配流程。

其中S2,酒店匹配的过程具体为:

S21:当前平台的原始酒店数据在ES中,查询另一平台的原始酒店数据,得到匹配因子相似度最高的酒店之后,进行反向验证,具体是:在all_plats_in中反向验证另一平台的原始酒店数据,如果查询到另一平台的原始酒店数据时,比较前后两个另一平台原始酒店数据的酒店编号是否一致。

例如某一种实施方式中,A平台有一个酒店,名称为美丽酒店,B平台有美丽酒店以及另一家美好酒店,当B平台的美好酒店在A平台的原始酒店数据中进行查询,则根据匹配相似度返回A平台的美丽酒店,如果查到A平台的美丽酒店后再返回B平台进行查询,则会返回美丽酒店,这样查询到的前后两个酒店编号就不一致,因此需要进行反向验证排除这种情况。

S22:在ES匹配以及反向验证后,初步判断为同一家酒店后,进一步在ES外做相似度校验,当酒店编号一致且匹配因子的相似度大于预设的第一相似度阈值时,将另一平台的原始酒店数据的酒店编号,写入匹配酒店索引表中第一平台原始酒店数据的匹配酒店编号(记为hotel_id)内,如果酒店编号不一致则将另一平台的原始酒店数据作为一条新数据写入匹配酒店索引表中。

本实施例之所以要在ES外进行相似度校验,是因为ES在进行酒店检索时,通常情况下,总能从一堆数据中返回一个查询结果,哪怕两个酒店数据实际不太相关,经过ES匹配之后,也会输出相似度最高的酒店数据,反过来认为,ES即便给出相似度最高的酒店,其实际相似度仍有可能较低,特别是在3公里以内两个平台分别只存在一家酒店时,ES往往把这两家酒店匹配到一块儿。

例如A平台有一家酒店,酒店名称为:quality inn&suites,B平台有一家酒店,酒店名称为:holiday inn brownsville,二者顺利通过ES匹配和反向验证,但实际两者是不同的酒店,因此需要再进行反向验证通过之后,根据预设的第一相似度阈值继续进行相似度验证,本实施例的一种实施方式中,第一相似度阈值可选的为30%,该参数是大量酒店匹配过程中得出的经验参数,可以根据业务需要进行调整。

S23:以此类推,将其余所有平台的原始酒店数据都与all_hotel_in(即保存的第一平台原始酒店数据)进行匹配,当第一平台酒店数据与多个平台的数据逐一进行匹配之后,可能匹配到多个酒店,此时hotel_id后面可能会有多个不同平台的酒店编号。

如图2所示,为本实施例的原始酒店数据索引表和匹配酒店索引表示意图。从图中可以看出,all_plats_in存储各平台的原始酒店信息,图中示出了,同一个酒店在艺龙和去哪儿两个平台的酒店数据,以及经过匹配后进入all_hotel_in中只有一个艺龙平台的酒店,并将去哪儿的酒店id写入hotel_id中。

实际使用过程中,all_plats_in可能会存储大约400-500万家酒店数据,因为会有大量来自不同平台的重复酒店数据,经过本实施例的酒店匹配后,进入all_hotel_in中的酒店减少至大约100多万家不同的酒店。

其中S4,结合匹配表和基础信息表,进行匹配准确性验证,具体是:

S41:结合匹配表和基础信息表,查找名称相同且地址相同的酒店,下线经纬度错误且匹配平台数量少的酒店,目的是将之前可能漏掉的经纬度错误的酒店下线,例如,两个同名同地址的酒店,其经纬度相差超过6公里,甚至于达到几十公里,由此判断必有一个出错,可以通过查询经纬度的方式来纠错,也可以下线匹配平台数量少的酒店。

S42:或者,在匹配表中随机抽取预设数量的酒店作为验证酒店,在匹配酒店索引表或基础信息表中依次计算每一个验证酒店的名称、地址相似度,并根据计算结果评估匹配质量。

本实施例的一种实施方式中,从基础信息表hotel_in中随机抽查100个酒店,在匹配酒店索引表all_hotel_in中,通过ES中查询相似度,如果匹配质量差,则有可能出现一个酒店搜索到多条相似度高的酒店,如果匹配质量好,在all_hotel_in中很少出现相似度高的酒店,因此可以根据计算结果评估匹配质量。

如图3所示,为本实施例的一种酒店数据匹配方法整体实现框架示意图,从图中可以看出,从爬取平台或者不同平台API接口得到多个平台的平台酒店数据,进行数据清洗、各平台数据校验和数据去重得到多个平台的原始酒店数据,其中数据去重过程中会将部分酒店存入重复酒店库或备用酒店库。然后对原始酒店数据进行酒店匹配得到匹配表和基础信息表,最后进行匹配准确性验证。

本实施例通过ElasticSearch建立索引并进行反向验证的方式,通过相似度算法进行验证,执行效率高,能够过滤匹配较差的酒店链接,并且经过实例验证,能够对多平台酒店实现全自动匹配,自动匹配准确度超过90%,因此只需要少量人力资源补充完成匹配过程,降低了人工占比,提高了酒店匹配效率。

实施例二:

本发明实施例二提供一种酒店数据匹配装置,如图4所示,为本实施例的一种酒店数据匹配装置结构框图,从图中可以看出,包括以下几个部分:

平台酒店数据爬取装置10,用于获取不同平台的平台酒店数据,并对所述平台酒店数据进行数据处理,得到原始酒店数据,写入原始酒店数据索引表;

酒店匹配装置20,用于按照预设的平台优先级顺序,选取第一平台的原始酒店数据,写入匹配酒店索引表,根据匹配因子的相似度,逐一与其余平台的平台原始酒店数据进行酒店匹配,得到匹配酒店索引表;

生成匹配表和基本信息表装置30,用于根据所述匹配酒店索引表生成匹配表和基础信息表,所述基础信息表包括酒店标准编号和不同平台原始编号;

匹配准确性验证装置40,用于结合所述匹配表和所述基础信息表,进行匹配准确性验证。

另外,本发明还提供一种酒店数据匹配设备,包括:

至少一个处理器,以及与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如实施例一所述的方法。

另外,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,其中计算机可执行指令用于使计算机执行如实施例一所述的方法。

以上各实施例仅用以说明本发明的技术方案,而非对其限制,尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1