利索能及
我要发布
收藏
专利号: 2021103422363
申请人: 西安理工大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-07-12
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于知识图谱与蚁群算法的旅游路线推荐方法,其特征在于,具体按照如下步骤实施:

步骤1,构建旅游知识图谱;

步骤2,获取用户游记数据集,对数据进行去噪,分词与景点匹配后得到最终有效的路线数据集;

步骤3,基于步骤1构建的知识图谱,将用户的历史数据作为兴趣起点在图谱中挖掘用户兴趣方向上的候选景点并获取候选景点的评分与参考用时;

步骤4,对步骤2获得的路线数据集进行预处理,计算景点间的转移率并建立转移率矩阵,计算景点在路线中的出现频率并制作景点频率表;

步骤5,查询候选景点间的最短通行时间,建立通行时间矩阵;

步骤6,基于步骤3、步骤4及步骤5的数据,利用蚁群算法进行优化,得出最优解路线,将其作为结果推荐给用户。

2.根据权利要求1所述的一种基于知识图谱与蚁群算法的旅游路线推荐方法,其特征在于,所述步骤1具体为:

步骤1.1,获取各个旅游出行网站上的景点数据,获取信息包括景点名称、景点级别、景点评分、景点地址、景点开放时间、景点官方网址、景点官方联系方式、景点参考用时;

步骤1.2,将步骤1.1从各个旅游出行网站获取到的多源数据通过Python中Synonyms中文近义词工具包进行融合,首先两两判断不同网站景点数据集中的景点名称是否相似,假设从网站1与网站2获得了相对应的数据集1与数据集2,从数据集2中取一个景点数据S1,将其景点名称与数据集1中所有景点的景点名称进行相似度比较,若相似度值都小于0.7,说明数据集1中不包含景点数据S1,将景点数据S1的所有数据并入数据集1中,包括景点名称、景点级别、景点评分、景点地址、景点开放时间、景点官方网址、景点官方联系方式、景点参考用时,若相似度值大于0.7,假设景点数据S1的景点名称与数据集1中景点数据P1的景点名称计算相似度后相似度值大于0.7,说明S1与P1是一个景点,然后比较S1与P1的景点属性,景点属性就是指景点级别、景点评分、景点地址、景点开放时间、景点官方网址、景点官方联系方式、景点参考用时,依次从S1中取出一个景点属性与P1的所有景点属性进行相似度比较,若相似度大于0.7,则不进行操作,若相似度大于0.7,则将该属性补充入P1,并补充该属性所对应属性值,这里的属性值指的是景点属性对应的数据,然后再从数据集2中取出景点数据S2重复上述步骤,以此类推,最后的数据集1融合了数据集2中的数据;

步骤1.3,对步骤1.2中融合好的景点数据,使用中文通用百科知识图谱CN‑Dbpedia中的API“api/cndbpedia/value”获取景点的类型,其请求参数需要包括实体名称与属性名称,其中实体名称即为融合后数据集中的景点名称,属性名称为字符串“CATEGORY_ZH”,依次对融合后数据集中的景点调用API即可获得所对应的景点类型;

步骤1.4,将步骤1.3最终处理好的数据整理成三元组的形式,三元组形式为<头实体,关系,尾实体>,其中,头实体为景点名称,关系为景点属性,尾实体为对应属性值,景点属性即景点级别、景点评分、景点地址、景点开放时间、景点官方网址、景点官方联系方式、景点参考用时,属性值即其对应的数据;

步骤1.5,将步骤1.4中处理好的三元组存储入neo4j图数据库中,构成旅游知识图谱。

3.根据权利要求2所述的一种基于知识图谱与蚁群算法的旅游路线推荐方法,其特征在于,所述步骤2具体为:

步骤2.1,在旅游网站获取用户旅游游记数据,利用jieba分词工具对游记数据进行分词并进行词性标注,获取其中词性为地名(LOC,ns)的词,其中LOC与ns都代表地名;

步骤2.2,使用步骤1中获取到的景点数据中的景点名称对步骤2.1中得到的词利用Synonyms进行两两匹配,将相似度值大于等于0.88的词筛选出来;

步骤2.3,将步骤2.2中获取的数据进行去重,最终得到完整的路线数据集。

4.根据权利要求3所述的一种基于知识图谱与蚁群算法的旅游路线推荐方法,其特征在于,所述步骤3具体为:

步骤3.1,获取要推荐用户的历史浏览景点,或用户没有历史浏览景点,则让用户选择其感兴趣的2‑3个景点,然后基于步骤1.4中获得的三元组,筛选出其中以用户历史浏览景点名称或选择的景点名称为头实体的三元组;

步骤3.2,获取步骤3.1获取的头实体对应三元组内的尾实体,在所有三元组数据中筛选出以上述尾实体为尾实体的三元组,并获取这些三元组中的头实体,然后去除头实体中对应用户历史浏览景点的景点名称,若在步骤3.1中为用户选择的景点,则不进行去除,获得最终的头实体数据集合,即就是候选景点;

步骤3.3,将步骤3.2中最终的头实体数据集合作为用户兴趣方向上的可能感兴趣景点集合,并获取这些景点的景点评分以及景点参考用时。

