APP下载

基于情境感知的餐饮O2O推荐系统研究

2020-01-10唐东平吴邵宇

计算机技术与发展 2020年1期
关键词:实例本体菜品

唐东平,吴邵宇

(华南理工大学,广东 广州 510640)

0 引 言

个性化推荐系统是缓解“信息过载”问题的一种软件技术和工具,其目的是通过信息过滤为用户推荐一组最有需求或者感兴趣的对象,已经在各类电子商务网站上得到了广泛应用。而移动推荐具有情境敏感性,移动商务活动有关的条件、背景、环境、经历、心理等情境因素,将对用户需求产生一定的影响[1]。普适计算和移动互联网的发展为餐饮信息化提供了更全面、更实时的情境信息,能否将情境因素引入移动推荐系统中以实现精确的需求匹配决定了个性化推荐的质量[2]。根据Dey的定义,情境感知技术源于普适计算,是通过对用户信息、所处环境、推荐对象及其相互关系进行形式化的描述和领域知识模型的构建向用户提供符合当前主客观情境的对象信息[3]。

本体可在语义层面实现对情境信息的知识表示。知识推理是本体工程的高级阶段,在本体模型的基础上使用SWRL规则进行规则推理,从而实现领域知识的语义推理[4]。通过基于情境的知识表示和推理实现个性化推荐等服务,已成为移动商务中休闲生活[5-6]、医疗保健[7-8]、旅游服务[9-10]等各领域的研究重点之一。餐饮领域相关研究主要集中在餐馆推荐问题,Yu等通过本体和规则构建了一个LBS知识库推理平台,基于位置情境为用户推荐餐馆[11]。吕苗等以餐饮菜品推荐服务为研究对象,实现了基于情境的移动商务聚餐服务知识建模,但采用的是预先设定的通用规则进行规则推理[12]。在基于情境的知识表示中,规则往往是根据情境与推荐对象的通用关联模式所设定,难以对用户个人的特殊兴趣偏好进行挖掘和建模。因此基于情境感知的推荐通常需要与传统的协同过滤推荐或基于内容的推荐相结合,才能实现更加个性化的推荐[13]。

传统的协同过滤推荐技术,通过用户对商品的评分寻找兴趣相似的用户或特征相似的商品[14],但在实际应用中用户对餐饮的评分往往是针对菜品质量和用餐体验的评价,不能准确表现其对于菜品特征的兴趣偏好。基于内容的推荐不需要考虑用户对商品的评价,而是根据用户的历史行为挖掘对商品特征的兴趣偏好建立模型,并与待推荐商品进行相似度匹配实现推荐[15]。但基于内容的推荐受商品特征提取方法的限制,更多地被用于文本信息的推荐或过滤,同时也面临用户冷启动问题,需要大量的用户行为记录做支撑。针对上述问题,设计了一个基于情境和内容相融合的混合推荐系统,以实例化本体模型中菜品的属性值作为关键词提取菜品特征,并根据用户与菜品的交互记录构建用户兴趣模型的特征向量。同时,通过混合推荐系统对于两种推荐方法的权重进行自适应调整,解决用户冷启动问题,提高对用户各个使用阶段的推荐质量。

1 基于情境感知的餐饮推荐本体建模

1.1 餐饮推荐本体结构

基于情境感知的餐饮推荐本体模型是采用OWL语言的知识表示,通过对用户信息、所处环境、推荐对象及相互关系进行形式化的规范描述,为餐饮O2O推荐中情境信息和餐饮信息的交互提供语义表达的手段。根据本体的基本元素,可以表示为如下形式的五元组:

O=

(1)

其中,C表示概念类的集合,概念类具有实例的集合I;R表示属性的集合,属性根据作用域rel的不同分为对象属性和数值属性,分别表示类与类的关系,以及类与数据类型的关系;A表示公理的集合,公理是定义在类和属性上的限制和约束[8]。

考虑餐饮O2O推荐中情境对用户需求的影响,文中对情境信息与餐饮信息进行语义化描述,设计了基于情境感知的领域本体模型结构,表示为以下形式:

OCR=OContext∪OCatering

(2)

其中,OCR为餐饮推荐本体;OContext为情境本体;OCatering为餐饮本体。

1.1.1 情境本体

情境刻画了移动商务活动中用户特征和状态及所处环境等信息,情境因素影响着用户对推荐对象的需求[2]。文中将餐饮O2O推荐中的情境分为OUser(用户本体)与OSituation(场景本体)两部分建模,围绕用户概念类与场景概念类设计了相关的数值属性和对象属性。

