基于游记语义分析和自然语言处理的智能行程生成算法设计

2018-06-06 10:14黄鸿李悦
电脑知识与技术 2018年7期
关键词:语义分析自然语言处理

黄鸿 李悦

摘要:针对目前旅游行程生成方法自动化程度较低、操作复杂的问题,提出了一种基于游记语义分析和自然语言处理的行程生成算法。该方法以常见的非结构化游记文本作为数据源,采用关键词遍历、行程时序提取、兴趣点名称提取的方法,获取游客在旅行目的地的游览轨迹,生成结构化旅游行程。最后通过多篇同类行程的横向比较,降低处理结果的冗余度,自动制定具有实用性的旅游行程计划。

关键词:旅游行程定制;自然语言处理;语义分析

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)07-0160-02

1 引言

随着自由行成为一种热门的旅游方式,很多游客在规划行程时,都会在互联网上查阅相关的游记。互联网上的热门游记通常是由“旅游达人”把自己的实际体验总结提炼而成,并包含了他们对目的地前期研究成果,在时间、景点和预算的安排上也具备一定的合理性。对于对旅游目的地尚不熟悉的游客来说,查阅游记就可以绕过海量的碎片化信息,无疑是获取有用信息的捷径。

然而,互联网上游记的作者和来源都十分复杂,大都通过普通的文本编辑器生成,没有统一的格式标准。在当下UGC信息爆炸的时代,热门游记数量极多,据蚂蜂窝旅游网2016年12月统计,在中国游客偏爱的境外热门目的地(如东京、曼谷),阅读量超过2000的游记已有3000多篇,平均长度超过一万字。每个目的地每天还以超过20篇的速度增长。因此,游客要通过阅读多篇游记,人工的从中提取中有用信息无疑十分耗费精力,更难以辨别出不同游记中在时间、景点和交通安排上的差异,同时,因为游记格式各异,无法通过简单的格式标记对其进行结构化,游客自己显然无法快速批量的从中提取关键信息,急需研发一种自动化的旅游行程生成方法。

2 基本原理

针对上文中提出的问题,本文选择从旅游大数据和自然语言分析的角度,研发智能化关键信息提取系统,自动提取游记中的关键信息,生成对应的结构化文档——旅游行程。本文所设计的方法不依赖于游记中的特定标识符,也不用进行复杂的参数设置。任何由网页承载的游记文本,只要作者按时间顺序组织内容,并记录了经过的地点(如城市、景点、餐厅、酒店等),均可由本系统生成规范的行程文档,游客无需通读游记全文即可了解游记的旅游路线,城市、景点间的交通方式和游记作者推荐的美食、商品也能得到清晰的展示。

在这一方法中,则需要针对性的讨论如下3个问题:

2.1 按时间顺序对游记进行分段的技术路线

游记原文游记是一种对旅行过程的记录,因此绝大部分游记中均按时间顺序写作,也就包含描述时间的标志性词汇,而常见的序数词汇、日期词汇、长距离交通描述、重复性分隔符均可以作为具有时间属性的标志性词汇。为保证分段方法能够适用于绝大多数游记,本文将这些常见的标志性词汇归入为“分段符字典”,在对游记进行分段时①,系统会用“分段符字典”中的词汇依次遍历游记全文,从而获得多种分段结果。必须注意的是,一个词汇可能会产生多种分段结果,因此分段结果的数量可能远多于字典中的词汇数量。

2.2 解决兴趣点名称多义性和同义性问题的技术路线

针对这个问题,本文从多个维度提出综合性的解决方案:

(1) 对旅游资源设置多重别名,并分别设置权重参数,根据不同别名的出现频次和对应权重,计算出某一旅游资源的匹配概率,以解决“一地多名”的问题。

(2) 建立多个旅游资源之间的关系矩阵,通过上下文分析的方式,确定某一名称的正确释义,以解决“多地同名”的问题。

(3) 通过提取游记的旅行目的、旅行行为,设立作者行为参数,对游记中提及某一名称时的语义进行判定,以解决“一地多类”的问题。

当然,由于旅游资源众多,人工设定以上参数的工作量极大,因此本文通过自我训练的方式,使用大量的游记,让系统自身完成大部分参数的设定,以降低人工调整参数的工作量。

2.3 对多条同源行程进行合并的技术路线

在设计同源行程的合并算法是,有三个重要的切入点:

(1) 单条行程各天POI访问记录的对照分析,找出偏离本条行程的冗余访问记录。

(2) 多条行程中对应天POI访问记录的对照分析,找出偏离当天行程的冗余访问记录。

(3) 找出不同行程在游记原文中的重叠部分②,然后统一删除重叠部分带来的冗余访问记录。

在使用以上方法去除掉冗余记录后,在按天合并多条行程(此时可使用合集运算),即可得到一条较为准确的行程。

3 具体算法

游记文本的处理过程如下:

1) 根据用户输入的游记所在网页的URL,从网络上获取WEB文档,记为Traw。

2) 分析WEB文档的来源,去除HTML标记、图片、表格等与正文无关的信息,生成纯文本的游记,记为Trefined。

3) 遍历游记全文,获取游记的基本信息。具体而言,就是获取这段旅行的起止时间(分别记为dstart, dend)、目的地國家(记为Cdest)、作者、旅行目的、同行人员、组织方式(有无明确的时序结构)等基本信息。

4) 根据第3步的获得的基本信息,对纯文本游记(Trefined)进行分段。分段方法是按具有时间属性的标志性词汇,遍历游记全文,从而以这些词汇的位置把游记切割为多段。

