閒魚是怎麼讓二手屬性抽取準確率達到95%+的? 先上效果 問題和難點 解決方案 3. 規則修正階段 算法部署 算法評估 最終效果 準確率 應用場景&後續展望 後續展望:

閒魚是怎麼讓二手屬性抽取準確率達到95%+的?

先上效果

圖1 - 二手屬性抽取算法效果Demo(1)

背景

閒魚作爲一款C2X的app,站在商品發佈的角度,閒魚商品相對於淘寶商品的特點有:

  1. 輕發佈導致商品信息不足 閒魚採用圖文描述的輕發佈模式,迎合了用戶快速發佈的體驗,但也導致了商品結構化信息不足的問題。如果平臺希望更理解商品到底是什麼,就需要算法去識別用戶描述的圖片和文本。
  2. 商品具有獨特的二手屬性 不同於淘寶新品的一手屬性(例如品牌、型號、規格參數等),二手屬性指的是在商品入手一段時間後,能夠反映商品折損/保值情況的屬性,比如商品的【使用次數】、【購買渠道】、【包裝/配件是否完整】等。 不同類目有該類目獨特的二手屬性,比如個護美妝有【保質期】,手機有【屏幕外觀】、【拆修情況】,服裝類有【是否下過水】等。

問題和難點

二手屬性抽取在NLP領域屬於信息抽取(Information Extraction)問題,通常的做法是拆解爲命名實體識別(NER)任務和文本分類(Text Classification)任務。

二手屬性抽取任務的難點有:

  1. 不同的類目、不同的二手屬性/屬性簇,需要構建不同的模型。
  2. 如果使用有監督學習(Bert家族),打標工作會非常的繁重,開發週期會變得很長。

解決方案

方法論

在當今NLP環境,依舊是Bert家族(或Transformer衍生的各種算法)大行其道,霸榜GLUE、CLUE等各大NLP榜單,信息抽取任務也不例外,所以筆者在本方案中的某些場景也使用了Bert家族。不過筆者認爲,沒有一種算法在各種場景下都是全能的,只有在給定領域、指定場景下最適用的算法。此外,筆者總結了自己的一套屬性抽取的方法論:

  1. 句式相對固定,或者句式受模板限制,如文本描述模板是典型的時間+地點+人物+事件(某事某地某人做了啥事),用NER,建議方法:CRF、BiLSTM+CRF、Bert家族、Bert家族+CRF等。

  2. 句式不固定,但領域/場景關鍵詞相對固定,或者有一些關鍵詞模板、俗稱、行話等,用文本分類:

  3. 近義詞、近義表述不是特別多的情況(≤幾十種到上百種),關鍵詞呈對數正態分佈/指數分佈(即有很多高頻且集中的關鍵詞),建議方法:正則表達式+規則。

  4. 近義詞、近義表述非常多的情況(≥幾百種到上千種),典型的如地名識別,建議方法:用Bert家族

  5. 句式和詞語都不固定,典型的如社交評論/聊天的情感分析,建議方法:用Bert家族。

方案架構

圖2 - 二手屬性抽取方案架構圖

  • NLP任務 如前所述,將不同的二手屬性識別需求拆解爲文本多分類、多標籤分類以及NER任務。
  • 文本多分類:即“n選1”問題,比如根據文本判斷商品是否包郵(二分類)。
  • 多標籤分類:即同時進行多個“n選1”問題,比如同時判斷某手機商品的屏幕外觀(好/中/差)和機身外觀(好/中/差)。多標籤分類通常的做法是對不同標籤共享網絡層,並將損失函數以一定權重疊加,由於多個標籤之間有一定程度的聯繫,效果有時候會比做多個單獨的“n選1”問題更好,同時由於是多個屬性(屬性簇)一起建模,在訓練和推斷的時候也會更省事。
  • NER:即命名實體識別。

建模方法

1. 人工打標階段 由於打標的人工成本比較高,需要設法利用集團的AliNLP進行輔助。方法是,首先利用AliNLP的電商NER模型對輸入文本進行解析。然後進行拆解,對屬於NER任務的二手屬性,如保質期/保修期/容量/使用次數/服裝風格等,可以直接定位到相關詞性或實體的關鍵詞進行BIO標註;對屬於分類任務的其它二手屬性,則可以在電商NER的分詞結果基礎上打標,提高人工標註的效率。

2. 算法訓練階段 此爲方案核心,本方案訓練算法主要通過3種途徑:

(1)使用Albert-Tiny:建模採用主流對預訓練+finetune的方案。由於該模型推斷速度更快,用於對QPS和響應要求非常高的實時在線場景。對於NER任務也可以嘗試在網絡最後面接一層CRF或不接。 Albert:Albert意指“A lite bert”,名副其實,它的優點在訓練速度快。

Albert的源碼相比Bert的源碼基本如出一轍,但網絡結構有幾點重要的區別:

1. Word Embedding層做了因式分解,在詞向量上大大減少了參數量。設詞表大小爲V,詞向量長度爲H,對Bert,詞向量參數量爲VH;對Albert,先把詞向長度量縮減爲E,再擴充爲H,參數量爲VE+E*H,由於E遠小於H,H遠小於V,用於訓練的參數量得到銳減。

