外賣商品的標準化建設與應用

外賣菜品命名個性化程度高,爲運營分析、召回排序、後臺管理等業務帶來必定的困難。本文系外賣美食知識圖譜系列的第二篇文章,介紹了外賣從零到一建設菜品標準化體系的過程及方案,涉及的主要技術包括NLP領域的實體抽取、文本匹配、關係分類,以及CV領域的圖像匹配等。最後,經過標準名在外賣業務中的應用實踐,驗證了標準名體系建設的價值和意義。

1. 背景及目標

商品做爲外賣交易過程當中的核心要素,決定了供需匹配的精準度,直接影響交易行爲是否能夠達成。外賣平臺美食、甜點、飲品類在線商品有億級之多,其中不少是屬性信息一致的相同商品。創建對商品的標準化描述、聚合相同商品,是不少業務場景的訴求。前端

供銷分析場景:想分析一下望京的商家都售賣哪些菜品,有多少商家賣「西紅柿炒雞蛋」?web

遇到的問題:因爲菜品是非標品,而且商家對菜品命名的個性化程度也較高,所以在外賣平臺,同一個菜品名出現不一樣的命名方式;例如「西紅柿炒雞蛋」有西紅柿炒蛋、小番茄炒蛋、西紅柿雞蛋、京城三絕~番茄炒蛋【正價小份菜】等,沒有辦法簡單經過關鍵字進行聚合。算法

主題推薦場景:想出一個菜品粒度的主題,快速篩選「小龍蝦」、「烤魚」、「雞公煲」、「黃燜雞」等熱門菜品?後端

遇到的問題:商品分類的顆粒度不夠精細,沒法快速找到適合顆粒度的菜品。安全

商家上單場景:像「魚香肉絲」這樣廣泛的菜品,每一個商家上單都須要錄入食材、口味、作法、菜系、葷素等標籤,錄入成本較高,能不能像淘寶同樣,選擇「iPhone 12」,它的屬性就可以自動關聯。 網絡

遇到的問題:沒有將菜品的屬性標準化,菜品和屬性之間沒有關聯關係。運維

基於上述業務應用的痛點,啓動外賣商品的標準化建設。目標是創建商品的標準化名稱,實現對相同商品的聚合,從而爲業務提供合理粒度的概念劃分,賦能運營端供銷分析、用戶端個性化召回排序、商家端標籤生產。性能

2. 業界調研

對於業界的參考,主要參考淘寶標準化SPU建設。SPU在淘寶體系中決定了商品是什麼,是商品信息聚合的最小單位,由關鍵屬性+綁定屬性來構成。學習

  • 關鍵屬性:用來約束和定義一個商品的,好比iPhone X,決定他的就是「蘋果」這個品牌和「X」這個系列。
  • 綁定屬性:是關鍵屬性的補充和細化,好比當iPhone X已經明確了這個產品後,其餘的屬性也肯定,好比網絡模型,屏幕尺寸等,進一步補充這些屬性內容,逐步明確了一個產品。

可見淘寶對於SPU的建設,其實是對屬性的建設,例如格力空調S1240,經過「格力」品牌、「空調」類目、「S1240」型號來標準化、惟一化。測試

但對於餐飲行業,對於核心屬性食材「牛肉」、作法「炒」、口味「辣」,都沒法肯定是什麼菜,更談不上惟一化;但若是經過「小炒黃牛肉」來標準化,行業/用戶對其有廣泛的認知,較固定的食材口味作法,適合用來進行標準化。所以淘寶是標準化屬性,而餐飲是標準化菜品名稱,因此咱們稱之爲標準菜品名。

3. 問題分析及挑戰

淘寶的標準化主要針對標品,而餐飲標準化都是針對非標品,難度較大,面臨着個性化問題、錄入不規範、粒度無行業標準、認知侷限性等挑戰。

3.1 個性化問題

餐飲商家能夠較低成本的自定義生產,個性化程度較高,同一個菜品在不一樣商家的命名可能不一樣,須要大量的同義詞聚合,而同義詞的召回是最大的難點(如何將潛在的同義詞挖掘出來進行標註)。例如,京城三絕-番茄炒蛋【正價小份菜】、西紅柿炒蛋(小份)、小番茄炒蛋、西紅柿炒土雞蛋(小份),都表示「西紅柿炒蛋」這個商品。

3.2 錄入不規範

商家在錄入商品名稱時,存在缺失關鍵信息的問題,例如「繽紛水果」是水果拼盤、飲品仍是披薩,「韭菜雞蛋」是包子仍是餃子。除商品名稱外,須要藉助商家分類,商品左側欄tag等相關信息,對名稱進行推理和補全。

