自然語言處理在eBay的技術實踐

AI人工智慧發表於2018-02-27

本文由 【FMI飛馬網】原創,原文連結:自然語言處理在eBay的技術實踐

由飛馬網主辦的“FMI人工智慧&大資料高峰論壇”,大會上各位專家帶給我們的關於人工智慧的深深的思考都還在繼續......

在大會上,來自eBay的李睿老師為我們詳細介紹了NLP(自然語言處理)在eBay的具體應用及其運用場景。

自然語言處理在eBay的技術實踐

李睿

李睿,eBay Inc. Tech Lead資料科學家,專案負責人,負責研究與開發電子商務平臺上用到的分類識別演算法。熟悉文字、影象處理、分類的各種經典演算法。

NLP——搜尋的支撐

在演講中,李睿給我們介紹到,作為電商企業,搜尋功能是其重中之重。但是搜尋由什麼支撐呢?

答案就是自然語言處理。除此之外,還有一些其他的東西在支撐,可以保證eBay在世界20多個國家都能夠有網頁,能夠說不同語言的人買東西,使得我在美國賣,在俄國的買家能夠用俄語看到我們的商品,能夠用俄語進行搜尋,這背後就是機器翻譯在支援。

那麼問題來了:怎樣使語音結構化,來提高搜尋準確率?

李睿老師給我們舉了個例子:由於不同地區的文化差異,有些搜尋關鍵詞在不同的地方含義不同。比如在歐洲有人輸入Iphone orange,他不是要搜尋一個橘色的Iphone,他是要搜尋叫orange的供應商所繫結的Iphone。這裡面需要通過質問識別,來識別出使用者在這個場合,這個詞到底是什麼意思?只有正確的進行了這樣的理解之後,才能夠準確的進行搜尋,準確的找到使用者想要的東西。

搜尋跟分類器

使用者在eBay上,是想要買新的還是舊的?搜尋的出來的賣家產品是新的還是舊的,怎樣做正確匹配?怎樣針對不同的使用者群去做個性化推薦?這些都是分類器幫助個性化搜尋。

分類器很大程度上能夠幫到機器翻譯,就像上文提到的orange,要不要翻呢?要不要從英語翻到德語呢,是需要分場合的。如果它被識別成顏色,那就應該翻譯;如果識別成一個手機供應商,那就不需要翻譯。同樣的也是,如果識別出來這個詞是表示一個品牌,它也不需要翻譯。所以分類器背後,NER是一個很重要的組成部分。

自然語言處理在eBay的技術實踐

NER的作用與目的

說到這裡,相信會有人問:NER的作用是什麼呢?目的是什麼呢?在演講中,李睿老師為我們做了很好的解釋。比如你在eBay上要找一個關鍵詞,它要把這個標題上每一個單詞,儘可能的把每一個單詞,都分成某一個列別,打成一個標籤。你比如說New,他需要把它標成一個Condition,Apple是一個品牌,iPhone6s,它希望能夠把它識別成model為,16GB,能夠識成容量,ATT,Locked,繫結的就是手機供應商,SPACE GRAY是顏色,Smartphone是類別。

傳統的NER的做法很簡單,每一個詞就是一個物件,這個詞有多長,裡面含有一些什麼樣的字母的組合,以及他這個前後文,它出現在句子的開頭或者結尾,它裡面是幾個詞,有了這些特徵之後,就可以訓練一個Classifiers。

後來,神經網路興起之後,大家就用詞向量,使得這些向量可以代表他的語意,而且向量還可以重新加減,後來就用詞向量,發現效果得到了非常大的提升。當然,這是用谷歌自己的詞向量,而對於電商,因為它是用谷歌的New訓練出來自己的詞向量,不一定適用於電商,後來我們就把自己的商品作為訓練資料,訓練出了自己的詞向量,效能得到了進一步的提升。這幾年,大家都做神經網路,神經網路的perform會更好,我們訓練出了自己的神經網路,perform得到了進一步的提升。這些NER能夠在各個領域對使用者體驗進行幫助。

eBay的類別推薦系統演進

據李睿老師介紹,eBay在美國的網站上有一萬六千個分類,所以對於C2C的使用者來說,有時候自己的商品會放在錯誤的分類裡面,影響買賣。而通過類別推薦,可以將使用者的商品放在正確的門類中。

儘管有類別推薦,但還是會有一些偷懶點錯或者故意點錯的現象出現。還有一些商品的評價,有一些是真正的評價,有一些是一些無關的髒話或者其他等等,對於這些的情況都是需要系統自動分類出來。

李睿老師給我們舉了eBay的例子,eBay最早的推薦版本,Histogram版本非常簡單。因為雖然eBay有1萬6千個類別,大家類別的分佈是非常不均勻的,10%的商品都是手機,手機事實上是eBay賣的最好的一個類別。可能有0.0001%是賣一些紀念品或者什麼樣的,分佈非常的不均勻。當你畫出柱狀圖之後,每一個類別有一個概率,他根據這個概率把一個新的商品分到這個門類下去。實際上有50%的準確度。

