主題模型用於在一系列文檔中發現抽象主題(topic)的一種統計模型,在PAI平台,您可以通過給PLDA組件設定topic參數值,從而讓每篇文檔抽象出不同主題。
LDA(Latent Dirichlet allocation)是一種主題模型,它可以按照機率分布的形式給出文檔集中每篇文檔的主題。LDA也是一種無監督學習演算法,在訓練時您無需手工標註的訓練集,僅需要在文檔集中指定主題的數量K即可(K即為PLDA參數topic)。
LDA首先由David M. Blei、Andrew Y. Ng和Michael I. Jordan於2003年提出,在文本挖掘領域應用於文本主題識別、文本分類和文本相似性計算等方面。
組件配置
方式一:可視化方式
在Designer工作流程頁面添加PLDA組件,並在介面右側配置相關參數:
參數類型 | 參數 | 參數描述 |
欄位設定 | 選擇特徵列 | 選擇參與訓練的特徵列。 |
參數設定 | 主題個數 | 設定LDA的輸出的主題個數。 |
Alpha |
| |
beta |
| |
burn In 迭代次數 | Burn In 迭代次數,必須小於總迭代次數,預設值為100。 | |
總迭代次數 | 正整數,非必選,預設值為150。 |
方式二:PAI命令方式
使用PAI命令配置PLDA組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼。
pai -name PLDA
-project algo_public
-DinputTableName=lda_input
-DtopicNum=10
-topicWordTableName=lda_output;參數 | 是否必選 | 類型 | 預設值 | 描述 |
inputTableName | 是 | STRING | 無 | 輸入表的名稱。 |
inputTablePartitions | 否 | STRING | 輸入表的所有分區 | 輸入表中,參與訓練的分區。系統支援以下格式:
說明 指定多個分區時,分區之間使用英文逗號(,)分隔。 |
selectedColNames | 否 | STRING | 輸入表中所有的列名 | 輸入表中用於LDA的列名。 |
topicNum | 是 | 正整數 | 無 | Topic的數量,取值範圍為[2, 500]。 |
kvDelimiter | 否 | STRING | 英文冒號(:) | Key和Value間的分隔字元。取值:
|
itemDelimiter | 否 | STRING | 空格 | Key和Key間的分隔字元。取值:
|
alpha | 否 | FLOAT | 0.1 |
|
beta | 否 | FLOAT | 0.01 |
|
topicWordTableName | 是 | STRING | 無 | topic-word頻率貢獻表。 |
pwzTableName | 否 | STRING | 無,即不輸出 |
|
pzwTableName | 否 | STRING | 無,即不輸出 |
|
pdzTableName | 否 | STRING | 無,即不輸出 |
|
pzdTableName | 否 | STRING | 無,即不輸出 |
|
pzTableName | 否 | STRING | 無,即不輸出 |
|
burnInIterations | 否 | 正整數 | 100 | Burn In迭代次數,且取值必須小於totalIterations。 |
totalIterations | 否 | 正整數 | 150 | 迭代次數。 說明 z是主題,w是詞,d是文檔。 |
enableSparse | 否 | BOOL | true | 是否是kv輸入,選擇kv輸入或分詞結果。取值範圍如下:
|
coreNum | 否 | 正整數 | -1 | 與參數memSizePerCore配對使用,預設系統會根據輸入資料量計算所起Instance的數量,即取值為-1。 |
memSizePerCore | 否 | 正整數 | -1 | 單個節點記憶體大小,單位MB。範圍為[1024, 64*1024]。預設系統自動計算每個節點的記憶體大小,即取值為-1。 |
輸入和輸出設定
輸入
資料必須為疏鬆陣列的格式。可以通過三元組轉KV組件進行轉換。
輸出:
輸出依次為:topic-word頻率貢獻表、單詞|主題輸出表、主題|單詞輸出表、文檔|主題輸出表、主題|文檔輸出表、主題輸出表。
topic-word頻率貢獻表的輸出格式如輸出格式所示。
圖 2. 輸出格式