其中,CUser(用户类)具有数值属性hasUserName(用户姓名)。OUser的对象属性类可表示为CUserProperty={BasicInformation,UserCondition}:

(1)基本信息,描述较少发生改变的人口统计学信息,包括子属性类:年龄、性别、职业、家乡、民族、食俗。概化为少儿、青年、中年、老年四个年龄阶段。食俗是与宗教相关的饮食风俗,其实例包括基督教、伊斯兰教、佛教等,不同宗教信仰对菜品有不同的偏好和忌讳。

(2)用户状态,是影响用户用餐需求且可以描述的状态,包括子属性类:情绪、身体状况、最近菜品。身体状况的实例包括几种常见的异常状况,疲惫、感冒、发烧、上火、腹痛等,以及特殊疾病如糖尿病、高血压等,是推荐系统实现健康知识相关规则推理的基础。考虑到用户往往不希望连续吃重复的菜品,文中在用户状态中设计了最近菜品,其实例相同于(Equivalent To)菜品的实例,通过规则推理实现过滤。

CSituation(场景类)具有数值属性hasDate(日期)、hasTime(时间)、hasLocation(位置)。OSituation的对象属性类可表示为CSituationProperty={TimeInformation,NaturalEnvironment,CateringCondition}:

(1)时间信息,是由日期和时间推理得到的时间相关的标签,包括子属性类:假期、季节、昼夜。假期的实例为工作日、周末、节假日。昼夜具有上午、中午、下午、夜晚、深夜五个实例。

(2)自然环境,描述用户所处位置的自然环境信息,包括子属性类:天气、温度、湿度。天气的实例为晴、阴、雨、雪这四个主要类别。温度和湿度按实际数值分别概化为五个区间。

(3)用餐性质,描述餐饮O2O相关的其他场景条件,包括子属性类:陪同、用餐方式。陪同是与用户共同用餐的伴侣,其实例包括个人、朋友、同学、同事、亲属等。用餐方式具有外卖、堂食、外带三个实例。

1.1.2 餐饮本体

餐饮O2O的主要推荐对象为餐馆和菜品,为研究菜品特征提取和用户兴趣挖掘,文中设计了餐饮O2O推荐的OFood(菜品本体),围绕菜品概念类设计了相关的数值属性和对象属性。CFood(菜品类)的属性需要全面描述菜品的类型、味道、性质等特征,用于规则推理和基于内容推荐的特征提取,其中数值属性包括hasFoodName(菜品名字)、hasPrice(价格)。OFood的对象属性类包括价格标签、类型、菜系、口味、做法、烹饪时间、食材,可表示为CFoodProperty={PriceLable,FoodType,Style,Flavor,CookWay,CookTime,Ingredient},其中部分属性类的实例如表1所示。

综上,文中通过Protégé构建的餐饮推荐本体OCR的类及属性层次结构如图1所示。

表1 菜品本体中部分属性类的实例

(a)OCR的类 (b)OCR的对象属性 (c)OCR的数值属性

1.2 实例化餐饮推荐本体模型

通过餐饮推荐本体模型的实例化,描述具体的情境信息和餐饮信息,是实现基于规则推理推荐的基础,其过程是根据当前情境以及待推荐菜品的特征,对领域本体模型结构中的概念类CUser、CSituation、CFood进行实例化,对概念类的数值属性和对象属性赋值。同时,通过实例化本体模型记录用户的历史行为,可以实现情境规则生成和用户兴趣挖掘。

情境信息是建立实例化情境本体模型的依据,获取方式主要分为两种,通过移动设备和互联网自动获取或交互界面引导用户手动输入。CSituation的大部分属性值是比较容易获取的客观因素,日期、时间可以直接从互联网获取,位置的坐标值由移动设备的GPS获取。假期、季节由日期的值推理获取,而昼夜由时间的值推理获取。而天气、温度、湿度通过结合位置从互联网获取准确值,并转换为对应的概化属性值以便于进行规则推理。CUser的基本信息于注册时引导用户手动输入,不需要在每次推荐时获取。用餐性质中陪同和用餐方式,以及用户状态中情绪和身体状况这类因素对用户需求有一定的影响,但受限于当前移动技术仍难以实现自动获取,推荐系统将提供手动输入的接口用于采集。随着普适计算的发展,推荐系统与其他移动APP数据共享,对这类信息的自动感知成为可能。CUser的最近菜品是该用户最近两天下单记录中的菜品,从用户历史行为的记录中获取。