後來大家發現這個辦法實際是太土了,就做了一步改進,這也是用的很多的演算法,這也是NLP裡面用的很多的一個演算法,他的原理是當你進行一個,你輸入賣的產品的標題之後,它把標題做一個搜尋關鍵詞,利用搜尋引擎找到跟你這個產品類似的標題,比如找到一百個產品或者五百個產品,他就看這些產品分屬於哪些類別,從50%提高到73%的準確度。但因為我們的類別會經常改,每個季度都會有一些增加或者刪減,他會自適應的適應類別的改變。但是它的壞處也是,剛才那些放錯了類別的商品,會使得準確度下降。

於是在2015年的時候eBay就做了一些改進,比如說一百個相似產品裡面,他分屬於10個類別,這10個類別,不能簡單的根據哪個類別的商品多就用哪個類別,而是再加了一層邏輯,用原本屬於這些類別的商品,就是一些比較大的,比較多的資料量做的一個統計語言模型,這個也是NLP的一個重要的技術,統計語言模型,做了一個model之後,重新對這10個領域進行排序。這一步簡單的做法,就使得精確度從73%提高到了81%。這是一個很簡單的演算法。

同樣的,神經網路出來之後,神經網路興起之後,我們也想,神經網路會不會使得它有更好的效能。我們做了一些卷積神經網路,大家以為,最開始的時候主要是應用於圖象的,卷積,對圖象上抽取的特徵,同樣的思路,也可以應用於文字上,做了之後發現效果果然不錯,從81%提高到了90%的精確度。但是,這個演算法也有問題,有兩個問題,第一你需要很大的宣傳樣本,第二還有一個問題,就像我們剛才提到的,我們的類別,每個季度都在變,他變的不多。

在演講中,李睿表示,她的理念是,能用簡單的就不要用複雜的,尤其在工業界裡面越複雜系統越容易出錯。

怎麼去用我們的分類器在背後能識別出他們分別是商品本身,或者是套裝,或者是附件呢?具體的做法是這樣的:

比如來了一個標題,我把它符號化,首先這個標題叫做Red leather case for iPhone7。符號化之後,因為是你對一個詞典,Red不在我這個詞典裡面,我就把它標成星號, Leather case我把它標成A,for是相當於一個連線詞,就用數字4來替代,Iphone7是一個型號,它也是一個產品,所以用P,produce。有了這個之後,我就把它作為一個統計語言模型,說白了,就是算一個概率,第一個字元是星號的概率,第二個字元是A的概率,第三個字元是4的概率,第四個字元是P的概率,做了語言統計模型之後,大家如果熟悉統計語言模型的同學就應該知道,其實他要考慮上下文,他不能簡簡單單的只看當前詞或者當前符號的概率,他希望能夠有前後文。

統計語言模型裡面就有所謂的,就是我只關心前一個詞,兩個詞的模型,給定前一個字元是A,下一個字元是4的概率。有人可能覺得這兩個詞不夠,我要三個詞,前面是星號A,下一個字是4的概率,這是最簡單的模型的概念,有了這個統計模型之後我們就可以訓練一個分類器了。

但為什麼要做符號化這一步呢,很多統計語言模型都是用詞本身,好處是什麼?同樣的模型,可以用在手機的類別下,可以用在照相機的類別下,可以用在電腦的類別下,它結構比較相似,你符號化之後,它會用同樣的模型適用於不同的情況,這就是它的好處。這就是統計語言模型在NLP,它是NLP的技術,這是分類器的應用。

最後,李睿老師表示,技術是共通的,就像NLP、分類器、機器翻譯等技術,不只是運用於電商,也能擴充到其他領域。所有語言處理,文書處理背後,其實都是NLP的各種技術在支撐。明白了這個(NLP)自然語言處理的基本技術,你就可以應用在各行各業裡邊。

最後,附上李睿老師現場演講的Q&A:

Q:請問符號化的過程是一個虛擬的過程還是說是人工標註的呢?

A:你可以做人工標註,我們最開始是做的人工標註。當然你需要有一個詞典,你要知道在手機類別下,我有哪些關鍵字是能夠被標註的,我知道Iphone7在我的字典裡面,所以我能把它標註成,有些是我的詞典裡面沒有的,我就不標。所以這個詞典的構造是人工構造的,當然你可以想象,用NER的技術也可以做一些標註,可以做綠標註,然後人工的去調整,都是可以的。

Q:請問要快速的對一個物品進行分類的話,如何保障效率呢,是隻是離線的嗎?

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

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

A:上下文,有幾個辦法,一個辦法就是所謂的,就剛才提到的,因為他用這個條件概率,前面出現一個詞,後面出現另外一個詞,事先用訓練樣本把這些概率算出來,之後你來了新的樣本的時候,如果發現了同樣的前後文組合,就會把這個概率算進去,這是一種做法。

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

Q:有了統計語言模型之後,是怎麼來計算套裝產品這個過程的?

A:有幾種做法,統計語言模型做出來之後,條件概率都算好了,你來了之後,當然我們的做法是這樣子的,你在訓練的時候,你就把它切成各種,你把所有各種各樣的組合都挑出來,有一個A4P,這種挑出來之後,你就統計出他的概率,新來的這個樣本里邊,如果也出現了A4P,你就把這個概率存在裡頭,你就算出,當然有這個概率,出現其他的概率,還有條件概率的模型,把它存在一塊。


相關文章