考虑到自然语言的复杂性和多义性,可能有多种分段方案适用于该游记,产生多种分段结果(假设有n种)。设数组P1为一种分段结果,其内容为[p1,1, p1,2, p1,3, …, p1,m],其中p1,2表示使用分段结果P1中的第2段文本,也就是该分段方案中对第2天游记的文字描述。因此,当有多个分段结果时,就产生了分段结果矩阵MP,如式(1)

5) 从旅游专题资源数据库③中,获得游记访问国家的所有兴趣点(POI)名称。

技术上,就是读取全球的旅游POI,根据第3步中获取的目的地国家(Cdest)对这些POI进行筛选,得到属于该目的地国家的POI,将这些POI的名称放入集合A{a1, a2, a3, …, ak}。

6) 提取游记中每天访问的POI记录。

技术上,就是使用POI名称集合A中的元素分别匹配分段结果矩阵MP中的元素,也就是使用POI名称对每个分段结果进行匹配④,获取每种分段结果中,每天的访问的POI记录数组t,以t为元素组成的矩阵,称为访问记录矩阵,记为Mt。该运算过程记为match(MP, A),如式(2)(3)

例如,MP中元素p1,2表示分段结果P1中第2天游记文字描述,用集合A中的元素与p1,2进行名称匹配,得到访问记录数组t1,2[f1,2,1, f1,2,2, f1,2,3, … , f1,2,u],其中f1,2,1~f1,2,u是指分段结果P1中第2天访问的各个POI(当天共访问了u个POI)。

7) 对每种分段结果最后一天的访问记录数组进行清理。

因为每种分段结果都是基于相同的游记文本(Trefined)生成的,因此分段结果中的第一个分段tn,1与最后一个分段tn,m必然会与其它分段结果产生重叠⑤,从而产生大量的冗余访问记录(如图1所示)。为降低后期“去冗余”处理的复杂度,可通过比对相邻分段结果的方式,提前筛选出冗余的访问记录,予以删除。

8) 对多个分段结果的内容进行合并。在技术上,先按时间“对齐”所有分段方案,然后将每天的POI访问记录进行对照分析,找到并清除其中偏离当天行程的访问记录(即冗余访问记录),综合得出一条行程。要判定某条访问记录是否偏离当天行程,通常按式(4)进行,其中Dn,m,1为访问记录fn,m,1偏离系数,Rn,m,1,2位访问记录fn,m,1和fn,m,2之间的关联系数

9) 对行程进行最后的“去冗余”处理,生成最终行程并输出,在输出最终行程时,系统还需对行程的内容进行审核,找出其中可能的内容缺失和顺序颠倒,并向用户展现修正方案。

4 结论

本文中提出的算法从用户非结构化文本游记作为数据源,直接把游记转换为结构化的行程,全自动化的提取出游记作者在旅行中访问的城市、景点、餐厅、商店,和入住的酒店,旅行途中使用的交通方式都被分别列明。基于系统后台的旅游资源专题数据库,以上兴趣点与交通方式的详细介绍、位置、花费、预定方式和第三方评价信息都可一键浏览。自动转化生成的行程,以及与行程相关的兴趣点、交通信息还可供导出,以便用户查看。这一系统最大程度上减少了用户在规划旅行时的工作量,省去了通过电子地图、搜索引擎、攻略网站等多个来源查找信息的繁琐过程。

同时,为完成本文所述的算法,建立包含4000篇以上游记的游记样本库,根据目的地国家、作者、来源对这些游记进行简单的人工标注,然后将游记导入系统中,使用训练算法对自然语言分析的模型进行调整,调整的目标参数包括POI别名权重、POI关系矩阵、交通行为判定参数、消费行为判定参数等,从而采用自动化手段,持续性的提升自然语言处理的准确度。

注释:

① 具体算法流程的第4步。

② 由于不同的游记来源于同一篇游记的不同分段结果,由于分段点的随机性,这些分段结果之间必然会产生随机的文字重叠,也就会给行程带来随机的冗余访问记录。分析这些文字重叠的位置,可以去除掉由它们产生的冗余记录。

③ 一个包含全球旅游资源信息的数据库,分类存储了国家、地区、景点、餐厅、酒店、商店、交通枢纽等于旅游有关的内容,对以上内容的名称、地址、坐标、运营或管理状态都有描述。该数据库的信息量和准确程度直接决定了本文实现效果。

④ 是指使用POI的别名与分段结果进行模糊匹配,使用的POI别名与匹配结果的完整性,将记录在访问记录矩阵Mt中,并用于行程的“去冗余”处理。具体过程参见第2章技术路线。

⑤ 当游记的叙事结构较为复杂时,其他分段也可能产生重叠。

参考文献:

[1] 易水强.基于改进的遗传算法的城市内自助游行程规划系统研究[D].中国计量学院,2014.

[2] 郭宏蕾,姚天順.自然语言中时间信息的模型化[J]. 软件学报,1997(6):432-440.

[3] 陈周娟.基于语义的自然语言理解歧义消除[J]. 运城学院学报,2005,23(5):66-67.

[4] 樊治平,肖四汉.基于自然语言符号表示的比较矩阵的一致性及排序方法[J].系统工程理论与实践,2002,22(5):87-91.

[5] 陆青,梁昌勇,黄永青,等.面向旅游行程规划的交互式多智能体遗传算法[J].计算机应用研究,2008,25(11):3311-3313.

猜你喜欢
语义分析自然语言处理
基于组合分类算法的源代码注释质量评估方法
词向量的语义学规范化
中文短文本语法语义相似度算法