一种基础房型自动聚合方法与流程

文档序号:12719773阅读:739来源:国知局

本发明属于信息技术领域,涉及一种在线旅游网站、比价平台、价格一致性监控方法,特别是涉及一种基于文本信息的房型自动聚合方法。



背景技术:

随着在线旅游网站的飞速发展,酒店在线预定平台云集,多个平台推出了价格对比功能。可以对比出同一房型在不同OTA(Online Travel Agent,在线旅游社,如携程、去哪等)的价格及不同的房型的价格差距。要进行价格对比首先要确定不同OTA酒店的匹配关系,之后再对具体的房型进行聚合,为了降低人工成本,大多釆用自动聚合的方法,但传统的釆用字符串的聚合方法有以下不足:

●精确匹配召回率较低。

●模糊匹配准确率难以控制。

●同一个基础房型的表述方式不同,导致的无法聚合,例如:两人间与双人房,单人间与单间。

●同一个基础房型在不同OTA上表述方式不同,导致的无法聚合,例如:双床房与标准间。



技术实现要素:

针对上述问题,本发明的目的在于提供一种基础房型自动聚合方法。本发明充分利用文本信息,从文本中抽取出房型的关键要素,提高了聚合的鲁棒性,避免无用信息对聚合过程中的干扰。基于本发明的结果,当用户在网页中查看某家酒店的房型信息时,可从数据库中查询出该房型在不同来源上对应的(已经聚合的)房型与其进行价格等方面的对比,用户根据对比结果选取目标房型。

本方法釆用如下方案对房型进行自动聚合:

一种基础房型自动聚合方法,其步骤为:

1)对于同一家酒店,分别从两不同来源上获取该酒店的房型名称数据,每组房型名称数据中包括多个基础房型名称;

2)对每组房型名称数据分别进行结构化处理,得到该组房型名称数据中每个房型名称的结构化信息;其中,第一组房型名称的结构化信息为(a1、a2、…、ai、…、an),第二组房型名称的结构化信息为(b1、b2、…、bi、…、bn);n为结构化信息中的元素总数;

3)对步骤2)得到的所述结构化信息中的元素进行两两组合并计算每一组合的匹配度;

4)将基础房型名称两两组合生成若干候选聚合方案,得到一聚合方案候选集合;其中,任一候选聚合方案(a1-bi、a2-bj、…、ai-bk、…、an-bm)中每一组合ai-bk的匹配度均大于设定阈值;bi、bj、…、bk、…、bm均为第二组房型名称的结构化信息中的元素;

5)根据每一候选聚合方案中的各组合的匹配度,计算该候选聚合方案的综合得分;将综合得分最高的候选聚合方案做为最终聚合结果。

进一步的,使用决策树算法计算所述匹配度;所述决策树算法构建的树结构为二叉树或非二叉树,其中,每个非叶节点表示一个特征属性上的测试,连接非叶节点的分支代表该非叶节点对应的特征属性在该特征属性的值域上的输出,每个叶节点存放一个类别。

进一步的,计算所述匹配度的方法为:

31)从房型名称的结构化信息中确定待匹配的特征;

32)对每种特征进行度量得到该特征的增益率;

33)选择增益率最大的特征进行分裂,形成该房型名称的决策树;

34)将决策树上的叶子节点标记上对应元素组合的匹配度。

进一步的,所述结构化信息的生成方法为:

41)对房型名称数据进行规范化处理;

42)对步骤41)规范化后的文本进行分词,得到房型名称的词序列;

43)从所述词序列中进行要素抽取,并标注要素类别,形成所述结构化信息。

进一步的,得到所述词序列的方法为:首先采用基于词典的最大匹配分词方法对步骤41)规范化后的文本进行分词,然后对于有歧义的分词采用序列标注的分词方法进行分词,得到所述词序列。

进一步的,得到所述词序列的方法为:对于待分词的汉子序列,采用正向最大匹配和逆向最大匹配分别依次寻找匹配的最长词典词,如果该汉子序列中存在没有被匹配上的单词,则将其作为单字词处理,直至该汉字序列处理完毕;对于正向最大匹配和逆向最大匹配不一致的单词作为有歧义的分词,采用有监督的序列标注的分词方法进行分词。

