唐東平,吳邵宇
(華南理工大學(xué),廣東 廣州 510640)
個性化推薦系統(tǒng)是緩解“信息過載”問題的一種軟件技術(shù)和工具,其目的是通過信息過濾為用戶推薦一組最有需求或者感興趣的對象,已經(jīng)在各類電子商務(wù)網(wǎng)站上得到了廣泛應(yīng)用。而移動推薦具有情境敏感性,移動商務(wù)活動有關(guān)的條件、背景、環(huán)境、經(jīng)歷、心理等情境因素,將對用戶需求產(chǎn)生一定的影響[1]。普適計(jì)算和移動互聯(lián)網(wǎng)的發(fā)展為餐飲信息化提供了更全面、更實(shí)時的情境信息,能否將情境因素引入移動推薦系統(tǒng)中以實(shí)現(xiàn)精確的需求匹配決定了個性化推薦的質(zhì)量[2]。根據(jù)Dey的定義,情境感知技術(shù)源于普適計(jì)算,是通過對用戶信息、所處環(huán)境、推薦對象及其相互關(guān)系進(jìn)行形式化的描述和領(lǐng)域知識模型的構(gòu)建向用戶提供符合當(dāng)前主客觀情境的對象信息[3]。
本體可在語義層面實(shí)現(xiàn)對情境信息的知識表示。知識推理是本體工程的高級階段,在本體模型的基礎(chǔ)上使用SWRL規(guī)則進(jìn)行規(guī)則推理,從而實(shí)現(xiàn)領(lǐng)域知識的語義推理[4]。通過基于情境的知識表示和推理實(shí)現(xiàn)個性化推薦等服務(wù),已成為移動商務(wù)中休閑生活[5-6]、醫(yī)療保健[7-8]、旅游服務(wù)[9-10]等各領(lǐng)域的研究重點(diǎn)之一。餐飲領(lǐng)域相關(guān)研究主要集中在餐館推薦問題,Yu等通過本體和規(guī)則構(gòu)建了一個LBS知識庫推理平臺,基于位置情境為用戶推薦餐館[11]。呂苗等以餐飲菜品推薦服務(wù)為研究對象,實(shí)現(xiàn)了基于情境的移動商務(wù)聚餐服務(wù)知識建模,但采用的是預(yù)先設(shè)定的通用規(guī)則進(jìn)行規(guī)則推理[12]。在基于情境的知識表示中,規(guī)則往往是根據(jù)情境與推薦對象的通用關(guān)聯(lián)模式所設(shè)定,難以對用戶個人的特殊興趣偏好進(jìn)行挖掘和建模。因此基于情境感知的推薦通常需要與傳統(tǒng)的協(xié)同過濾推薦或基于內(nèi)容的推薦相結(jié)合,才能實(shí)現(xiàn)更加個性化的推薦[13]。
傳統(tǒng)的協(xié)同過濾推薦技術(shù),通過用戶對商品的評分尋找興趣相似的用戶或特征相似的商品[14],但在實(shí)際應(yīng)用中用戶對餐飲的評分往往是針對菜品質(zhì)量和用餐體驗(yàn)的評價,不能準(zhǔn)確表現(xiàn)其對于菜品特征的興趣偏好?;趦?nèi)容的推薦不需要考慮用戶對商品的評價,而是根據(jù)用戶的歷史行為挖掘?qū)ι唐诽卣鞯呐d趣偏好建立模型,并與待推薦商品進(jìn)行相似度匹配實(shí)現(xiàn)推薦[15]。但基于內(nèi)容的推薦受商品特征提取方法的限制,更多地被用于文本信息的推薦或過濾,同時也面臨用戶冷啟動問題,需要大量的用戶行為記錄做支撐。針對上述問題,設(shè)計(jì)了一個基于情境和內(nèi)容相融合的混合推薦系統(tǒng),以實(shí)例化本體模型中菜品的屬性值作為關(guān)鍵詞提取菜品特征,并根據(jù)用戶與菜品的交互記錄構(gòu)建用戶興趣模型的特征向量。同時,通過混合推薦系統(tǒng)對于兩種推薦方法的權(quán)重進(jìn)行自適應(yīng)調(diào)整,解決用戶冷啟動問題,提高對用戶各個使用階段的推薦質(zhì)量。
基于情境感知的餐飲推薦本體模型是采用OWL語言的知識表示,通過對用戶信息、所處環(huán)境、推薦對象及相互關(guān)系進(jìn)行形式化的規(guī)范描述,為餐飲O2O推薦中情境信息和餐飲信息的交互提供語義表達(dá)的手段。根據(jù)本體的基本元素,可以表示為如下形式的五元組:
O=
(1)
其中,C表示概念類的集合,概念類具有實(shí)例的集合I;R表示屬性的集合,屬性根據(jù)作用域rel的不同分為對象屬性和數(shù)值屬性,分別表示類與類的關(guān)系,以及類與數(shù)據(jù)類型的關(guān)系;A表示公理的集合,公理是定義在類和屬性上的限制和約束[8]。
考慮餐飲O2O推薦中情境對用戶需求的影響,文中對情境信息與餐飲信息進(jìn)行語義化描述,設(shè)計(jì)了基于情境感知的領(lǐng)域本體模型結(jié)構(gòu),表示為以下形式:
OCR=OContext∪OCatering
(2)
其中,OCR為餐飲推薦本體;OContext為情境本體;OCatering為餐飲本體。
1.1.1 情境本體
情境刻畫了移動商務(wù)活動中用戶特征和狀態(tài)及所處環(huán)境等信息,情境因素影響著用戶對推薦對象的需求[2]。文中將餐飲O2O推薦中的情境分為OUser(用戶本體)與OSituation(場景本體)兩部分建模,圍繞用戶概念類與場景概念類設(shè)計(jì)了相關(guān)的數(shù)值屬性和對象屬性。
其中,CUser(用戶類)具有數(shù)值屬性hasUserName(用戶姓名)。OUser的對象屬性類可表示為CUserProperty={BasicInformation,UserCondition}:
(1)基本信息,描述較少發(fā)生改變的人口統(tǒng)計(jì)學(xué)信息,包括子屬性類:年齡、性別、職業(yè)、家鄉(xiāng)、民族、食俗。概化為少兒、青年、中年、老年四個年齡階段。食俗是與宗教相關(guān)的飲食風(fēng)俗,其實(shí)例包括基督教、伊斯蘭教、佛教等,不同宗教信仰對菜品有不同的偏好和忌諱。
(2)用戶狀態(tài),是影響用戶用餐需求且可以描述的狀態(tài),包括子屬性類:情緒、身體狀況、最近菜品。身體狀況的實(shí)例包括幾種常見的異常狀況,疲憊、感冒、發(fā)燒、上火、腹痛等,以及特殊疾病如糖尿病、高血壓等,是推薦系統(tǒng)實(shí)現(xiàn)健康知識相關(guān)規(guī)則推理的基礎(chǔ)??紤]到用戶往往不希望連續(xù)吃重復(fù)的菜品,文中在用戶狀態(tài)中設(shè)計(jì)了最近菜品,其實(shí)例相同于(Equivalent To)菜品的實(shí)例,通過規(guī)則推理實(shí)現(xiàn)過濾。
CSituation(場景類)具有數(shù)值屬性hasDate(日期)、hasTime(時間)、hasLocation(位置)。OSituation的對象屬性類可表示為CSituationProperty={TimeInformation,NaturalEnvironment,CateringCondition}:
(1)時間信息,是由日期和時間推理得到的時間相關(guān)的標(biāo)簽,包括子屬性類:假期、季節(jié)、晝夜。假期的實(shí)例為工作日、周末、節(jié)假日。晝夜具有上午、中午、下午、夜晚、深夜五個實(shí)例。
(2)自然環(huán)境,描述用戶所處位置的自然環(huán)境信息,包括子屬性類:天氣、溫度、濕度。天氣的實(shí)例為晴、陰、雨、雪這四個主要類別。溫度和濕度按實(shí)際數(shù)值分別概化為五個區(qū)間。
(3)用餐性質(zhì),描述餐飲O2O相關(guān)的其他場景條件,包括子屬性類:陪同、用餐方式。陪同是與用戶共同用餐的伴侶,其實(shí)例包括個人、朋友、同學(xué)、同事、親屬等。用餐方式具有外賣、堂食、外帶三個實(shí)例。
1.1.2 餐飲本體
餐飲O2O的主要推薦對象為餐館和菜品,為研究菜品特征提取和用戶興趣挖掘,文中設(shè)計(jì)了餐飲O2O推薦的OFood(菜品本體),圍繞菜品概念類設(shè)計(jì)了相關(guān)的數(shù)值屬性和對象屬性。CFood(菜品類)的屬性需要全面描述菜品的類型、味道、性質(zhì)等特征,用于規(guī)則推理和基于內(nèi)容推薦的特征提取,其中數(shù)值屬性包括hasFoodName(菜品名字)、hasPrice(價格)。OFood的對象屬性類包括價格標(biāo)簽、類型、菜系、口味、做法、烹飪時間、食材,可表示為CFoodProperty={PriceLable,FoodType,Style,Flavor,CookWay,CookTime,Ingredient},其中部分屬性類的實(shí)例如表1所示。
綜上,文中通過Protégé構(gòu)建的餐飲推薦本體OCR的類及屬性層次結(jié)構(gòu)如圖1所示。
表1 菜品本體中部分屬性類的實(shí)例
(a)OCR的類 (b)OCR的對象屬性 (c)OCR的數(shù)值屬性
通過餐飲推薦本體模型的實(shí)例化,描述具體的情境信息和餐飲信息,是實(shí)現(xiàn)基于規(guī)則推理推薦的基礎(chǔ),其過程是根據(jù)當(dāng)前情境以及待推薦菜品的特征,對領(lǐng)域本體模型結(jié)構(gòu)中的概念類CUser、CSituation、CFood進(jìn)行實(shí)例化,對概念類的數(shù)值屬性和對象屬性賦值。同時,通過實(shí)例化本體模型記錄用戶的歷史行為,可以實(shí)現(xiàn)情境規(guī)則生成和用戶興趣挖掘。
情境信息是建立實(shí)例化情境本體模型的依據(jù),獲取方式主要分為兩種,通過移動設(shè)備和互聯(lián)網(wǎng)自動獲取或交互界面引導(dǎo)用戶手動輸入。CSituation的大部分屬性值是比較容易獲取的客觀因素,日期、時間可以直接從互聯(lián)網(wǎng)獲取,位置的坐標(biāo)值由移動設(shè)備的GPS獲取。假期、季節(jié)由日期的值推理獲取,而晝夜由時間的值推理獲取。而天氣、溫度、濕度通過結(jié)合位置從互聯(lián)網(wǎng)獲取準(zhǔn)確值,并轉(zhuǎn)換為對應(yīng)的概化屬性值以便于進(jìn)行規(guī)則推理。CUser的基本信息于注冊時引導(dǎo)用戶手動輸入,不需要在每次推薦時獲取。用餐性質(zhì)中陪同和用餐方式,以及用戶狀態(tài)中情緒和身體狀況這類因素對用戶需求有一定的影響,但受限于當(dāng)前移動技術(shù)仍難以實(shí)現(xiàn)自動獲取,推薦系統(tǒng)將提供手動輸入的接口用于采集。隨著普適計(jì)算的發(fā)展,推薦系統(tǒng)與其他移動APP數(shù)據(jù)共享,對這類信息的自動感知成為可能。CUser的最近菜品是該用戶最近兩天下單記錄中的菜品,從用戶歷史行為的記錄中獲取。
在餐飲推薦本體模型的基礎(chǔ)上使用形式化規(guī)則語言SWRL描述情境規(guī)則,包括推薦型和過濾型規(guī)則,通過規(guī)則推理實(shí)現(xiàn)基于情境的餐飲O2O推薦。推理機(jī)根據(jù)SWRL規(guī)則對情境與菜品的屬性值進(jìn)行匹配,建立用戶與菜品的屬性關(guān)系Recommend或noRecommend,比如當(dāng)前情境與待推薦菜品滿足過濾型規(guī)則:
User(?x)∧hasBodyCondition(?x,感冒)∧Food(?z)∧hasFoodType(?z ,冷食)→noRecommend(?x,?z)
(3)
則建立屬性關(guān)系noRecommend(用戶x,菜品z),以表達(dá)向感冒的用戶x過濾冷食類型的菜品z的語義。
在一次下單的實(shí)例化本體模型中,用戶和場景的屬性值描述了歷史情境的特征,包括用戶的基本信息和狀態(tài),以及場景的時間信息、自然環(huán)境和用餐性質(zhì),而菜品的屬性值反映了用戶在對應(yīng)情境下所選菜品的特征,包括菜品的類型、味道、性質(zhì)等。通過數(shù)據(jù)挖掘可以發(fā)現(xiàn)歷史情境和所選菜品的通用關(guān)聯(lián)模式,生成基于情境的推薦型規(guī)則,而過濾型規(guī)則和部分難以挖掘的規(guī)則(如健康知識相關(guān)規(guī)則)由系統(tǒng)直接定義。
文中將一次下單的實(shí)例化本體模型定義為一次情境事務(wù),作為用戶歷史行為的記錄。考慮用戶的操作中對于情境規(guī)則生成和用戶興趣挖掘有價值的行為,將用戶的下單、瀏覽、搜索這類操作都記錄在情境事務(wù)中。根據(jù)概念類實(shí)例的對象屬性值,提取情境事務(wù)的相應(yīng)屬性值集作為數(shù)據(jù)挖掘的分析對象,包括用戶屬性值集UPS、場景屬性值集SPS、菜品屬性值集FPS。其中UPS和SPS組成情境屬性值集CPS,描述了用戶進(jìn)行操作時情境的特征。從一次情境事務(wù)中提取的屬性值集如表2所示。
表2 情境事務(wù)屬性值集
使用關(guān)聯(lián)分析常用的Apriori算法對情境事務(wù)庫中所有的記錄所提取的屬性值集進(jìn)行關(guān)聯(lián)規(guī)則挖掘,將情境屬性值CP定為規(guī)則前件,菜品屬性值FP定為規(guī)則后件。關(guān)聯(lián)分析和情境規(guī)則生成的算法描述如下:
(1)基于Apriori算法尋找包含且僅包含1個FP的頻繁屬性值集,設(shè)定最小支持度min_sup和最小置信度min_cof。若頻繁屬性值集滿足以下要求:
支持度:
support({FP1,CP1,CP2…})>min_sup
(4)
置信度:
(5)
則生成如下形式的關(guān)聯(lián)規(guī)則:
CP1∧CP2∧…∧CPn→FP1
(6)
(2)區(qū)分用戶屬性值UP和場景屬性值SP,將生成的關(guān)聯(lián)規(guī)則轉(zhuǎn)化為本體模型適用的SWRL規(guī)則:
User(?x)∧hasUserProperty(?x,UP1)∧Situation(?y)∧hasSituationProperty(?y,SP1)∧Food(?z)∧hasFoodProperty(?z,FP1) →Recommend(?x,?z)
(7)
在基于情境感知的推薦中,情境敏感性也有強(qiáng)弱之分,因此定義情境規(guī)則具有情境敏感度(DOS)。通過關(guān)聯(lián)分析得到的規(guī)則使用其置信度作為DOS,過濾型規(guī)則的DOS為1。該方法為基于情境推薦的情境規(guī)則設(shè)定了優(yōu)先級,同時也提供了混合推薦系統(tǒng)融合兩種推薦方法的參數(shù)手段。
基于內(nèi)容的餐飲O2O推薦不需要考慮用戶對菜品的評分,而是根據(jù)用戶的下單、搜索等歷史行為,以向量空間模型表示用戶興趣和菜品特征,并計(jì)算相似度來進(jìn)行推薦[15]。采用實(shí)例化菜品本體模型中菜品的屬性值作為關(guān)鍵詞提取菜品特征,并根據(jù)用戶與菜品的交互記錄構(gòu)建用戶興趣模型的特征向量,具體步驟如下:
(1)使用信息檢索常用的TF-IDF方法計(jì)算菜品的每個屬性值在菜品中的重要度,以價格標(biāo)簽、類型、菜系、口味、做法、烹飪時間、食材的值作為關(guān)鍵詞。假設(shè)總共有N個菜品,關(guān)鍵詞ci是其中Ni個菜品的屬性值。菜品j具有屬性值ci,每個屬性值只在菜品中出現(xiàn)1次,因此ci的詞頻(TFij)為1。在許多菜品共同出現(xiàn)的關(guān)鍵詞需要降低對菜品特征區(qū)分和用戶興趣計(jì)算的貢獻(xiàn)程度,因此重要度會隨著其出現(xiàn)的頻率而下降。以TFij結(jié)合關(guān)鍵詞在所有菜品中出現(xiàn)次數(shù)的逆(IDFi)作為關(guān)鍵詞ci在菜品j中的重要度:
(8)
因此具有n個屬性值的菜品特征模型Content(j)可以表示為向量:
(9)
(10)
(11)
餐飲O2O推薦系統(tǒng)的工作流程如圖2所示。
圖2 推薦系統(tǒng)工作流程
系統(tǒng)通過自動獲取和手動輸入得到當(dāng)前情境信息,建立實(shí)例化情境本體模型,以及屬性關(guān)系inSituation(用戶x,場景y),以表達(dá)用戶x處于場景y的語義。基于情境的推薦模塊進(jìn)行當(dāng)前情境與待推薦菜品的規(guī)則推理,建立屬性關(guān)系Recommend-i/noRecommend-i(用戶x,菜品z),表示根據(jù)第i條推薦型/過濾型規(guī)則向用戶x推薦/過濾菜品y?;趦?nèi)容推薦模塊通過計(jì)算菜品特征向量和用戶興趣向量相似度,得到用戶對菜品的興趣度(DOI)。兩種推薦方法的結(jié)果進(jìn)入混合推薦模塊進(jìn)行處理,得到最終TOP-N推薦列表展示給用戶。用戶的操作將保存在情境事務(wù)庫中,系統(tǒng)根據(jù)情境事務(wù)庫中個人記錄構(gòu)建用戶興趣模型,根據(jù)情境事務(wù)庫中所有記錄挖掘情境規(guī)則。其中,混合推薦模塊對結(jié)果進(jìn)行處理的算法描述如下:
為了驗(yàn)證基于情境感知的餐飲O2O推薦方法的有效性,本節(jié)設(shè)計(jì)了混合推薦系統(tǒng)原型并進(jìn)行實(shí)驗(yàn)。通過Protégé構(gòu)建由OWL描述的餐飲推薦本體和SWRL描述的情境規(guī)則,并使用JESS推理機(jī)在模型上進(jìn)行規(guī)則推理,向大學(xué)生推薦高校內(nèi)不同飯?zhí)玫牟似贰?/p>
實(shí)驗(yàn)召集5名大學(xué)生使用系統(tǒng)原型記錄校園餐飲歷史行為,用作情境規(guī)則的挖掘。這一階段持續(xù)120天,以求在盡可能差異化的情境下分析情境與菜品的通用關(guān)聯(lián)模式。通過對情境事務(wù)進(jìn)行關(guān)聯(lián)分析,生成33條推薦型規(guī)則。系統(tǒng)根據(jù)情境知識定義9條過濾型規(guī)則,及8條健康知識相關(guān)規(guī)則,用于下一階段的實(shí)驗(yàn)。
第二階段召集35名大學(xué)生參與使用系統(tǒng)原型進(jìn)行餐飲推薦實(shí)驗(yàn),實(shí)驗(yàn)時間為6周。實(shí)驗(yàn)用戶就餐前輸入部分情境信息后,推薦系統(tǒng)將按照兩種推薦方法不同權(quán)重的組合為用戶展示三個TOP-10推薦列表,基于內(nèi)容推薦的權(quán)重分別為0,0.5,1。用戶根據(jù)自己的實(shí)際需求對推薦列表中菜品的選擇:準(zhǔn)確/不準(zhǔn)確。根據(jù)用戶評價和使用的歷史記錄,系統(tǒng)不斷調(diào)整用戶興趣模型,并且每周更新情境規(guī)則庫。
實(shí)驗(yàn)1:推薦準(zhǔn)確性分析。
圖3顯示了三種權(quán)重設(shè)定下的推薦模型在菜品推薦準(zhǔn)確率上的比較,取每周內(nèi)統(tǒng)計(jì)數(shù)據(jù)的均值,Precision是推薦列表中被用戶選擇為準(zhǔn)確的菜品數(shù)量與推薦列表中菜品總數(shù)的比例,公式表示如下:
(12)
圖3 不同推薦方法的菜品推薦準(zhǔn)確率
從結(jié)果可以看出,第2周后混合推薦方法的準(zhǔn)確率每周都高于單一推薦方法,而基于內(nèi)容推薦的初始準(zhǔn)確率較低,隨著周數(shù)的增加逐漸超過基于情境推薦。實(shí)驗(yàn)結(jié)果表明,文中提出的混合推薦模型可以有效解決基于內(nèi)容推薦的用戶冷啟動問題,且能較好地提高餐飲O2O推薦的準(zhǔn)確性。
實(shí)驗(yàn)2:權(quán)重自適應(yīng)調(diào)整。
圖4 下單菜品在不同權(quán)重設(shè)定下的百分比排名
圖4顯示了用戶最終下單的菜品在不同權(quán)重設(shè)定下菜品排序(不限TOP-10)中的平均百分比排名,僅取下單的菜品中排名最靠前的一道,排名越靠前代表推薦方法越準(zhǔn)確?;趦?nèi)容推薦的權(quán)重分別設(shè)為0.1,0.3,0.5,0.7,取每周內(nèi)統(tǒng)計(jì)數(shù)據(jù)的均值。
從結(jié)果可以看出,用戶使用系統(tǒng)原型的時間越長,平均排名最低的權(quán)重越大。根據(jù)平均排名調(diào)整權(quán)重,應(yīng)在用戶使用系統(tǒng)的第1周內(nèi)逐漸升為0.1,第2周內(nèi)逐漸升為0.3,第3-5周內(nèi)逐漸升為0.5。實(shí)驗(yàn)結(jié)果表明,混合推薦模型中基于內(nèi)容推薦的權(quán)重隨著使用時間逐漸加大,提高了自適應(yīng)調(diào)整方法的有效性。
考慮到餐飲O2O推薦中用戶需求的情境敏感性,采用本體和規(guī)則實(shí)現(xiàn)了基于情境感知的知識表示和推理,并在此基礎(chǔ)上結(jié)合用戶興趣建模提出了基于情境和基于內(nèi)容相融合的混合推薦方法。該方法既能根據(jù)所有用戶的歷史行為發(fā)現(xiàn)情境與菜品的通用關(guān)聯(lián)模式并生成情境規(guī)則,又能通過用戶興趣模型挖掘個人對菜品的特殊興趣偏好。實(shí)驗(yàn)證明了利用權(quán)重自適應(yīng)調(diào)整可以有效解決基于內(nèi)容推薦的用戶冷啟動問題,提高系統(tǒng)對用戶各個使用階段的推薦質(zhì)量。