3.3 粒度無行業標準

在進行標準化處理時,沒有統一的標準,粒度難以把控:過粗容易產生非菜品錯誤(例如:「香辣雞腿」->「雞腿」),過細則標準名內聚性偏弱(例如:「傳統黃燜雞【大碗】」自己粒度過細,須要提煉到「黃燜雞」)。

3.4 認知侷限性

中華美食文化博大精深,對於一些不爲大衆所熟知的小衆或者地方特點菜品,須要具備必定的專業背景知識,例如「炒雞」也是一個標準的名稱,還並不是商家沒有填寫完整。

4. 方案

商品標準化的總體方案如圖所示:首先,基於美食、甜點飲品類商家全量在線的億級商品,經過名稱清洗、置信度判別、人工檢驗,得到近菜名主幹;經過同義詞挖掘,對主幹名進一步聚合壓縮,映射到標準名主詞上;對於單個商品,進行名稱糾錯、清洗,經過模型匹配,創建商品-標準名的映射;爲了知足不一樣業務場景的聚合粒度要求,經過上下級關係挖掘、深度遍歷,進一步構建標準名層級樹。分別對名稱聚合、匹配映射、層級構建三個模塊,涉及的算法模型進行介紹。

圖1 商品名標準化總體方案

4.1 名稱聚合

清洗後的主幹名仍然存在不少同義說法,好比土豆燒牛肉、牛肉燒土豆、洋芋燒牛肉、小土豆燒牛肉,表示相同的商品。目標經過挖掘這種潛在的同義關係,進一步提高名稱的內聚性。在迭代過程當中,前後採用了規則匹配和語義匹配的方法,挖掘潛在同義詞;聚合後,根據流行度判別其中的主詞,並將原始主幹詞映射至標準名主詞上。分別對兩種同義詞挖掘方法介紹以下。

4.1.1 規則匹配

一期首先採用了規則匹配的方法,利用NER模型對主幹名進行成份識別,結合知識圖譜構建的屬性同義詞表,判別兩個主幹名是不是同義關係。

圖2 規則匹配

如圖所示,其中「牛肉燒土豆」經過名稱解析獲得牛肉-食材,燒-作法,土豆-食材;「洋芋燒牛肉」經過名稱解析獲得洋芋-食材,燒-作法,牛肉-食材。對比兩個主幹名的成份詞,其中土豆和洋芋是一對同義詞,其他成份相同,進而得到兩者之間是同義關係。

經過這種方式,挖掘了十萬級同義詞。根據標準名覆蓋的商品供給數計算流行度值,將更流行度高的做爲主詞;人工校驗後補充到標準名體系,提高了名稱的聚合度。

4.1.2 語意匹配

因爲規則匹配挖掘到的同義詞有限,好比「擔擔麪」和「擔擔湯麪」,根據NER模型,擔擔麪和湯麪都會被識別成類目。如此,兩個主幹名是沒法創建同義關係的。

咱們二期調研了一些匹配模型,借鑑搜索算法組的經驗,採用BERT+DSSM的語義匹配模型進行同義關係的擴覆蓋。如圖所示,首先基於一期積累的同義詞,經過組內生成正例、跨組交叉生成負例的方式,構造百萬級樣本,訓練了一版基礎模型;爲了進一步優化模型性能,經過主動學習和數據加強兩種方式,對樣本數據進行了迭代。

圖3 語義匹配

主動學習的方式是先利用基礎模型,圈定一批待標註的類似樣本,交與外包標註,將標註正確的樣本補充至已有同義詞中,標註錯誤的樣本做爲負例加入訓練集,用於模型的優化迭代。經過主動學習的方式,補充了萬級樣本,模型準確率取得了明顯提高。

進一步分析結果,咱們發現了一批頗有特色的Bad Case,好比紅燒獅子頭和紅燒獅子頭蓋飯、香椿拌豆腐和拌豆腐等,它們都屬於字面類似度很高,但核心成份不一樣的匹配錯誤。基於這個特色,先根據字面距離圈定了一批字面類似度高的樣本,再利用名稱解析模型對它們進行成份識別,找出其中的負例。經過這種方式,在不增長標註成本的狀況下,自動補充了十萬級樣本,進一步提高了模型準確率。

利用語義匹配模型,新增了十萬級同義詞,進一步提高了標準名的內聚性。

4.2 匹配映射

在挖掘到的標準名詞表和同義詞基礎上,爲億級在線商品創建「商品-標準名」映射(如「招牌蛋炒小番茄(大份)」映射到「西紅柿炒雞蛋」),以實現對相同商品的標準化描述與聚合。採用「文本+圖像」相結合的匹配模型,覆蓋了絕大部分的美食、甜點飲品類商家的在線商品。

