eBay數據科學家李睿:天然語言處理在eBay的技術實踐


記者|谷磊
算法


近日,在飛馬網主辦的「FMI人工智能&大數據高峯論壇」上,來自eBay的數據科學家李睿博士以「NLP(天然語言處理)在eBay的技術實踐」爲題作了主題分享,主要涵蓋的應用包含:搜索(Search)、分類器(Classifiers)、命名實體識別(Name Entity Recognition)、機器翻譯(Machine Translation)等。
網絡


                                  (eBay Inc. Tech Lead數據科學家李睿)iphone


如下爲李睿博士的演講及Q&A實錄,AI科技大本營作了不改變原意的整理:性能

李睿:你們好,今天給你們分享一些我在美國工做的一些經驗。
學習

背景介紹大數據

首先自我介紹一下,個人本科和碩士是在浙大唸的,相信在座有不少個人校友們。後來到美國去念的博士,博士論文是用模式識別的方式對圖像進行分類。畢業後,就到了工業界來作工程師,當時畢業的時候,模式識別專業很難找工做的,跟如今徹底不同。陸續作過智能視頻監控,視頻防抖動,車牌識別等工做。
網站

後來大概在2012年的時候,大數據興起了,我發現模式識別終於有用武之地了,因而到了eBay作大數據,到如今已經有5年多了。在eBay主要作一些分類器,這個分類器背後能夠想像用了不少天然語言處理的技術,因此這也是我今天的主題。
搜索引擎

簡單給你們介紹一下eBay,我相信你們應該對這個名字不陌生。事實上,eBay和亞馬遜一塊兒,算是美國八大電商之一。它跟亞馬遜最大的差異是亞馬遜自營不少商品,咱們像淘寶同樣只是一個平臺,給賣家和買家提供交換的平臺,咱們沒有自營店,沒有物流。這是1955年一個叫皮埃爾的工程師作的,他週末在家無事可作,就作這麼一個網頁,上去賣的第一件商品,就是家裏一隻壞了的激光筆,竟然很快就有人買,後來迅速發展的很大規模。
人工智能

事實上在1997年的時候,eBay想進入中國市場,因爲各類緣由,eBay本身的定位也有一些問題,最後很遺憾沒有進入到中國市場。
spa

可是在美國,eBay仍是一個你們用的比較多的網站,它有三大塊y業務:

  • Marketplace(相似淘寶)

  • 電影票銷售

  • 分類廣告

不只在美國,eBay在20多個國家都有網站,每一個國家都用本身的語言,這背後是有機器翻譯的技術在支持。它如今有一億多的活躍的用戶,每一季度大概營收是在兩百億美金左右。eBay的總部在灣區,是整個灣區的高科技公司裏面比較早使用大數據的,咱們的不少平臺都是業界比較領先的。如今就講講天然語言處理在eBay有哪些具體的運用場合。

NLP在eBay的應用場景

                                    

搜索

在電商上買東西,最重要的功能是搜索,而搜索是由天然語言處理做爲技術支撐的。

由於通常用戶搜索的時候輸入的是沒有結構化的一句話,或者短語,怎麼樣使得它結構化?因爲整個關鍵詞是有歧異的,好比說在歐洲,有人輸入iphone orange,他不是要搜索一個橘色的iphone,他是要搜索一個叫orange的供應商所綁定的iphone。這裏須要結合使用場合和周圍的關鍵詞,纔可以準確的進行搜索,從而找到用戶想要的東西。

還有搜索根分類器,在eBay新舊好壞的商品都是能夠賣的。搜索關鍵字裏面,想買一個新東西仍是舊東西,怎麼在商品上知道我是賣新的仍是舊的,可以作正確的匹配。

另外有一些個性化的應用,每一個人搜索的目的是不同的。好比說我很喜歡看電影,系統從個人購買歷史中,知道我是愛看電影的人;另一我的愛看書,因此係統針對個人搜索結果就應該將電影排在前面,針對另外一我的就應該將書的結果放在前面。

NER

   

NER(Name Entity Recognition)是個很重要的組成部分,這裏給你們具體講一下。好比說這是一個簡單的eBay的商品,NER的做用是什麼呢?目的是什麼呢?首先它要儘量把這個標題上每個單詞,都分紅某一個類別,打成一個標籤。