5.根据权利要求4所述的一种基于知识图谱与蚁群算法的旅游路线推荐方法,其特征在于,所述步骤4中计算景点间的转移率并建立转移率矩阵具体为:步骤4.1,计算景点间的转移率trans(vi),如公式(1)所示:其中,count(vi‑1,vi)为在所有的历史轨迹中连续访问景点vi‑1和景点vi的次数,count(vi‑1)为从景点vi‑1发生转移的总次数;

步骤4.2,建立二维矩阵,行列均为所有候选景点,将转移率填入矩阵中,得到转移率矩阵。

6.根据权利要求5所述的一种基于知识图谱与蚁群算法的旅游路线推荐方法,其特征在于,所述步骤4中计算景点在路线中的出现频率并制作景点频率表具体为:步骤4.3,计算景点在路线中出现的频率fre(vi),如公式(2)所示:其中,num(vi)为在所有的历史轨迹中景点vi出现的次数,numallspot为所有景点出现的次数;

步骤4.4,建立一维数组,长度为候选景点数量且与景点名称一一对应,将景点频率填入数组,得到景点频率表。

7.根据权利要求6所述的一种基于知识图谱与蚁群算法的旅游路线推荐方法,其特征在于,所述步骤5具体为:

步骤5.1,借助百度地图开放平台中的地理编码API获取所有候选景点的经纬度值;

步骤5.2,建立二维数组,其中行和列都候选景点,同一景点之间的通行时间设为0;

步骤5.3,根据步骤5.1中得到的景点经纬度,借助百度地图开放平台中的批量算路功能,两两计算候选景点之间的最短通行时间,并将其填入步骤5.2建立的二维数组中,获得通行时间矩阵。

8.根据权利要求7所述的一种基于知识图谱与蚁群算法的旅游路线推荐方法,其特征在于,所述步骤6具体为:

步骤6.1,对蚂蚁算法的参数进行初始化,具体为:信息素重要程度因子α设置为1,启发函数重要程度因子β设置为2.0,信息素挥发因子ρ设置为0.5,信息素释放总量Q设置为100,蚁群规模u设置为候选景点的数量n,建立n×n的矩阵p_g记录景点之间的信息素且所有景点间路径的信息素设置为1,当前最优路线得分S初始为0;

步骤6.2,设定标模型为:

目标:路线得分S最大;

条件:路线总用时不大于用户最大时间限制Tmax;

建立单目标优化模型如下目标函数:

其中,value(vi)为景点对用户的价值度,其计算方法:Ttraffic(vi‑1,vi)是景点vi到景点vi‑1的交通用时,Tvisit(vi)是景点vi的景点参考用时,Ttraffic(v0,v1)=0,grade(vi)为景点得分等级,其计算方法为公式(5):其中,score(vi)为景点评分,ω1,ω2,ω3,ω4为调节参数,且ω1+ω2+ω3+ω4=1;

条件:

步骤6.3,初始化候选景点数量的蚂蚁,为每个蚂蚁分配一个不同的候选景点作为初始出发点,迭代次数置1;

步骤6.4,计算每个蚂蚁下一个访问景点,计算方式为遍历所有未访问的候选景点,计算其到访概率,到访概率计算方法为公式(6):α

p(vi‑1‑>vi)=pheromone(vi‑1,vi) *(ω1value(vi)+ω2fre(vi)+ω3grade(vi)+ωβ

4trans(vi)) (6)

其中,p(vi‑1‑>vi)为蚂蚁从景点vi‑1到景点vi的到访概率,pheromone(vi‑1,vi)表示vi‑1到vi路径上的信息素浓度;

步骤6.5,基于步骤6.4,以轮盘赌的形式选择每一个蚂蚁下一个要访问的景点;

步骤6.6,步骤6.6,判断每只蚂蚁当前已走过的路径是否满足步骤6.2中的,若满足,则从步骤6.4开始重复操作,若不满足,则计算当前蚂蚁走过路径的得分S;

步骤6.7,当所有蚂蚁得出路线后,遍历每一只蚂蚁,与当前最优路线得分S进行比较,得出最大路线得分的蚂蚁,保存路线作为当前最优解;

步骤6.8,建立n×n的矩阵p_t记录单次迭代蚂蚁在路径上所留的信息素,遍历每只蚂蚁获得的路径,在p_t上填入信息素,信息素计算方式为公式(7):p_t(vi‑1,vi)=p_t(vi‑1,vi)+QS         (7)其中p_t(vi‑1,vi)为景点vi‑1到景点vi路径上的信息素,不同蚂蚁间相同路径的信息素进行叠加;

步骤6.9,更新所有景点间的信息素,即更新p_g矩阵,更新方式为公式(8):ρ

p_g(vi‑1,vi)=p_g(vi‑1,vi) +p_t(vi‑1,vi)  (8)步骤6.10,判断迭代次数是否大于最大迭代次数,若是,则从步骤6.11开始继续执行操作,否则从步骤6.3开始重复操作;

步骤6.11,将最优解的值作为输出结果,推荐给用户。