自然語言處理-第十一期-攜程酒店訂單評價&LDA
08-21
自然語言處理-第十一期-攜程酒店訂單評價&LDA
Topic 2:
推薦閱讀:
來自專欄 AI自學者
背景
幾天沒更新了,主要原因是LDA模型沒有達到我的預期效果。我也一直在探索其原因和替代方案。最近研究LDA的過程對非監督學習也有了一個更深的感受:
- 非監督學習. 無Labeled Data,所以無法簡單以準確率來判斷其演算法的有效性和普適性;
- 非監督學習的結果可能不可重複。特別是非監督學習演算法中帶有神經網路的部分,由於其初始參數為隨機值,並且有多個local optimal,導致反向傳遞的結果可能不一樣;
- 非監督學習, 與半監督學習。 這種演算法我只是遇到過,還沒有學習過。 但是由於大部分現實應用場景的數據都是無標籤的。我個人感覺,通過增加Semi-Supuervised Learning可以增加整個模型的準確率。
關於,監督學習、非監督學習、半監督學習以後會給大家帶來,最近還是以NLP主題為主。代碼在最後
LDA實踐及代碼本來想用英文文本來實踐該模型,畢竟英文的數據很多,工具也多。但是找到了一個攜程的酒店訂單評價。雖然中文的很多sentence token, POS tag(詞性,如名詞)的工具都不好用,還是決定要試試。LDA模型的搭建離不開Gensim lib。在gensim lib的幫助下搭建LDA模型也只需要三行代碼。如下圖,其中num_topics=10 指的是將文本分為10個主題。當然前面離不開文本的一些基礎處理,下圖的totalX就是一個包含所有文本的List
接下來給大家展示下模型運行的結果,下面的結果通過可視化展現出來Topic1:Topic3:
我僅展示3個Topic的情況和對應的辭彙。大家可以從結果中看到,其中並沒有明顯的分區,或者說出現明顯不同的特徵值等情況。即,LDA沒有明顯得分區或者說沒有完成Cluster任務;模型結論思模型考
當模型沒有出現預想的結果時,我也檢查了代碼,沒有發現什麼問題,都是按照Gensim官網來的。那麼我們又要回到LDA模型的方法論上面了。LDA模型的兩個關鍵條件:- 該詞在所有文檔的範圍內,歸屬於哪個Topic;
- 該詞所在的文檔歸屬於哪個Topic
大家可以想像基於上面兩個條件之後,會出現兩個趨勢:
- 同一個詞趨向于歸屬於同一個Topic
- 同一個文本單元趨向于歸屬於同一個Topic
最終的結果是,經常出現在一起的詞會趨向于歸屬於同一個主題。
所以LDA達到效果的前提或者說Topic Model的前提是,文本存在不同的主題,差異性較大的主題。比如運動、科技、歷史主題。但是就攜程酒店來講,我們理想中的狀態是,我們要挖掘客戶提到的不同特徵。但是實際情況並非如此,所以總結下,LDA未達到效果的原因如下:- LDA的原理是將出現頻率在一起的詞歸位一類,但是對於「酒店」等高頻詞會出現在所有的主題中。反而客戶評價的「服務不好,網不好」等卻因為頻率太低,無法出現在Topic的list中;
- LDA非常適用於不同主題的文本,而酒店的文本都歸屬於一個大主題:酒店。我們是希望找到其中的小主題,但是其會收到 酒店整體評價的影響;
- 上面的LDA模型是以一整個訂單評價為一個單元。 那麼,就是LDA會認為該訂單會趨向同一主題。這個主題按照道理來講也肯定是酒店,不會是網速。
LDA優化
基於以上原因,我們可以提出一些優化:- 第一個就是將LDA的單元縮小,不是整個訂單評價,而是一個個句子。這背後的原理是,當整個訂單作為一個主題時,酒店這個詞會和所有的特徵相關聯。 所有討論到的特徵都會相互關聯。 如果縮小顆粒度,那麼句子與句子將不會相互影響;
- 第二個是只留下名詞。我們從上面的結果可以看到,我們經常收到 「是」,「不錯」等等的影響。
其中第二個優化,由於要用中文的POS Tagger,現在的工具都不好用,Stanford的模型我也還沒有學會用。所以,要後續給大家帶來。
下期預告本期實際上是解釋了我探索LDA模型的過程和其中的困惑。雖然,沒有達到我預期的效果,但是我也了解了很多東西。當然我們的任務還要延續下去,如何挖掘訂單評價信息,既然LDA不理解,我找到了一個較為傳統的Rule-Based-Aspect-Extraction方法。需要代碼的朋友可以給我留言。推薦閱讀:
※體育的科學,冬奧會的顏值擔當項目,原來可以這麼美
※北京繪朗科技H8 PRO切繪一體機設備參數
※App出海,海外媒體投放平台怎麼選?
※聯想真正錯在,它本該像華為那樣重要 | 科技袁人
※關於西班牙語單詞詞源的系統分析 | 日誌 | 果殼網 科技有意思