好比說New,須要把它標成一個condition;Apple是一個品牌;iPhone6s是model;16GB可以識成容量;AT&T Locked 綁定的就是手機供應商,Space Gray 是顏色,Smartphone是類別。

傳統的NER的作法很簡單,每個詞就是一個對象,這個詞有多長,裏面含有一些什麼樣的字母的組合,以及先後文,出如今句子的開頭或者結尾,裏面是幾個詞,有了這些特徵以後,就能夠訓練一個Classifiers,我知道我是在手機類別下面,我可能會分7類,最先很簡單,用的是邏輯迴歸或者線性迴歸。

後來,神經網絡興起以後,你們就用詞向量,谷歌作出來的詞向量,使得這些矢量能夠表明他的語意,並且矢量還能夠從新加減,發現效果獲得了很是大的提高。固然了,這是用谷歌本身的詞向量,不必定適用於電商,後來咱們就把本身的商品做爲訓練數據,訓練出了本身的詞向量,性能獲得了進一步的提高。

後來這幾年,你們都作神經網絡,咱們也以爲要試一試看,神經網絡是否是表現會更好,答案是確定的。咱們訓練出了本身的神經網絡,性能獲得了進一步的提高。這些NER可以在各個領域對用戶體驗進行幫助。就像我提到的搜索,還有機器翻譯,都可以極大的幫助提高用戶體驗。

還有一個,能夠想象,我想淘寶也是同樣的,實際上背後有一個很大的詞典來描述不一樣的類別。好比說在手機類別下有哪些品牌呢,有蘋果、三星、華爲、小米,有什麼型號呢?層出不窮的型號。這個詞典是怎麼產生的呢?在過去詞典確定都是人手工輸入的。但是手工輸入顯然是效率很低,並且容易出錯的一個方式,怎麼樣可以自動的去增長詞典裏面的內容?NER能夠很大程度的幫助。

Classifiers

還有一大塊是所謂的分類器——Classifiers。做爲一個C2C平臺上的新賣家,用戶要賣同樣東西,但不知道賣在哪一個門類下,由於eBay在美國的網站上有一萬六千個分類,有賣食品的,有賣日用品的,有賣電子商品的走廊。每一個走廊裏面有細分,到手機的走廊,有手機,有充電器,有保護膜,分的很是細。對於一個新的賣家而言,他不知道放在哪個門類下面,若是放錯了,別人就找不到他的東西。咱們但願可以幫助這些C2C的用戶,使他們將商品放到正確的門類下。

還有一個,雖然系統給他推薦類別了,可是有的人仍是可能會點錯,有的乾脆是故意點錯。有這樣的例子,這是一個很常見的,我據說淘寶也有相似的問題。用戶在手機的門類下面搜索iphone,你們都想買便宜的,會按價格排序,從低往高一排,發現全是手機殼,這些人但願經過這種方式,讓別人看獲得,咱們要作的是防止這種狀況的發生。咱們但願可以把這些商品找出來,把它們放在正確的門類下,並且對賣家進行警告、懲罰。

要對商品進行分類,分紅附件、主機、套裝。好比說這是一個翻頁筆,這是一個麥克風,好比說這是一臺電腦,這是一部手機,這是稱之爲產品的類別,爲何要作這樣的事情呢?好比說用戶剛買了一個手機,是否是應該推薦他買個殼?買個保護膜?買個充電器?這是個性化的推薦,系統會把相關的商品聯繫在一塊兒進行推薦,因此這是爲何咱們要作分類的問題。

剛纔提到的,我輸入一個文學做品,究竟是買書仍是買電影光盤,都是同樣的。還有就是所謂的評價,咱們上面有賣幾百萬,上千萬的商品,這個商品的評價好很差,對買家來講我是買華爲的P9仍是P10呢?要看看評價。有些說賣家出貨太慢,或者說這個賣家包裝的很差,或者這個賣家反饋很是的不及時,或者是有人甚至在上面說髒話,這些都不是真正的產品的評價。這也是一個分類問題,怎麼樣分出真正的評價,或者是關於賣家的評價,甚至是髒話,這就是一個分類問題。