进一步的,步骤43)的实现方法为:对于所述词序列中的每一个词,判断其是否在设定知识库中,如果在则将该词抽取出来并根据知识库标记相应的类型;形成所述结构化信息。

进一步的,构建所述知识库的方法为:首先初始化若干关键词;然后对每条房型名称文本统计关键词左邻、右邻若干个字以内所有可能的词的频次;过滤掉频次小于设定阈值的词;然后对剩余的词进行筛选得到所述知识库。

房型自动聚合方法分为三个阶段:

1.抽取房型信息中的要素。要素是指房型的重要特征,例如“床型”、“房间设施”等。具体步骤如下:

a)对文本进行规范化。例如统一中文标点、统一全角半角字符、统一中文数字以及繁体中文转简体中文等操作。

b)文本分词,基于词典和统计的方法对基础房型文本进行分词。

c)结构化数据,根据知识库抽取房型名称要素信息,包括“床数”、“人数”、“床型”、“是否有窗”、“设备”等等。知识库的构建方法参见具体实施方式。

2.计算各个房型之间的匹配度。匹配度是指同一家酒店的不同基础房型之间匹配关系的概率。该阶段我们使用上一阶段抽取的房型名称要素,通过使用决策树算法计算它们的匹配度。

3.房型聚合。通过聚合策略,选择最优的聚合方案。

与现有技术相比,本发明的积极效果为:

相较于传统的通过字符串相似度的聚合的方式,本发明召回率提升了27%,准确率提高了5%。

附图说明

图1为本发明的方法流程图。

具体实施方式

下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。

本发明的聚合方法流程如图1所示,其步骤包括:

步骤1获取两组房型名称数据。

从数据库中查询出同一家酒店在两个不同来源上(比如分别从携程网站和艺龙网站上)的基础房型名称。这样本发明便可以得到两组数据,每组数据中包括多个基础房型名称。

步骤2第一组数据处理。

在上一步可以得到要进行匹配的两组基础房型名称数据。本步骤将对第一组房型名称数据中的每一个基础房型名称进行结构化处理,得到该组房型名称中每个房型名称的结构化信息。具体的结构化处理步骤包括:

21)文本规范化

本步骤对基础房型名称进行规范化处理,得到规范化后的文本。文本规范化的意义有两个,一是将拥有相同意义的不同文本转换成统一格式,二是将文本中无意义并且干扰后续处理的内容进行删除。规范化的处理给后续的分析减轻了负担。具体的规范化的内容有:

a)对中文标点以及英文大小写做统一。例如:去除空格,以及半角、全角括号的统一。

b)将繁体中文转换成简体中文。

c)将近义词进行规范。例如:“标准间”、“标准房”,统一规范为“标准房”

d)将缩写进行规范,例如:“商套”规范为“商务套房”

22)文本分词

上一步骤中,得到了基础房型名称的规范化文本,该步骤对规范化后的文本进行分词,得到基础房型名称的词序列。中文分词是中文自然语言处理的基础步骤,本发明分词采用词典分词和统计分词融合的方法。首先采用基于词典的最大匹配分词方法,针对分词有歧义的部分再采用序列标注的分词方法。

基于词典的最大匹配分词方法,给定词典,对于待分词的汉字序列(基础房型名称的规范化文本),依次寻找匹配的最长词典词,无匹配者则将该字作为单字词处理,直至该汉字序列处理完毕。按照对汉字序列扫描方向的不同,该方法又可以分为:正向最大匹配(从左向右匹配)和逆向最大匹配(从右向左匹配)。例如,对于序列“当原子结合成分子时”,正向最大匹配结果为“当|原子|结合|成|分子|时”,而逆向最大匹配结果为“当|原子|结合|成分|子时”。

