2018年8月24日 星期五

自然語言處理(NLP)_語言模型和主題模型

 

自然語言處理(NLP)_語言模型和主題模型


一、語言模型

人類之間之所以能明白彼此所說出來的語言,有個重要因素,就是人類的語言就類似於一個模型。在模型之內的,即使其中一些字轉換了,依然能理解;然而若這句話不曾出現在們的認知中,們可能就難以理解這話的涵義了,這或許是為什麼需要讀那麼多文言文、唐詩、宋詞那些不會出現在現代的語法結構和用詞了。

舉個語言模型的例子:「今天我要去跑步。」我們可以把跑步替換成任何動詞,「今天我要去跳舞」或「今天我要去旅行」,這些替換都不成問題,但若是切換成形容詞:「今天我要去溫暖的」,我們人類很容易就會知道,這句話很怪,好像缺了什麼。

再來,常出現的問題就是語法結構分析(parsing),舉個例子:「今天我要去跑步」若被改成「跑步我今天要去」,這句話還是能理解,只是作為中文母語人士會覺得這句話超怪。而若是直接變成「跑步我要去今天」,這任何一個聽得懂中文的人應該都會很崩潰。因此,說出讓人能夠聽懂同時不覺得怪的一句話就是語言模型在做的事情。

寫出讓人理解的句子固然重要,還需要言之有理。首先,電腦需要決定這句話的內容,像是前面例子的關鍵內容是「時間」(今天)和「運動」(跑步);接著電腦會根據語法結構架構這句話,同時也會在字詞當中做選擇,像是「今天」的同義字就有「今朝」、「今日」,「跑步」也有些同義字如「小跑」、「飛跑」、「飛奔」。但電腦真的寫出:「今朝我要去飛奔。」那這台電腦還是需要重新訓練。

二、主題模型(Topic Model)

主題模型有兩個假設:

(1) 每個文件都混合著多個主題。

(2) 每個主題由多個字所組成。

根據不同的數學理論,主題模型的實作方法分為三:

(1)潛在語義分析 Latent Semantic Analysis (LSA)。

(2)概率潛在語義分析Probabilistic Latent Semantic Analysis (pLSA)。

(3)潛在迪利克雷分配 Latent Dirichlet Allocation (LDA)。

https://ithelp.ithome.com.tw/upload/images/20190906/20118683f2QfRWJ82s.png

LSA主要比對了每個字與主題的關係(U)和每個主題和檔案的關係(V),如同下圖,”brush, car, add, paint”是每個曾經出現在文集中的字,”Math, Art, Traffic, Food”是可能的主題類別,而doc1, doc2, doc3則是每個文件。LSA的數學模型基於線性代數中的奇異值分解(Singular Value Decomposition),pLSA則在LSA的架構上加上了機率學,然而,pLSA容易出現過適的問題。之後,LDA在pLSA的基礎上加上貝氏定律,LDA和其演化版本們也是現在最主要主題模型的實作方法。

https://ithelp.ithome.com.tw/upload/images/20190906/20118683luIgwbzguo.png

主題模型可以應用的層面非常廣,包含歷史資料、自然科學研究文章、社會科學研究等。針對這些應用,也有幾個重要課題像是怎麼將這些模型視覺化、如何讓非電腦科學背景的人更直觀的理解模型。

舉些實際應用上的例子:在下面這張圖中,可以知道隨著時間的推進,在原子物理學領域中研究主題的變化。

https://ithelp.ithome.com.tw/upload/images/20190906/201186834OtChyx16K.png

下圖中我們也能了解,美國兩大黨派對於各項議題的政治光譜。

https://ithelp.ithome.com.tw/upload/images/20190906/20118683iVHv4JJpV9.png

沒有留言:

張貼留言

歡迎各方朋友針對本文議題討論~

在 Windows 架設 Redmine 專案管理安裝

  Redmine   是一套 Web 介面的專案管理平台,經同事推薦便試著安裝起來試試,試用的過程由於能夠與   Subversion   完美結合,所以看起來很能夠彌補公司裡 SVN 專案缺乏專案控管與議題追蹤的問題,由於   Redmine   安裝步驟有些麻煩,所以不得不...