2 基于情境感知的混合推荐方法

2.1 情境规则构建

在餐饮推荐本体模型的基础上使用形式化规则语言SWRL描述情境规则,包括推荐型和过滤型规则,通过规则推理实现基于情境的餐饮O2O推荐。推理机根据SWRL规则对情境与菜品的属性值进行匹配,建立用户与菜品的属性关系Recommend或noRecommend,比如当前情境与待推荐菜品满足过滤型规则:

User(?x)∧hasBodyCondition(?x,感冒)∧Food(?z)∧hasFoodType(?z ,冷食)→noRecommend(?x,?z)

(3)

则建立属性关系noRecommend(用户x,菜品z),以表达向感冒的用户x过滤冷食类型的菜品z的语义。

在一次下单的实例化本体模型中,用户和场景的属性值描述了历史情境的特征,包括用户的基本信息和状态,以及场景的时间信息、自然环境和用餐性质,而菜品的属性值反映了用户在对应情境下所选菜品的特征,包括菜品的类型、味道、性质等。通过数据挖掘可以发现历史情境和所选菜品的通用关联模式,生成基于情境的推荐型规则,而过滤型规则和部分难以挖掘的规则(如健康知识相关规则)由系统直接定义。

文中将一次下单的实例化本体模型定义为一次情境事务,作为用户历史行为的记录。考虑用户的操作中对于情境规则生成和用户兴趣挖掘有价值的行为,将用户的下单、浏览、搜索这类操作都记录在情境事务中。根据概念类实例的对象属性值,提取情境事务的相应属性值集作为数据挖掘的分析对象,包括用户属性值集UPS、场景属性值集SPS、菜品属性值集FPS。其中UPS和SPS组成情境属性值集CPS,描述了用户进行操作时情境的特征。从一次情境事务中提取的属性值集如表2所示。

表2 情境事务属性值集

使用关联分析常用的Apriori算法对情境事务库中所有的记录所提取的属性值集进行关联规则挖掘,将情境属性值CP定为规则前件,菜品属性值FP定为规则后件。关联分析和情境规则生成的算法描述如下:

(1)基于Apriori算法寻找包含且仅包含1个FP的频繁属性值集,设定最小支持度min_sup和最小置信度min_cof。若频繁属性值集满足以下要求:

支持度:

support({FP1,CP1,CP2…})>min_sup

(4)

置信度:

(5)

则生成如下形式的关联规则:

CP1∧CP2∧…∧CPn→FP1

(6)

(2)区分用户属性值UP和场景属性值SP,将生成的关联规则转化为本体模型适用的SWRL规则:

User(?x)∧hasUserProperty(?x,UP1)∧Situation(?y)∧hasSituationProperty(?y,SP1)∧Food(?z)∧hasFoodProperty(?z,FP1) →Recommend(?x,?z)

(7)

在基于情境感知的推荐中,情境敏感性也有强弱之分,因此定义情境规则具有情境敏感度(DOS)。通过关联分析得到的规则使用其置信度作为DOS,过滤型规则的DOS为1。该方法为基于情境推荐的情境规则设定了优先级,同时也提供了混合推荐系统融合两种推荐方法的参数手段。

2.2 用户兴趣挖掘

基于内容的餐饮O2O推荐不需要考虑用户对菜品的评分,而是根据用户的下单、搜索等历史行为,以向量空间模型表示用户兴趣和菜品特征,并计算相似度来进行推荐[15]。采用实例化菜品本体模型中菜品的属性值作为关键词提取菜品特征,并根据用户与菜品的交互记录构建用户兴趣模型的特征向量,具体步骤如下:

(1)使用信息检索常用的TF-IDF方法计算菜品的每个属性值在菜品中的重要度,以价格标签、类型、菜系、口味、做法、烹饪时间、食材的值作为关键词。假设总共有N个菜品,关键词ci是其中Ni个菜品的属性值。菜品j具有属性值ci,每个属性值只在菜品中出现1次,因此ci的词频(TFij)为1。在许多菜品共同出现的关键词需要降低对菜品特征区分和用户兴趣计算的贡献程度,因此重要度会随着其出现的频率而下降。以TFij结合关键词在所有菜品中出现次数的逆(IDFi)作为关键词ci在菜品j中的重要度:

(8)

因此具有n个属性值的菜品特征模型Content(j)可以表示为向量:

(9)

(10)

(11)

2.3 混合推荐系统模型

餐饮O2O推荐系统的工作流程如图2所示。

