• 沒有找到結果。

本論文實驗是用 JAVA 語言撰寫,因此我們選擇使用同樣由 JAVA 語言 撰寫而成的 LDA 工具 JGibbLDA5,同時它也是一種開放原始碼的工具,如 此一來也較容易從原始碼中理解及應用在本論文架構上。JGibbLDA 工具是 採用 Gibbs sampling 的方式進行主題模型的建構與分析,其詳細步驟如下:

一、 收集項目內容、去除停用字

我們使用的資料集為電影及笑話資料集。首先,電影資料集除了需要 使用者對電影的評分資料外,還需要所有電影項目的內容,因此我們從 IMDB6擷取所有電影項目的故事情節如圖 2;笑話資料集是使用 Jester7所提 供的笑話文字檔8如圖 3。最後從這些項目內容中,將文章裡常常出現卻與 文章主題較無相關的停用字剔除,例如:"a"、"and"、"is" 及 "the" 等字。

5 http://jgibblda.sourceforge.net/

6 http://www.imdb.com/

7 http://eigentaste.berkeley.edu/

8 http://eigentaste.berkeley.edu/dataset/jester_dataset_1_joke_texts.zip

圖 2 電影資料集的電影故事情節

圖 3 Jester 所提供的笑話文字檔

二、 參數設定

主題模型建構時的各項參數說明如表 7,本論文主題與字詞的參數設定 需視資料集的大小而定。由於 Movielens 100k 只有 1682 部電影,笑話資 料集只有 100 篇笑話,故主題數與字詞數不宜設定太多,我們會比較主題

數與字題數設定在 5、10、15、20 的效果,決定最後的參數值。其餘參數 設定則保留預設值來進行建構。

表 7 JGibbLDA 參數說明

參數 格式 說明

-est 建立主題模型

-alpha double 設定 LDA 模型中的𝛂值,預設值為 50/K -beta double 設定 LDA 模型中的𝛃值,預設值為 0.1 -ntopics int 設定 LDA 主題數量,預設值為 100

-niters int 設定 Gibbs sampling 迭代執行的次數,

預設值為 2000 次

-savestep int 設定每間隔幾次迭代後儲存檔案,

預設值為每 200 次

-twords int 設定每一個主題要顯示的字詞數量,

預設值為 0

-dir string 設定訓練資料的目錄位置 -dfile string 設定訓練資料的檔案名稱

三、 輸入文件格式

輸入文件的統一格式如下圖 4 所示,第一列代表所有項目的數量,從第 二列開始後之每一列代表著每個項目中的字詞。

圖 4 JGibbLDA 輸入格式範例

四、 輸出資料格式

透過 Gibbs sampling 的方式進行主題模型分析後,我們會得到以下六個檔 案,其檔案紀錄了主題在各文件上的主題與字詞分布的資訊,詳細檔案說 明如下表 8 所示:

表 8 JGibbLDA 輸出檔案說明

檔案名稱 說明

<model-name>.others 紀錄主題模型建立時的參數及設定

<model-name>.phi 儲存每個字詞被指定到某個主題的機率分布

<model-name>.theta 儲存每個文件所包含主題的機率分布

<model-name>.tassign 儲存訓練資料字詞對特定主題的對應

<model-name>.twords 儲存每個主題下選出的字詞及對應的權重 Wordmap.txt 每個字詞與系統自動編號的對應

相關文件