4.2.1 文本匹配

文本匹配流程如圖4所示,總體上包括召回、排序兩個階段。首先,對商品名稱中的規格、份量等描述信息進行清洗,將清洗後的商品名和標準名進行2-Gram切片,經過關聯相同切片的方式召回待匹配的標準名;基於召回的標準名,經過計算Jaccard距離,保留其中Top 20的標準名;在此基礎上,利用BERT向量化模型,生成商品名和標準名的向量表示,經過計算Jaccard字面距離以及Cosine向量類似度,獲取其中綜合得分最高的標準名。

圖4 文本匹配流程

其中,BERT向量化模型是基於上文提到的同義語義匹配模型,經過級聯一維類型編碼的方式,對標準名和商品名加以區分,改形成非對稱的標準名匹配模型。之因此進行這一改造,是由於與同義匹配不一樣,標準名匹配是非對稱的,如應該將「香鍋盔」匹配上相對抽象的標準名「鍋盔」,而不是匹配上一個更加具體的標準名「五香鍋盔」。改造後,匹配準確率提高顯著。

圖5 BERT向量化模型

4.2.2 圖像匹配

因爲菜品名稱長度有限及商家命名不規範,會致使僅從菜品名稱中獲取的信息有限,而沒法創建到標準名的匹配。經過引入商品圖片信息,提高對文本信息不全商品的匹配準確和覆蓋。

圖像匹配採用的是多分類模型,根據標準名層級聚合(詳見3層級構建)後的頂級、二級,選擇待匹配的標準名標籤,並根據文本匹配結果構造樣本集。因爲採用大規模非人工標註樣本,不可避免地要解決樣本噪聲問題。在本場景下,噪聲主要有兩個主要來源:一是文本信息不全,致使樣本標籤錯誤;二是因爲頂級、二級聚合程度高,致使分類粒度過粗,須要細分多個標籤。針對這些問題,採用樣本和模型迭代優化的方式,根據基礎樣本集訓練第一版模型,利用模型挖掘噪聲數據,人工校驗後進行模型微調。如此迭代,實現低標註成本的模型優化。

圖6 圖像模型迭代流程

圖像分類模型選取了對MBConv模塊的參數進行精細化調整的Basebone網絡Efficientnet,經過調整網絡的分辨率、深度、寬度,肯定最優組合。噪聲挖掘方法首先經過Metric-Learn的方法,學習得到每一個類別的聚類中心,及類內樣本與聚類中心距離的均值、方差、中位數,對其進行排序挖掘出類內離散度較大的類別;再借助分類模型在驗證集上的預測、O2U-Net和Forgetting Event 挖掘樣本噪聲。經過上述方法優化模型,提高對噪聲樣本的魯棒性。

圖7 Efficientnet網絡寬度、深度、輸入分辨率的變化組合

4.3 層級構建

推薦場景下,爲了保證用戶的個性化和多樣性體驗,須要對商品進行合理粒度的聚合。對於商品列表排序場景,現有的類目過粗會致使多樣性不足,標準名過細又會致使結果重複。目標是創建一個層級化商品體系,爲業務提供合理的聚合粒度。經過關係挖掘、層級遍歷,構造萬級頂點的層級樹,支持了商品列表、美食排行榜、交互式推薦等業務的上線和優化。構建方法包括規則匹配和模型判別,分別對這兩類方法進行介紹。

4.3.1 規則匹配

規則匹配方法是基於已有的NER模型和屬性詞表,經過結構化匹配的方法,挖掘到十萬級上下級關係,進一步遍歷生成萬級頂點的標準名層級樹。這種方法比較簡單且基於已有工做,開發週期短,在項目初期快速支持上線,並取得了明顯的業務收益。

圖8 規則判別

4.3.2 模型判別

規則匹配方法因爲NER模型錯誤和屬性詞關係缺乏,致使挖掘到的關係有限,須要經過判別模型進一步提高泛化性。基於BERT的關係分類模型如圖8所示,對待分類一對標準名用[SEP]進行拼接,並在開頭增長[CLS]標識符;將拼接結果編碼後,傳入BERT模型,取出[CLS]位的Embedding;再接一個全聯接層和Softmax層,輸出關係分類結果。標準名關係包括:同義、上級、下級、無關係,一共四個類別。

樣本數據包括簡單例和難例兩部分,其中:簡單例基於已有同義詞、上下級,以及同義詞組間交叉生成無關係,一共構造百萬級樣本;在此基礎上,進一步利用已有的向量化模型,召回類似度較高的標準名對,交與外包標註其類別。第二類樣本更加貼近實際分類場景,且屬於混淆度較高的分類難例。