你們能夠想象相似的分類問題還有不少種,這裏不一一贅述,我給你們舉兩個實戰的例子。先講類別推薦,剛纔提到咱們有1萬6千個類別,若是說隨機推薦的話,準確度是很低的。

在過去10年,eBay一直在這個問題上不斷的改進。由於最先的版本很是簡單,咱們雖然有1萬6千個類別,類別的分佈是很是不均勻的,10%的商品都是手機,手機事實上是eBay賣的最好的一個類別。可能有0.0001%是賣一些記念品之類的,分佈很是的不均勻。

當你畫出柱狀圖以後,每個類別有一個機率,根據這個機率把一個新的商品分到這個門類下去,這樣很傻對不對?實際上有50%的準確度。後來你們發現這個辦法實際是太土了,就作了一步改進。



這是經常使用的算法,也是NLP裏面用的不少的一個算法。它的原理是當用戶輸入賣的產品的標題以後,它把標題作一個搜索關鍵詞,利用搜索引擎找到跟這個產品相似的標題。好比找到一百個產品或者五百個產品,就看這些產品分屬於哪些類別,匹配度最高的產品,他就認爲這個產品應該列在這個類別裏面。這是最簡單的方法,可是效果仍是不錯的,從50%提升到73%的準確度。

由於咱們的類別會常常改,每一個季度都會有一些增長或者刪減,它會自適應的適應類別的改變。可是它的壞處也是,剛纔那些放錯了類別的商品,會使得準確度降低。因而在2015年的時候咱們就作了一些改進。

好比說一百個類似產品裏面,它分屬於10個類別,這10個類別,不能簡單的根據哪一個類別的商品多就用哪一個類別,而是再加了一層邏輯,用本來屬於這些類別的商品,就是一些比較大的,比較多的數據量作的一個統計語言模型,這個也是NLP的一個重要的技術,統計語言模型。作了一個模型以後,從新對這10個領域進行排序。這一步簡單的作法,就使得精確度從73%提升到了81%,這是一個很簡單的算法。

一樣的,神經網絡興起以後,咱們也想,這個技術會不會使得它有更好的性能。咱們作了一些卷積神經網絡,你們覺得,最開始的時候主要是用卷積在圖像上抽取的特徵,一樣的思路,也能夠應用於文字上,作了以後發現效果果真不錯,從81%提升到了90%的精確度。

可是,這個算法也有問題,有兩個問題:

  • 第一,須要很大的宣傳樣本;

  • 第二,咱們的類別,每一個季度都在變,他變的很少,10個,8個。好比說像如今很流行的,小朋友玩的指尖陀螺,這個東西以後增長了一個類別,若是說你就用舊的分類的模型來分類的話,有可能永遠也不能推薦這個類別給賣家了。

它要每次根據類別的轉換,從新訓練模型,須要像KNN同樣有自適應的功能,這也是我這麼多年的一個體會。有的時候好的性能要有代價的,訓練樣本變得複雜,增長了難度,訓練的時間增長了,訓練時間要好幾天,若干星期。

個人理念是,能用簡單的就不要用複雜的,尤爲在工業界裏面越複雜系統越容易出錯,除非性能有很是大的提高值得你這麼去作。

     

還有我剛纔提到的,怎麼樣分辨出它是產品自己,或者是它是一個附件,還有它是否是一個套裝?好比說你們看這三個商品,這個紅框框出來的,他們三個都有一個共同的關鍵字——奧林巴斯。它們也有另外相同的關鍵字是型號和鏡頭。但是你們發現,價格差不少,有1099塊的,有100多塊的,有999塊的,爲何呢?由於第一個是套裝,它是機身加鏡頭,第二個是鏡頭自己。第三個就是裸機身,不難想象,徹底不一樣的東西,價格是必定會有差異的。

我怎麼去用咱們的分類器在背後能識別出他們分別是商品自己,或者是套裝,或者是附件呢?給你們具體講一下怎麼作的。

來了一個標題,我把它符號化,首先這個標題叫作Red leather case for iPhone7。符號化以後,由於對應的是一個詞典,Red不在詞典裏面,我就把它標成星號, Leather case我把它標成A,for是至關於一個鏈接詞,就用數字4來替代,iphone 7 是一個型號,它也是一個產品,因此用P。