1. 跨層參數共享:以albert-base爲例,albert會在12層之間共享每層的attention參數或全連接層ffn的參數,默認是兩者都共享。源碼中通過tenorflow.variable_scope的reuse參數可以輕鬆實現。參數共享進一步減少了需要訓練的參數量。 除此之外,Albert還有一些訓練任務和訓練細節上的優化,此處按下不表。

Albert依據網絡深度不同分爲: - Albert-Large/xLarge/xxLarge:24層 - Albert-Base:12層 - Albert-Small:6層 - Albert-Tiny:4層 一般來說,層數越多,訓練和推斷耗時都會越久。考慮到線上部署的實時性要求更快<typo id="typo-2200" data-origin="的推" ignoretag="true">的推</typo>斷速度,本方案選擇了最小的Albert-Tiny。其中文推斷速度相對bert-base提高約10倍,且精度基本保留(數據引用自github/albert_zh)。

(2)使用StrutBert-Base:建模採用主流對預訓練+finetune的方案。經測算,在二手屬性識別上,它比Albert-Tiny準確率相對提升約1%到1.5%,可用於離線T+1場景。對於NER任務也可以嘗試在網絡最後面接一層CRF或不接。 StructBert:爲阿里自研算法,優點在精度高,GLUE榜單上已經排到第3名。

Word Structural Objective:StrutBert在Bert的MLM任務基礎上,加上了打亂詞序並迫使其重構正確詞序的任務:論文中是隨機抽取一個三元詞組(trigram)進行打亂,然後加上了如下公式作爲MLM損失函數的約束。StrutBert的這個靈感也許來自於網上的一個段子:“研表究明,漢字序順並不定一影<typo id="typo-2707" data-origin="閱" ignoretag="true">閱</typo>響讀,事證實明瞭當你看這完句話之後才發字現都亂是的”。

本方案之所以選擇StrutBert,是因爲集團內有該算法在電商領域專屬的預訓練模型(接口),它依據網絡深度不同分爲:

  • StrutBert-Base:12層* StrutBert-Lite:6層* StrutBert-Tiny:4層

在離線T+1場景下,追求精度更高而對實時性無太大要求,因此本方案選擇了StrutBert-Base。

本方案之所以選擇StrutBert,是因爲集團內有該算法在電商領域專屬的預訓練模型(接口),它依據網絡深度不同分爲:

  • StrutBert-Base:12層* StrutBert-Lite:6層* StrutBert-Tiny:4層

在離線T+1場景下,追求精度更高而對實時性無太大要求,因此本方案選擇了StrutBert-Base。

(3)使用正則表達式:優點:速度最快,比Albert-Tiny還快10-100倍以上;且在許多句式和關鍵詞相對固定的二手屬性上,準確率比上面兩種算法更高;且易於維護。缺點:非常依賴業務知識、行業經驗和數據分析對大量正則模式進行梳理。

3. 規則修正階段

  1. 識別結果歸一化:對於NER任務,許多識別出來的結果不能直接使用,需要做“歸一化”,例如某件男裝衣服的尺碼識別出來爲“175/88A”,那麼應該自動映射到“L碼”。
  2. 某些二手屬性之間可能會存在衝突或依賴,因此在算法識別之後,需要對識別結果依據業務規則進行一定修正。比如某商品賣家聲稱是“全新”,但是同時又表明“僅用過3次”,那麼“全新”會自動降級爲“非全新”(99新或95新,不同類目分級略有不同)。

算法部署

  • 離線T+1場景:通過ODPS(現名MaxCompute)+UDF的方式進行部署,即算法會通過Python寫成UDF腳本,模型文件則作爲資源上傳到ODPS上。* 在線實時場景:模型通過PAI-EAS進行分佈式部署,數據交互通過iGraph(一種實時圖數據庫)和TPP完成。

算法評估

對每個類目的每個二手屬性,制定好評測的標準,然後抽樣一定量級的數據,交由外包進行人工評估。評估工作通過對比人工識別的結果和算法識別的結果是否一致,給出準確率、精確率、召回率等。

最終效果

準確率

本方案識別結果經過人工評估,每個類目無論是準確率、<typo id="typo-3732" data-origin="精召" ignoretag="true">精召</typo>率都達到了非常高的水平,且誤差值均遠小於上線限制,並已經上線應用在閒魚主要類目的商品上。

應用場景&後續展望

二手屬性抽取的結果目前已應用的場景包括:

  1. 定價場景
  2. 聊天場景
  3. 優質商品池挖掘
  4. 搜索導購
  5. 個性化商品推薦

後續展望:

  1. 目前二手屬性抽取總共覆蓋閒魚主流類目商品,隨着開發進行,後續計劃覆蓋到全部類目。
  2. 目前二手屬性抽取主要依賴於文本識別,閒魚商品是圖文描述,後續可以考慮在圖片上下功夫,通過圖像算法完善商品的結構化信息。
  3. 利用和分析商品二手屬性,形成優質商品標準,擴充優質商品池。

作者:漸漓

本文爲阿里雲原創內容,未經允許不得轉載

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章