显然,正向最大匹配和逆向最大匹配都不能很好地处理切分歧义问题。正向最大匹配和逆向最大匹配也可以结合形成双向最大匹配,双向匹配时正向和逆向匹配不一致的地方,往往是潜在歧义的地方。有歧义往往需要根据具体上下文确认分词结果。有监督的序列标注方法能够充分的挖掘上下文的丰富特征,因此有歧义的情况下本发明引入序列标注方法消除歧义。该方法将词的切分问题转换为字的分类问题,每个字根据其在词中的不同位置,赋予不同的位置类别标记,比如词首、词中、词尾和单字词。基于这样的标记序列,很容易确定句子的切分方式。其中,B(Begin)、M(Middle)、E(End)、S(Single)分别表示词首、词中、词尾、单字词。有了字的标记序列,符合正则表达式“S”或“B(M)*E”的字序列表示一个词,从而很容易地完成句子切分。为了实现序列标注任务,本发明采用条件随机场模型(Conditional Random Fields,CRF),该模型在自然语言处理中得到广泛应用,并取得了很大成功。具体特征包括:前一个字、当前字、后一个字、前一个字与当前字、当前字与后一个字,以及基于这些一元特征的二元特征。条件随机场模型利用提取的这些特征,预测出的每个字的类别标记。

最大匹配方法的词典以及有监督的条件随机场模型的训练学习语料都来自本发明人工标注的1万条基础房型名称。

23)结构化数据

上一步骤中得到了基础房型名称的词序列,该步骤会对词序列抽取文本中的关键要素,并标注相应的要素类别,形成基础房型名称的结构化信息。结构化的信息包括“床数”、“人数”、“床型”、“是否有窗”、“设备”等等。其意义在于,生成的结构化的数据不需考虑字符串之间的先后顺序及内容是否完全一致等问题,便于下一阶段基于规则等进行匹配。

结构化信息的生成步骤如下:

1.遍历分词后的词序列

2.对于每一个词,判断是在知识库中,如果存在则将该词抽取出来并根据知识库标记相应的类型。

3.将每个词的结果进行整合形成结构化的信息。

举例例如房型名称的分词结果为“标准三人间”,结构化的信息为“{"SourceBaseName":"标准三人间","PersonNum":["三人"],"Adj":["标准"]}”。

抽取方法基于知识库,对于在文本中出现并且也包含于字典中要素进行提取并标注其类别。

知识库的构建基于种子关键词,具体步骤如下:

1.首先初始化种子关键词。初始关键词由人工添加。

2.在批量的房型名称文本中,对每条基础房型名称文本统计关键词左邻、右邻4个字以内所有可能的词的频次。

3.过滤掉频次小于设定阈值的词。

4.对剩余的词进行人工筛选。

步骤3第二组数据处理

上一步骤中,对第一组数据进行了处理,本步骤采用和上一步骤同样的方式对每二组房型数据进行处理,得到每二组数据的每个基础房型名称的结构化信息。具体的处理方式可参见上一步骤。

步骤4确定匹配关系

经过步骤2和步骤3,分别得到了两组基础房型名称的结构化信息。在这一步中,对两组基础房型名称的结构化信息进行两两组合并对该组合中的两个房型计算匹配度,得到每种组合的匹配度。例如两组数据分别为[a1,a2]、[b1,b2],经过本步骤处理后可得到{a1-b1=0.3,a1-b2=0.6,a2-b2=0.8},其中a1,a2,b1,b2为基础房型名称,a1-b1=0.3表示,房型a1与房型b1的匹配度为0.3。

两个房型的匹配度是指两个房型有多大的概率是匹配关系。此类问题可以转换成二分类问题。匹配度的计算使用决策树算法。决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个“非叶”节点表示一个特征属性上的测试,每个分支代表这个特征属性在该特征属性的值域上的输出(例如“床数是否一致”这个特征,值域是[不一致,缺省,一致]),而每个叶节点存放一个类别(即匹配或不匹配)。决策树的匹配度计算方式是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。决策树的生成是本步骤的关键,下面给出其具体的生成步骤:

41)根据业务知识从结构化信息中选择特征,具体特征如下:

1.“原始文本是否一致”取值范围:[不一致,缺省,一致]

2.“范化后的文本是否一致”取值范围:[不一致,缺省,一致]

3.“人数是否一致”取值范围:[不一致,缺省,一致]

4.“床数是否一致”取值范围:[不一致,缺省,一致]

5.“床型是否一致”取值范围:[不一致,缺省,一致,规则相似]

