本发明属于地图位置推荐与搜索服务技术领域,具体涉及一种基于时空约束的位置搜索与推荐方法。
背景技术:
随着移动互联网的迅猛发展,搜索与推荐服务正在逐渐渗透并影响着人们的日常生活,为人们消费、出行、社交、安全提供一定的便利。
目前常用的搜索与推荐服务为“附近”和“搜周边”算法,其实现原理为:通过商户到用户当前所在位置的距离来筛选推荐内容,例如,用户在推荐app中输入“餐厅”这一关键词,app会以一定的排序规则将用户当前所在位置附近的餐厅推送出来。
上述搜索与推荐服务主要存在以下问题:仅仅考虑了空间约束,考虑的约束条件过少,难以为用户提供精确的、多维度的、更符合用户需求的搜索与推荐服务。
技术实现要素:
针对现有技术存在的缺陷,本发明提供一种基于时空约束的位置搜索与推荐方法,可有效解决上述问题。
本发明采用的技术方案如下:
本发明提供一种基于时空约束的位置搜索与推荐方法,包括单人场景下的基于时空约束的位置搜索与推荐方法,以及多人场景下的基于时空约束的位置搜索与推荐方法;
其中,单人场景下的基于时空约束的位置搜索与推荐方法,包括以下步骤1-步骤4:
步骤1,获取时间-空间耦合约束条件、总出行时间tti和预估参与目标活动的时间长度
所述时间-空间耦合约束条件包括以下四种时空约束情况:
第一种时空约束情况:获取起始时间
其中,起始位置
起始时间
终止位置
终止时间
第二种时空约束情况:获取起始时间
第三种时空约束情况:获取起始时间
第四种时空约束情况:获取起始时间
步骤2,计算位置和时间约束下的空间可达范围,包括:
步骤2.1,在起始位置周围的空间中选取若干个采样点,设选取n个采样点,n个采样点集合为:{p1,p2,p3…pn};其中,pj为采样点集合中任意一个采样点;j=1,2,3…n;
步骤2.2,对于任意的采样点pj,均采用以下方法确定其是否为可行采样点;如果最终得到若干个可行采样点,由所得到的所有可行采样点构成可行采样点集合;然后执行步骤2.3;如果没有得到任何可行采样点,则执行步骤4;
步骤2.2.1,对于第一种时空约束情况:
(1)首先计算前序时间
其中:
前序时间
后序时间
(2)判断是否同时满足以下约束条件,如果满足,则采样点pj为可行采样点;否则,采样点pj为不可行采样点;
约束条件1:
约束条件2:
约束条件3:
步骤2.2.2,对于第二种时空约束情况:
(1)首先计算前序时间
其中:
前序时间
由于终止位置无约束,后序时间无法精确计算,因此假设后序时间
(2)判断是否同时满足以下约束条件,如果满足,则采样点pj为可行采样点;否则,采样点pj为不可行采样点;
约束条件1:
约束条件2:
步骤2.2.3,对于第三种时空约束情况:
(1)首先计算前序时间
其中:
前序时间
后序时间
(2)判断是否同时满足以下约束条件,如果满足,则采样点pj为可行采样点;否则,采样点pj为不可行采样点;
约束条件1:
约束条件2:
步骤2.2.4,对于第四种时空约束情况:
(1)首先计算前序时间
其中:
前序时间
(2)判断是否同时满足以下约束条件,如果满足,则采样点pj为可行采样点;否则,采样点pj为不可行采样点;
约束条件1:
步骤2.3,在得到可行采样点集合后,可行采样点集合围成的区域形成空间可达范围;然后执行步骤3;
步骤3,在步骤2得到的空间可达范围内,搜索满足关键字的信息并返还给用户,结束此次流程;
步骤4,向用户返回搜索不成功的通知消息,并提示用户更换搜索条件后再进行重新搜索;
多人场景下的基于时空约束的位置搜索与推荐方法,包括以下步骤1a-步骤4:
步骤1a,设共有v个用户需要联合参与位置搜索与推荐,分别为1,2…v;任意一个用户为i,获取每个用户i的时间-空间耦合约束条件、总出行时间tti和预估参与目标活动的时间长度
步骤2a,计算位置和时间约束下的空间可达范围,包括:
步骤2.1a,计算v个用户的可用时间交集w;
其中,v个用户的可用时间交集w包括以下两种情况:
第一种交集情况:对于v个用户,每个用户均具有起始时间
第二种交集情况:对于v个用户,每个用户均具有起始时间
步骤2.2a,在起始位置周围的空间中选取若干个采样点,设选取n个采样点,n个采样点集合为:{p1,p2,p3…pn};其中,pj为采样点集合中任意一个采样点;j=1,2,3…n;
步骤2.3a,对于任意的采样点pj,均采用以下方法确定其是否为可行采样点;如果最终得到若干个可行采样点,由所得到的所有可行采样点构成可行采样点集合;然后执行步骤2.1d;如果没有得到任何可行采样点,则执行步骤4a;
多人时空约束条件1:对于v个用户1,2…v;采样点pj与每一个用户i均采用步骤2.2的方法判断其是否为单人场景下的可行采样点,如果是,则满足多人时空约束条件1;否则,不满足多人时空约束条件1;
多人时空约束条件2:如果多人的可用时间交集w为双侧时间约束,则:
其中:
步骤2.4a,在得到可行采样点集合后,可行采样点集合围成的区域形成空间可达范围;然后执行步骤3a;
步骤3a,在步骤2a得到的空间可达范围内,搜索满足关键字的信息并返还给用户,并返回到达每个可行采样点pj的最早时刻
步骤4a,向用户返回搜索不成功的通知消息,并提示用户更换搜索条件后再进行重新搜索。
优选的,采用以下方法获取起始时间
由用户直接输入或指定本次搜索所需要的起始时间
如果用户没有直接输入、同时没有指定本次搜索所需要的起始时间
优选的,步骤4和步骤4a中,提示用户更换搜索条件后再进行重新搜索,具体包括以下情况:
(1)如果用户本次输入的时空约束条件属于第一种时空约束情况,则提示用户更改起始时间
(2)如果用户本次输入的时空约束条件属于第二种时空约束情况,则调大后序时间
(3)提示用户调整预估参与目标活动的时间长度
本发明提供的一种基于时空约束的位置搜索与推荐方法具有以下优点:
本发明提供一种基于时空约束的位置搜索与推荐方法,利用用户输入的时间和空间位置约束来计算空间可达范围,从而利用该空间可达范围作为索引来精简搜索实体空间中目标项目,解决了与时空相关的查询中大量不必要的检索,提高检索效率。
附图说明
图1为本发明提供的基于时空约束的位置搜索与推荐方法的流程示意图;
图2为本发明提供的多人场景下时间约束的10种类型示意图;
图3为本发明提供的多人时空约束中的时间窗口交集示意图;
图4为本发明提供的可达范围示意图在矢量数据结构上的结果示意图;
图5为本发明提供的可达范围示意图在栅格数据结构上的结果示意图。
具体实施方式
以下结合附图对本发明进行详细说明:
目前利用机器学习和深度学习的推荐方法并没有以某人前后活动行程和时间规划为主导的搜索启发算法。在o2o领域,由于和真实物理世界有交互,地理位置和时间是两个重要元素。现有常用的“附近”和“搜周边”算法,只是简单通过商户到用户当前所在位置的距离来筛选推荐内容,而并没有做时间规划和可达范围计算。
本发明为一种基于时空约束的位置搜索与推荐方法,其解决的技术问题是利用时间地理学理论框架实现一个在真实物理世界的时空约束下的启发式搜索方法,用以检索在此可行的出行范围内的相关资源,且只在此范围内对相关资源进一步进行排序和推荐,从而精准化搜索和推荐过程,以及减少不必要的搜索。
本发明提供一种基于时空约束的位置搜索与推荐方法,其特点是利用用户输入的时间和空间位置约束来计算空间可达范围,从而利用该空间可达范围作为索引来精简搜索实体空间中目标项目的结果。
用户端可以接纳单人或多人的时空约束输入。由于数学建模需要,方法根据不同情况分类讨论,其情况分为:单人场景下的基于时空约束的位置搜索与推荐方法,以及多人场景下的基于时空约束的位置搜索与推荐方法,这两者实现构思相同,但某些具体操作方法有不同,下面分别介绍:
(一)单人场景
单人场景下的基于时空约束的位置搜索与推荐方法,包括以下步骤1-步骤4:
步骤1,获取时间-空间耦合约束条件、总出行时间tti和预估参与目标活动的时间长度
所述时间-空间耦合约束条件包括以下四种时空约束情况:
第一种时空约束情况:获取起始时间
其中,起始位置
起始时间
终止位置
终止时间
为方便对上述各个名词的概念进行充分理解,下面介绍一种具体的应用场景:
同学聚会场景1:假设当前时间为2018.01.10,小明需要在2018.01.20从位置a(例如家里)出发,最早出发时刻为8点钟,并且,需要在某时刻到达某个位置b(此时刻和位置为待求值)参加同学聚会,并且,在参加完同学聚会后,小明最晚在13点钟需要到达位置c参与一项培训活动。
为满足小明的上述需求,需要规划确定同学聚会的聚会地点,即位置b。通过本发明的方法,可以在满足各项时空约束的条件下,规划出位置b的范围,并在规划出的范围中以餐厅为关键词进行搜索,并向用户推荐可选餐厅列表。
在上面例子中:
目标活动为:同学聚会;
起始位置
起始时间
终止位置
终止时间
总出行时间tti为:终止时间
预估参与目标活动的时间长度
单程出行时间tti为:从位置a到位置b的行程单程上最长允许花费的时间;以及,从位置b到位置c的行程单程上最长允许花费的时间;例如,单程出行时间为1小时,代表用户连续坐车的时间不能超过1小时,也就是说,位置a到位置b的路上时间不能超过1小时,同时,从位置b到位置c的路上时间不能超过1小时。
具体实现上,采用以下方法获取起始时间
由用户直接输入或指定本次搜索所需要的起始时间
如果用户没有直接输入、同时没有指定本次搜索所需要的起始时间
对于上面的同学聚会场景1,如果当前时间为2018.01.10,而小明需要对将来的时间,即2018.01.20的活动进行规划,因此,需要由小明输入起始时间
第二种时空约束情况:获取起始时间
下面介绍此种时空约束下的一种具体使用场景:
同学聚会场景2:假设当前时间为2018.01.10,小明需要在2018.01.20从位置a(例如家里)出发,最早出发时刻为8点钟,并且,需要某个时刻到达某个位置b(此时刻和位置为待求值)参加同学聚会,并且,在参加完同学聚会后,小明最晚在13点钟需要和英语语伴练习,但练习的地点不确定。
第三种时空约束情况:获取起始时间
下面介绍此种时空约束下的一种具体使用场景:
同学聚会场景3:假设当前时间为2018.01.10,小明需要在2018.01.20从位置a(例如家里)出发,最早出发时刻为8点钟,并且,需要在某时刻到达某个位置b(此时刻和位置为待求值)参加同学聚会,并且,在参加完同学聚会后,小明需要去位置c购物,但到达购物地点,即位置c的时间并不限制。
第四种时空约束情况:获取起始时间
同学聚会场景4:假设当前时间为2018.01.10,小明需要在2018.01.20从位置a(例如家里)出发,最早出发时刻为8点钟,并且,需要在某时刻到达某个位置b(此位置为待求值)参加同学聚会,在参加完同学聚会后,小明对后续的行程时间和行程地点均没有限制。
在理论上,单人输入的时间约束条件存在以下4种类型:
在实际操作中,因为起始时间无法早于当前时间,所以起始时间隐含也是存在约束的,因此,两侧无约束的情况可归纳到单侧约束-左侧情况。对于单侧约束-右侧的情况,也受到不能早于当前时间的约束,因此可以归纳到双侧约束的情况。由此可知,时间约束从实践上分为两类:1)起始时间有约束,终止时间无约束;2)起始时间和终止时间均有约束。
对于起始位置和终止位置的约束,由于起始位置总是已知的,具体由用户操作时,起始位置可以是用户手动输入的,也可以是用户选择默认当前手机或网络所获取的位置、或是选择所存储的用户常用位置作为起始位置。对于终止位置,可能是已知或未知。综合起始、终止位置的时间、空间耦合约束,可能存在如下情况(表2):
由此可见,本发明中,起始位置和起始时间是必须确定的参数,不能为空。用户可能未明确指定起始位置或起始时间,则默认为当前手机定位的位置为起始位置,默认当前时间为起始时间;若用户指定起始位置和起始时间,则用用户输入的内容作为参数。
终止位置和终止时间是可选给出的。当终止位置、终止时间没有被用户明确给出时,则认为没有约束。
用户输入的可选时间窗口理论上可以是多个。鉴于多个时间窗口在数学上本质和单个时间窗口的算法没有大区别,本发明只讨论单个时间窗口的计算方法。
步骤2,计算位置和时间约束下的空间可达范围
此步骤为本发明的核心创新点,即设计一套可操作方案实现时间地理学方法论,用于建立启发式算法进行和空间相关的搜索,从而简化搜索过程提高计算效率。
计算位置和时间约束下的空间可达范围包括:
步骤2.1,在起始位置周围的空间中选取若干个采样点,采样点可以是将空间网格化之后每个网格单元的中心点或代表点,也可以是路网上的节点。
采样范围可使用但不限于以起始位置、终止位置为焦点、市内汽车平均速度
设选取n个采样点,n个采样点集合为:{p1,p2,p3…pn};其中,pj为采样点集合中任意一个采样点;j=1,2,3…n;
搜索采样点的顺序有多种启发式算法。最基本的可以在空间中逐点搜索一一排查是否符合条件。也可以按照对每个用户而言由近及远的方法搜索采样点,当某个方向上搜到某采样点不再满足以下时空约束条件的时候,即终止该方向上的搜索。无论哪种具体方法,必须满足如下条件才能定义为可行采样点。
步骤2.2,对于任意的采样点pj,均采用以下方法确定其是否为可行采样点;如果最终得到若干个可行采样点,由所得到的所有可行采样点构成可行采样点集合;然后执行步骤2.3;如果没有得到任何可行采样点,则执行步骤4;
此处需要说明的是,在判断采样点pj是否为可行采样点时,本发明给出的计算方法是最基本的方法,并不包含任何启发式算法。任何与其数学结果等价的启发式算法都可应用在此处。例如,可以是从当前位置沿不同方向向周围由近及远搜索采样点,当搜索到达某个采样点不再是可行采样点时,即停止该方向的搜索。
步骤2.2.1,对于第一种时空约束情况:
(1)首先计算前序时间
其中:
前序时间
需要强调的是,由于前序时间和后序时间是受到交通状况影响的,因此受到出发时刻的影响,所以本发明在计算前序时间和后序时间时,考虑了出发时刻的交通影响,从而提高整个推荐过程的准确性和实用性。
对于上面描述的同学聚会场景1,前序时间
后序时间
对于上面描述的同学聚会场景1,后序时间
(2)判断是否同时满足以下约束条件,如果满足,则采样点pj为可行采样点;否则,采样点pj为不可行采样点;
约束条件1:
约束条件2:
约束条件3:
约束条件2和约束条件3的含义为:每段行程的出行时间分别满足单程出行的时间约束。
步骤2.2.2,对于第二种时空约束情况:
(1)首先计算前序时间
其中:
前序时间
假设后序时间
当终止位置无约束而终止时间有约束时,无法计算后序时间
(2)判断是否同时满足以下约束条件,如果满足,则采样点pj为可行采样点;否则,采样点pj为不可行采样点;
约束条件1:
约束条件2:
如果没有合适的返回结果,则需要在满足其他条件的基础上放松条件,例如,将后序时间
步骤2.2.3,对于第三种时空约束情况:
(1)首先计算前序时间
其中:
前序时间
后序时间
(2)判断是否同时满足以下约束条件,如果满足,则采样点pj为可行采样点;否则,采样点pj为不可行采样点;
约束条件1:
约束条件2:
也就是说,当终止位置已知而终止时间无约束时,需要同时满足:从起始位置到采样点的出行时间比单程出行时间tti用时小,即
步骤2.2.4,对于第四种时空约束情况:
(1)首先计算前序时间
其中:
前序时间
(2)判断是否同时满足以下约束条件,如果满足,则采样点pj为可行采样点;否则,采样点pj为不可行采样点;
约束条件1:
也就是说,当终止位置的时间和空间均无约束时,确定起始时间后,只需要从起始位置到某个采样点的出行时间,即前序时间
步骤2.3,在得到可行采样点集合后,可行采样点集合围成的区域形成空间可达范围;然后执行步骤3;
对所有采样点进行计算和评估,得到可行采样点集合,即为前后时间约束下的空间可达范围(如果计算在栅格上进行,可达范围即为所有可行采样点所在的格子,如图4;如果计算在矢量上进行,即采用所有采样点的最小外包多边形作为可达范围,如图5)。
本发明中,根据可行采样点计算空间区域的方法包括但不限于外包矩形、外接圆、凸包等方法,通常要求点数>2才能得到,实际情况里也通常是这样;但如果只返回一个或两个可行采样点,则采用取采样点周围小范围邻域的方法得到可达范围。
步骤3,在步骤2得到的空间可达范围内,搜索满足关键字的信息并返还给用户,并返回到达每个可行采样点pj的最早时刻
步骤4,向用户返回搜索不成功的通知消息,并提示用户更换搜索条件后再进行重新搜索。
(二)多人场景
与单人场景不同之处在于,多人场景下的基于时空约束的位置搜索与推荐方法,需要协调多个人的时间交集,因此步骤略有不同。
多人场景下的时间约束条件,是基于单人场景下的4种类型,可具体分为10种类型,如图2所示。其最终依然归纳到表2中的四种基本类型。
多人场景下的基于时空约束的位置搜索与推荐方法,包括以下步骤1a-步骤4:
步骤1a,设共有v个用户需要联合参与位置搜索与推荐,分别为1,2…v;任意一个用户为i,获取每个用户i的时间-空间耦合约束条件、总出行时间tti和预估参与目标活动的时间长度
多人场景下的一个具体应用场景举例如下:
假设共有三个人,分别为小王、小李和小赵,三人准备在2018.01.20的某时刻在某个位置d(此时刻和位置为待求值)进行同学聚会,其中:小王准备在2018.01.20从位置e1(例如家里)出发,最早出发时刻为8点钟,并且,在参加完同学聚会后,小王最晚在13点钟需要到达位置f1参与一项培训活动。小李准备在2018.01.20从位置e2(例如家里)出发,最早出发时刻为7点钟,并且,在参加完同学聚会后,没有其他行程安排。而小赵准备在2018.01.20从位置e3(例如家里)出发,最早出发时刻为7点半,并且,在参加完同学聚会后,小赵准备到达位置f2的图书馆看书,但对于到达位置f2的图书馆的到达时间没有要求。
因此,本发明要解决的问题就是:如何确定一个可达范围,此可达范围可同时满足小王、小李和小赵三个人的时空约束;在确定可达范围后,以餐厅为关键字检索,得到可达范围内的多个餐厅,并按顺序排列后推荐给用户;同时推荐在每个餐厅见面的建议时间,即根据多个人约束计算的可到达该餐厅的最早时间。
步骤2a,计算位置和时间约束下的空间可达范围,包括:
步骤2.1a,计算v个用户的可用时间交集w;
其中,v个用户的可用时间交集w包括以下两种情况:
第一种交集情况:对于v个用户,每个用户均具有起始时间
第二种交集情况:对于v个用户,每个用户均具有起始时间
在确定多个人的可用时间交集w时,根据v个用户的时间安排(此处只讨论每个人只有一个时间窗口),首先选出所有人可用的时间窗口作为活动时间选项。如图3所示,为多个人的可用时间交集w的计算原理图。多个人的可用时间交集w必须满足时间交集长度大于活动预估时长,即
例如,在上述小王、小李、小赵三人情景下,v=3,小王的起始时间为8点,终止时间为13点,因此,其时间区间为[8,13]点,小李的起始时间为8点,对终止时间没有限制,因此,其时间区间为[7,+∞]点,小赵的起始时间为7:30,对终止时间没有限制,因此,其时间区间为[7:30,+∞]点,求交集得到w=[8,13],因此w0=8,w1=13。活动时长默认为1小时,时间交集长度为5小时,满足要求。
步骤2.2a,在起始位置周围的空间中选取若干个采样点;采样点可以是将空间网格化之后每个网格单元的中心点或代表点,也可以是路网上的节点。
设选取n个采样点,n个采样点集合为:{p1,p2,p3…pn};其中,pj为采样点集合中任意一个采样点;j=1,2,3…n;
步骤2.3a,对于任意的采样点pj,均采用以下方法确定其是否为可行采样点;如果最终得到若干个可行采样点,由所得到的所有可行采样点构成可行采样点集合;然后执行步骤2.1d;如果没有得到任何可行采样点,则执行步骤4a;
多人时空约束条件1:对于v个用户1,2…v;采样点pj与每一个用户i均采用步骤2.2的方法判断其是否为单人场景下的可行采样点,如果是,则满足多人时空约束条件1;否则,不满足多人时空约束条件1;
多人时空约束条件2:如果多人的可用时间交集w为双侧时间约束,则:
其中:
具体的,当多个人的时间约束的交集w为起始和终止时间双侧约束时(即部分人有终止时间约束),需满足如下更强的约束条件:即,最晚可以出发的人所在的起始位置(即与w0相对应的位置l0)到采样点的出行时间
满足此条件保证了最晚可以出发的人能到达的地点,也可以满足最早需要赶下一个地点的人的出行需求。由表2所示,可能存在相应的终止位置l1未被用户指定的情况(即最早参与下一活动的人i*没有指定其下一活动位置
以两个人为例具体来说,假设有a和b两个人,a的出行安排按照起始位置、起始时间、终止位置、终止时间可以表示成一个四元组
如果a的起始时间和终止时间的约束都更强于b,即:
如果a的起始时间约束更强,b的终止时间约束更强,即:
步骤2.4a,在得到可行采样点集合后,可行采样点集合围成的区域形成空间可达范围;然后执行步骤3a;
对所有采样点进行以上的计算和评估,得到可行采样点集合,即为前后时间约束下的空间可达范围(如果计算在栅格上进行,可达范围即为所有可行采样点所在的格子,如图4;如果计算在矢量上进行,即采用所有采样点的最小外包多边形作为可达范围,如图5)。
步骤3a,在步骤2a得到的空间可达范围内,搜索满足关键字的信息并返还给用户,同时计算对于同一组的所有参与者而言,到达每个可行的推荐位置的最早时刻,并返还给用户,结束此次流程;
具体的,在上一步得到的空间可达范围内,对目标地点进行关键字匹配,对于每个目标地点,按照匹配到的关键字数目进行加权排序,并将匹配排序结果返回给用户,作为算法的位置推荐结果;
对每个可行的位置,计算v个用户都能到达该位置的最早时间作为此位置的见面时间推荐结果;在前述情景中,小王8点出发,假设需要0.5小时到某个可行的推荐地点pj,小李7点出发需要1小时,小赵7点半出发需要45分钟,那么对于三人而言,可以到达该推荐地点的最早时刻为8点半,此时刻作为与pj相应的推荐时刻,并返还给用户。
步骤4a,向用户返回搜索不成功的通知消息,并提示用户更换搜索条件后再进行重新搜索。
无论单人场景或多人场景,当本次搜索不成功后,需要提示用户更换搜索条件后再进行重新搜索,具体包括以下情况:
(1)如果用户本次输入的时空约束条件属于第一种时空约束情况,则提示用户更改起始时间
(2)如果用户本次输入的时空约束条件属于第二种时空约束情况,则调大后序时间
(3)提示用户调整预估参与目标活动的时间长度
在技术上,本发明解决了与时空相关的查询中大量不必要的检索。“不必要”是指在现实的物理生活空间里,受物理定律约束和人的心理承受能力约束,不可达的范围。通过建立由用户输入的空间索引而快速将选项收敛至实际空间可行范围。
从社会生活来看,此技术方法在日常生活的o2o线下推荐中非常必要,可以节约查询和选择时间。多人聚会是日常生活中常见的活动,参加聚会的人员通常分布于城市的不同地方,在确定聚会地点的过程中需要协调每个人在聚会前和聚会后的行程和时间安排,这些约束使得确定聚会地点需要耗费组织者的大量精力。本发明提供的一种基于时空约束的位置搜索与推荐方法,可以综合协调每个人的时间和行程安排,自动推荐合适的聚会地点,从而为大众的日常生活提供便利。同时可节省聚会参与者在聚会决策、参加聚会上的时间消耗,并能在一定程度上缓解城市的交通压力。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。