有了這個以後,我就把它做爲一個統計語言模型,說白了,就是算一個機率,第一個字符是星號的機率,第二個字符是A的機率,第三個字符是4的機率,第四個字符是P的機率,作了語言統計模型以後,熟悉統計語言模型的同窗就應該知道,其實它要考慮上下文,不能簡簡單單的只看當前詞或者當前符號的機率。統計語言模型裏面就有所謂的,就是我只關心前一個詞,兩個詞的模型,給定前一個字符是A,下一個字符是4的機率。有人可能以爲這兩個詞不夠,我要三個詞,前面是星號A,下一個字是4的機率,這是最簡單的模型的概念,有了這個統計模型以後咱們就能夠訓練一個分類器了。

你們會想,爲何要作符號化這一步呢?不少統計語言模型都是用詞自己,好處是什麼?我一樣的模型,能夠用在手機的類別下,能夠用在照相機的類別下,能夠用在電腦的類別下,結構比較類似,符號化以後,它會用一樣的模型適用於不一樣的狀況,這就是它的好處。這就是統計語言模型在NLP分類器的應用。

剛纔講到了以前類別的Classifiers,背後用NLP的各類技術來進行支撐,事實上我相信相似的用途,相似的應用在淘寶也好,京東也好,各類電商應該也是有類似的應用,它不僅是用於電商,這些分類器能夠拓展到其餘的領域。好比說在電子支付,或者是銀行信貸這些,就有所謂的反欺詐。反欺詐其實就是一個簡單的分類問題,你的用戶的行爲是正常行爲或者是不正常行爲。

機器翻譯

機器翻譯,也能夠應用於非電商的領域,好比說前段時間碰到新華社的朋友,他就說新華社也有相似的,你要把別的國家的稿件翻譯成中文的。事實上這些年,全部語言處理,文字處理背後,其實都是NLP的各類技術在支撐。因此明白了這個天然語言處理的基本技術,你就能夠應用在各行各業裏邊。

個人內容就簡單講到這裏。

Q&A環節

問題1:您好,我想問一下剛剛符號化的過程也是一個虛擬的過程仍是說是人工標註的呢?

李睿:這個問題很好。你能夠作人工標註,咱們最開始是作的人工標註。固然你須要有一個詞典,你要知道在手機類別下,有哪些關鍵字是可以被標註的,有些是詞典裏面沒有的,那麼就不標。因此這個詞典的構造是人工構造的,固然你能夠想象,用NER的技術能夠作綠標註,而後人工的去調整,都是能夠的。

問題2:請問大家作過實時的識別嗎?可能咱們計算量不是那麼複雜,能快速的給出一個響應,可是我要是用深度學習,神經網絡這個,要快速的對一個物品進行分類的話,可能這個效率會降低不少,不知道大家考慮作過這種場景沒有?仍是隻是說離線的?

李睿:沒有。這個固然是線上的,神經網絡它訓練的時候確定是要變得更長,可能訓練好幾個禮拜。關鍵是你在對新來的商品進行分類的時候,不須要訓練,你只是用這個模型作一個估計。這一步,神經網絡時長是很快的,貝葉斯也很快,神經網絡運算稍微複雜一點,可是也都是在幾十毫秒的量級,不影響實時性的。

問題3:你好,我想問一下,剛剛你講到上下文處理問題,能再講一下嗎?有沒有一些辦法或者算法?

李睿:一個辦法是,由於他用條件機率,前面出現一個詞,後面出現另一個詞,事先用訓練樣本把這些機率算出來,以後來了新的樣本的時候,若是發現了一樣的先後文組合,就會把這個機率算進去。

還有一種作法,這就是所謂的統計語言模型,它是一個馬爾可夫鏈的概念,以一個詞一個詞爲單位,就看在你的文章中出現這個詞的機率有多少。新的樣本中若是也出現這個詞,就把這個機率用進去,他把兩個詞的短語或者三個詞的短語作成一個單位,把這個機率也算出來,到時候,當新的樣本里出現了兩個字的短語或者三個字的短語的時候,就把這個機率用進去。各類方式都有,看你的訓練樣本的複雜度來決定。

相關文章
相關標籤/搜索