6.“是否有窗”取值范围:[不一致,缺省,一致]

7.“修饰词是否一致”取值范围:[不一致,缺省,一致,规则相似]

8.“剩余项是否一致”取值范围:[不一致,缺省,一致]

9.“卧室是否一致”取值范围:[不一致,缺省,一致]

10.“房型是否一致”取值范围:[不一致,缺省,一致]

11.“设备是否一致”取值范围:[不一致,缺省,一致]

12.“大厅是否一致”取值范围:[不一致,缺省,一致]

13.“景观是否一致”取值范围:[不一致,缺省,一致]

14.“房型级别是否一致”取值范围:[不一致,缺省,一致]

15.“入住人性别是否一致”取值范围:[不一致,缺省,一致]

16.“房间号是否一致”取值范围:[不一致,缺省,一致]

17.“有无发票是否一致”取值范围:[不一致,缺省,一致]

18.“楼号是否一致”取值范围:[不一致,缺省,一致]。

注:规则相似的“规则”是指,不同OTA对房型的命名规范不同,存在特定规则,例如:携程的“双床房”与艺龙的“标准间”指的是同一个房型。

42)分裂属性度量标准

在这里使用ID3算法分裂属性度量标准(也就是对从上一步确定的每种特征)进行度量得到每个特征的增益率。根据信息论,期望信息越小,信息增益越大,从而纯度越高。所以ID3算法的核心思想就是以信息增益度量属性选择,选择分裂后信息增益最大的属性进行分裂。下面先定义几个要用到的概念。

设D为用类别对训练元组进行的划分,则D的熵(entropy)表示为:

其中pi表示第i个类别在整个训练元组中出现的概率,可以用属于此类别元素的数量除以训练元组元素总数量作为估计。熵的实际意义表示是D中元组的类标号所需要的平均信息量。

本发明将训练元组D按属性A进行划分,则A对D划分的期望信息为:

而信息增益即为两者的差值:

gain(A)=in fo(D)-in foA(D)

43)决策树的生成

计算每个特征的增益率,然后选择增益率最大的特征进行分裂。最后形成树形结构。

44)标记匹配度

在生成树形结构之后,就可以得到这个树整体的准确率了,但这样还是不够的。为了能够让算法适应不同的需求,我们将树上的叶子节点标记上匹配度。利用测试集样本,计算所有叶子结点的准确率,计算方式为所有通过该叶子结点的样本数量比上其中分类正确的样本数量。

决策树的训练学习语料都来自本发明人工标注的1万个基础房型数据。

使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果,该叶子结点的准确率即为匹配度。

步骤5房型聚合

以上步骤只是计算出了两组数据各个房型之间的匹配度。本步骤的目的是生成聚合方案,如果存在多个聚合方案时选择最优解。步骤如下:

1.穷举两组房型的所有组合,构成候选聚合方案候选集合。例如,经过上一步得到了两组房型之间的匹配度为{a1-b1=0.3,a1-b2=0.6,a2-b2=0.8},其中a1,a2是第一组房型数据,b1,b2是第二组房型数据。a1-b1=0.3表示,房型a1与房型b1的匹配度为0.3。可以看到a1分别与b1,b2之间都存在匹配关系,因此候选聚合方案应该包含两种即为{a1-b1,a2-b2}、{a1-b2,a2-b1}。

2.对于每个候选聚合方案,将方案中各个组合的匹配度求和,得到该候选聚合方案的综合得分。

3.选择综合得分最高的候选聚合方案为最终聚合结果。

例如,第一组房型名称为[a1,a2,a3],第二组房型名称为[b1,b2,b3],匹配度计算后的结果为:

a1->b1匹配度为1

a2->b2匹配度为0.5

a2->b3匹配度为0.3

a3->b2匹配度为0.5

a3->b3匹配度为0.7

那么候选聚合方案有两种,分别为:

1、a1-b1,a2-b2,a3-b3综合得分为1+0.5+0.7=2.2

2、a1-b1,a2-b3,a3-b2综合得分为1+0.3+0.5=1.8

因为方案1的得分为综合得分最高的方案,因为最后的聚合结果为方案1。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

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