利用第一類樣本預訓練第一版模型,並在此基礎上,利用第二類樣本對模型進行微調,進一步提高了分類模型準確率。經人工校驗,進一步補充了萬級詞關係。

圖9 分類模型

5. 在外賣業務中的應用

標準名做爲品類和商品的中間層,爲業務提供了更加豐富、合理的聚合粒度,支持了流量轉化的策略優化,以及系列產品形態的開發上線。商品列表經過接入標準名層級,實現對商品合理粒度的聚合,解決了線上商品重複的問題;標準名做爲基礎數據,支持了美食排行榜的開發和上線,幫助提高用戶的決策效率;針對用戶當前訪問的商品,利用標準名召回相關商品,實現交互式推薦。標準名做爲重要的基礎數據,支持了產品形態多元化、推薦策略優化,對於提高用戶粘性、流量轉化,搭建商家用戶友好的平臺生態,具備重要的價值和意義。

圖10 標準名相關應用

6. 總結與展望

目前已完成基本的體系建設,併成功應用於不一樣的場景、取得業務收益。已經建成的標準名層級體系,覆蓋了外賣絕大多數的在線商品。標準名做爲基礎和特徵數據,應用到用戶端的商品列表、美食排行榜等業務場景,支持策略優化、帶來流量收益;同時,也經過服務接口的形式,跨部門支持SaaS點餐推薦的模型優化,以提高用戶體驗和業務收益。

標準名做爲重要的商品特徵數據,應用的業務場景普遍。在將來的工做中,須要持續迭代優化,保證標準名自身的準確性和質量;同時加深業務理解,根據業務須要優化層級體系,爲業務提供更加合理的聚合粒度,提高轉化收益;此外,重點建設一批用戶感知強、供給覆蓋高的標準名,下降業務方的接入成本和提升收益。

6.1 詞表及同義詞優化

標準名詞表體量大、同義關係複雜,詞表建設不是一蹴而就的,須要長期的迭代和優化。針對標準名詞表中存在的非菜品、不規範等錯誤,以及同義詞聚合不足、過分的問題,採用算法圈定+人工標註的方式,經過模型挖掘潛在同義詞、圈定問題詞組;人工校驗後,進行批量補充和修改,持續優化詞表、同義詞。

6.2 層級結構合理化

目前標準名層級是經過規則和模型的方式直接生成的,人工參與度較低,與業務場景的結合不夠深刻。後續會結合業務須要,明確剪枝、聚合粒度準則,合理化層級結構,優化層級的合理性。從而更加靈活、高效地支持不一樣的業務應用,提高落地效果。

6.3 核心標準名建設

標準名有20萬之多,爲業務應用形成必定的選擇成本、帶來不便。結合業務須要,圈定其中用戶感知強、供給覆蓋高、優質的標準名,做爲核心標準名進行重點建設。核心標準名輕量且精煉,更加貼近業務須要,能夠幫助業務方下降接入成本、提升收益。

7. 參考文獻

  • [1] Devlin J, Chang M W, Lee K, et al. BERT: Pre-training of deep bidirectional transformers for language understanding[J]. arXiv preprint arXiv:1810.04805, 2018.
  • [2] Lample G, Ballesteros M, Subramanian S, et al. Neural architectures for named entity recognition[J]. arXiv preprint arXiv:1603.01360, 2016.
  • [3] Chen Q, Zhu X, Ling Z, et al. Enhanced lstm for natural language inference[J]. arXiv preprint arXiv:1609.06038, 2016.
  • [4] Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]//Proceedings of the 22nd ACM international conference on Information & Knowledge Management. 2013: 2333-2338.
  • [5]Tan M , Le Q V . EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks[J]. 2019.

8. 做者簡介

劉柳、懋地、崇錦、曉星等,均來自美團外賣技術團隊。

閱讀美團技術團隊更多技術文章合集

前端 | 算法 | 後端 | 數據 | 安全 | 運維 | iOS | Android | 測試

| 在公衆號菜單欄對話框回覆【2020年貨】、【2019年貨】、【2018年貨】、【2017年貨】等關鍵詞,可查看美團技術團隊歷年技術文章合集。

| 本文系美團技術團隊出品,著做權歸屬美團。歡迎出於分享和交流等非商業目的轉載或使用本文內容,敬請註明「內容轉載自美團技術團隊」。本文未經許可,不得進行商業性轉載或者使用。任何商用行爲,請發送郵件至tech@meituan.com申請受權。

相關文章
相關標籤/搜索