图2 推荐系统工作流程

系统通过自动获取和手动输入得到当前情境信息,建立实例化情境本体模型,以及属性关系inSituation(用户x,场景y),以表达用户x处于场景y的语义。基于情境的推荐模块进行当前情境与待推荐菜品的规则推理,建立属性关系Recommend-i/noRecommend-i(用户x,菜品z),表示根据第i条推荐型/过滤型规则向用户x推荐/过滤菜品y。基于内容推荐模块通过计算菜品特征向量和用户兴趣向量相似度,得到用户对菜品的兴趣度(DOI)。两种推荐方法的结果进入混合推荐模块进行处理,得到最终TOP-N推荐列表展示给用户。用户的操作将保存在情境事务库中,系统根据情境事务库中个人记录构建用户兴趣模型,根据情境事务库中所有记录挖掘情境规则。其中,混合推荐模块对结果进行处理的算法描述如下:

3 实验和结果分析

为了验证基于情境感知的餐饮O2O推荐方法的有效性,本节设计了混合推荐系统原型并进行实验。通过Protégé构建由OWL描述的餐饮推荐本体和SWRL描述的情境规则,并使用JESS推理机在模型上进行规则推理,向大学生推荐高校内不同饭堂的菜品。

实验召集5名大学生使用系统原型记录校园餐饮历史行为,用作情境规则的挖掘。这一阶段持续120天,以求在尽可能差异化的情境下分析情境与菜品的通用关联模式。通过对情境事务进行关联分析,生成33条推荐型规则。系统根据情境知识定义9条过滤型规则,及8条健康知识相关规则,用于下一阶段的实验。

第二阶段召集35名大学生参与使用系统原型进行餐饮推荐实验,实验时间为6周。实验用户就餐前输入部分情境信息后,推荐系统将按照两种推荐方法不同权重的组合为用户展示三个TOP-10推荐列表,基于内容推荐的权重分别为0,0.5,1。用户根据自己的实际需求对推荐列表中菜品的选择:准确/不准确。根据用户评价和使用的历史记录,系统不断调整用户兴趣模型,并且每周更新情境规则库。

实验1:推荐准确性分析。

图3显示了三种权重设定下的推荐模型在菜品推荐准确率上的比较,取每周内统计数据的均值,Precision是推荐列表中被用户选择为准确的菜品数量与推荐列表中菜品总数的比例,公式表示如下:

(12)

图3 不同推荐方法的菜品推荐准确率

从结果可以看出,第2周后混合推荐方法的准确率每周都高于单一推荐方法,而基于内容推荐的初始准确率较低,随着周数的增加逐渐超过基于情境推荐。实验结果表明,文中提出的混合推荐模型可以有效解决基于内容推荐的用户冷启动问题,且能较好地提高餐饮O2O推荐的准确性。

实验2:权重自适应调整。

图4 下单菜品在不同权重设定下的百分比排名

图4显示了用户最终下单的菜品在不同权重设定下菜品排序(不限TOP-10)中的平均百分比排名,仅取下单的菜品中排名最靠前的一道,排名越靠前代表推荐方法越准确。基于内容推荐的权重分别设为0.1,0.3,0.5,0.7,取每周内统计数据的均值。

从结果可以看出,用户使用系统原型的时间越长,平均排名最低的权重越大。根据平均排名调整权重,应在用户使用系统的第1周内逐渐升为0.1,第2周内逐渐升为0.3,第3-5周内逐渐升为0.5。实验结果表明,混合推荐模型中基于内容推荐的权重随着使用时间逐渐加大,提高了自适应调整方法的有效性。

4 结束语

考虑到餐饮O2O推荐中用户需求的情境敏感性,采用本体和规则实现了基于情境感知的知识表示和推理,并在此基础上结合用户兴趣建模提出了基于情境和基于内容相融合的混合推荐方法。该方法既能根据所有用户的历史行为发现情境与菜品的通用关联模式并生成情境规则,又能通过用户兴趣模型挖掘个人对菜品的特殊兴趣偏好。实验证明了利用权重自适应调整可以有效解决基于内容推荐的用户冷启动问题,提高系统对用户各个使用阶段的推荐质量。

猜你喜欢

实例本体菜品
继齐韵往昔,以今声开来——思考自五音戏主奏乐器的演变、本体及延伸
眼睛是“本体”
迷惑菜品又来了
如何加强菜品加工过程中的卫生管理
完形填空Ⅱ
完形填空Ⅰ
专题
Care about the virtue moral education