隱含狄利克雷分佈
重要
Machine Learning 工作室 (傳統) 的支援將於 2024 年 8 月 31 日結束。 建議您在該日期之前轉換成 Azure Machine Learning。
自 2021 年 12 月 1 日起,您將無法建立新的 Machine Learning 工作室 (傳統) 資源。 在 2024 年 8 月 31 日之前,您可以繼續使用現有的 Machine Learning 工作室 (傳統) 資源。
ML 工作室 (傳統) 文件即將淘汰,未來將不再更新。
使用 Vowpal Wabbit 程式庫執行 VW LDA
Category:文字分析
模組概觀
本文說明如何在機器學習 Studio (傳統) 中使用潛在的狄氏配置模組,將非機密文字分組為許多類別目錄。 潛在的狄氏配置 (LDA) 通常用於自然語言處理 (NLP) 以尋找類似的文字。 另一種常見說法為「主題模型化」。
此課程模組會使用一個文字資料行,並產生下列輸出:
來源文字,以及每個類別的分數
功能矩陣,其中包含每個類別的已解壓縮詞彙和係數
轉換,您可以將其儲存並重新套用至做為輸入使用的新文字
因為此課程模組使用 Vowpal Wabbit 程式庫,所以非常快速。 如需 Vowpal Wabbit 的詳細資訊,請參閱GitHub 存放庫,其中包含教學課程和演算法的說明。
深入瞭解潛在的狄氏配置 (LDA)
一般來說,LDA 並非每個 se 的分類方法,而是使用有生產力方法。 這表示您不需要提供已知的類別標籤,然後推斷模式。 相反地,此演算法會產生用來識別主題群組的概率模型。 您可以使用概率模型,將現有的定型案例或您提供給模型的新案例分類為輸入。
有生產力模型是最好的作法,因為它可避免對文字和類別之間的關聯性進行任何強式假設,並且只會使用單字的分佈,以數學方式建立主題的模型。
本檔將討論這項理論,可從 PDF 下載: 潛在的狄氏配置: Blei、Ng 和約旦
此課程模組中的實作為 Vowpal Wabbit 程式庫 (第8版的 LDA) 。
如需詳細資訊,請參閱技術說明一節。
如何設定隱含狄利克雷分佈
此模組需要包含文字資料行的資料集(未經處理或預先處理)。
將 潛在的狄氏配置 模組新增至您的實驗。
提供包含一或多個文字資料行的資料集,作為模組的輸入。
針對 [ 目標資料行],選擇一個或多個包含要分析之文字的資料行。
您可以選擇多個資料行,但這些資料行必須是字串資料類型。
一般來說,因為 LDA 會從文字建立大型的特徵矩陣,所以您通常會分析單一文字資料行。
若要建立模型的主題數目,請輸入介於1到1000之間的整數,指出您想要從輸入文字中衍生的類別或主題數目。
預設會建立 5 個主題。
針對 N 元語法,請指定雜湊處理期間可產生的 N 元語法長度上限。
預設值為 2,表示會產生雙字母組和單字母組。
選取 [ 標準化 ] 選項,將輸出值轉換為機率。 因此,輸出和特徵資料集中的值,不會以整數表示轉換的值,而是轉換如下:
資料集的值會以機率表示:
P(topic|document)
。特徵主題矩陣中的值會以機率表示:
P(word|topic)
。
選取 [ 顯示所有選項] 選項,然後將它設定為 [TRUE],如果您想要查看並設定其他的 advanced 參數。
這些參數專屬於 LDA 的 Vowpal Wabbit。 在 Vowpal Wabbit online 以及官方 Vowpal Wabbit Wiki中,有一些很好的 LDA 教學課程。
請參閱此範例以取得8版中的範例,並在 Azure ML 中使用 VW。
Rho 參數。 為主題分佈的稀疏性提供事前機率。 對應至 VW 的
lda_rho
參數。 如果您預期單字的分佈是平面的,則會使用值1。也就是說,所有字組都是假設為 equiprobable。 如果您認為大部分的單字是稀疏的,您可能會將它設定為較低的值。Alpha 參數。 針對每個文件主題權重的稀疏性指定事前機率。 對應至 VW 的
lda_alpha
參數。估計的文件數目。 輸入數位,代表將處理之檔 (資料) 列數目的最佳預估。 這可讓模組配置足夠大小的雜湊表。 對應到 Vowpal Wabbit 中的
lda_D
參數。批次的大小。 輸入數位,表示傳送至 Vowpal Wabbit 的每個文字批次中要包含多少資料列。 對應到 Vowpal Wabbit 中的
batch_sz
參數。學習更新排程中所使用的反覆運算初始值。 指定學習速率的起始值。 對應到 Vowpal Wabbit 中的
initial_t
參數。更新期間套用至反覆運算的功率。 指出線上更新期間套用至反覆運算計數的電源等級。 對應到 Vowpal Wabbit 中的
power_t
參數。資料的處理次數。 指定演算法將對資料進行迴圈的次數。 對應到 Vowpal Wabbit 中的
epoch_size
參數。
如果您想要在初始階段中建立 n 語法清單,然後再分類文字,請選取 [ LDA 之前的 ngrams的 Ngrams 或組建字典的建立字典] 選項。
如果您事先建立初始字典,則稍後可以在查看模型時使用字典。 能夠將結果對應至文字 (而不是數值索引),通常比較容易轉譯。 不過,儲存字典需要較長的時間,並會使用額外的儲存體。
在 [ ngram 字典的大小上限] 中,輸入可在 n 語法字典中建立的資料列總數。
此選項可有效控制字典的大小。 不過,如果輸入中的 ngrams 數目超過此大小,可能會發生衝突。
執行實驗。 LDA 模組會使用貝氏機率分類定理來判斷哪些主題可能與個別單字相關聯。 單字並非專門與任何主題或群組相關聯;相反地,每個 n 元都有一個與任何探索到的類別相關聯的學習可能性。
結果
此模組有兩個輸出:
已轉換的資料集:包含輸入文字和指定數目的已探索類別,以及每個類別的每個文字範例的分數。
功能主題矩陣:最左邊的資料行包含已解壓縮的文字功能,而且每個類別都有一個資料行,其中包含該類別中該功能的分數。
如需詳細資訊,請參閱 LDA 結果的範例。
LDA 轉換
此模組也會輸出將 LDA 套用至資料集的 轉換 ,作為 ITransform 介面。
您可以儲存此轉換,並將其重複用於其他資料集。 如果您已經針對大型主體進行定型,而且想要重複使用係數或類別,這可能會很有用。
精簡 LDA 模型或結果
一般來說,您無法建立符合所有需求的單一 LDA 模型,甚至是針對一個工作所設計的模型,可能需要多個反復專案來改善精確度。 建議您嘗試所有這些方法來改善您的模型:
- 變更模型參數
- 透過視覺效果了解結果
- 取得主題專家的意見反應,以確定產生的主題是否有用。
質化量值也有助於評估結果。 若要評估主題模型化結果,請考慮下列項目:
- 精確度-是否類似專案?
- 多樣性-當商務問題需要時,模型是否可以區分類似專案?
- 擴充性-是否適用于各式各樣的文字類別,或僅適用于較窄的目標網域?
以 LDA 為基礎的模型精確度通常可以藉由使用自然語言處理來清除、摘要、簡化或分類文字來改善。 例如,下列技術(機器學習中全部支援)可以改善分類的精確度:
停用字詞移除
大小寫正規化
詞形歸併還原或詞幹分析
具名實體辨識
在 Studio (傳統) 中,您也可以使用 R 或 Python 程式庫進行文字處理: 執行 r 腳本、 執行 Python 腳本
範例
如需文字分析的範例,請參閱 Azure AI 資源庫中的這些實驗:
- 執行 Python 腳本:在 python 中使用自然語言處理來清除和轉換文字。
如需詳細資訊和以客戶審核文字為依據的範例,請參閱 瞭解 LDA 結果。
LDA 結果的範例
為了說明潛在的狄氏配置模組如何運作,下列範例會將具有預設設定的 LDA 套用至機器學習 Studio (傳統) 中提供的書籍評論資料集。
來源資料集
資料集包含評等資料行,以及使用者提供的完整註解文字。
下表僅顯示幾個代表性範例。
text |
---|
這本書有其好點。 如果有的話,它可協助您從監督員中放入您想要的文字 .。。 |
我承認,這本書尚未完成。 當我遇到無法休眠問題時,friend 建議您使用 .。。 |
寫得不太好,我試著閱讀這本書,但發現 turgid,寫得很難,因為我把它放在挫折。 ... |
由於借用了狗-eared 的複本,並在幾年前傳遞,所以我無法親自參與這本書,這會成為短期的崇拜狂熱我的最愛 |
這本書的繪圖很有趣,而且可能是不錯的書。 可惜的是,它並不是。 我的主要問題是 .。。 |
在處理期間, 潛在的狄氏配置 模組會根據您指定的參數來清除及分析文字。 例如,它可以自動 token 化文字和移除標點符號,同時尋找每個主題的文字功能。
LDA 轉換的資料集
下表包含以書籍審核範例為基礎的已 轉換 資料集。 輸出包含輸入文字,以及指定數目的已探索類別,以及每個類別的分數。
電影名稱 | 主題1 | 主題2 | 主題3 | 主題4 | 主題5 |
---|---|---|---|---|---|
這本書有其好點 | 0.001652892 | 0.001652892 | 0.001652892 | 0.001652892 | 0.9933884 |
friend 建議您使用它 | 0.00198019 | 0.001980198 | 0.9920791 | 0.001980198 | 0.001980198 |
已嘗試閱讀本書 | 0.002469135 | 0.002469135 | 0.9901233 | 0.002469135 | 0.002469135 |
從 friend 借用 | 0.9901232 | 0.002469135 | 0.002469135 | 0.002469135 | 0.002469135 |
這本書的繪圖很有趣 | 0.001652892 | 0.001652892 | 0.9933884 | 0.001652892 | 0.001652892 |
在此範例中,我們使用預設值5來建立 模型的主題數目。 因此,LDA 模組會建立五個類別,我們可以假設這些類別大約會與原始的五調整分級系統相對應。
此課程模組也會針對代表主題的五個類別,將分數指派給每個專案。 分數表示資料列應指派給特定類別的機率。
功能主題矩陣
模組的第二個輸出是 功能主題矩陣。 這是表格式資料集,其中包含 特徵化文字、和資料行 功能,以及每個類別的分數,位於其餘的資料行 主題 1, 主題 2,.。。主題 N。分數代表係數。
功能 | 主題1 | 主題2 | 主題3 | 主題4 | 主題5 |
---|---|---|---|---|---|
有趣 | 0.0240282071983144 | 0.0354678954779375 | 0.363051866576914 | 0.0276637824315893 | 0.660663576149515 |
was | 0.0171478729532397 | 0.0823969031108669 | 0.00452966877950789 | 0.0408714510319233 | 0.025077322689733 |
從 | 0.0148224220349217 | 0.0505086981492109 | 0.00434423322461094 | 0.0273389126293824 | 0.0171484355106826 |
plot | 0.0227415889348212 | 0.0408709456489325 | 0.182791041345191 | 0.086937090812819 | 1 0.0169680136708971 |
讀取 | 0.0227415889348212 | 0.0408709456489325 | 0.182791041345191 | 0.0869370908128191 | 0.0169680136708971 |
試 | 0.0269724979147211 | 0.039026263551767 | 0.00443749106785087 | 0.0628829816088284 | 0.0235340728818033 |
我 | 0.0262656945140134 | 0.0366941302751921 | 0.00656837975179138 | 0.0329214576160066 | 0.0214121851106808 |
to | 0.0141026103224462 | 0.043359976919215 | 0.00388640531859447 | 0.0305925953440055 | 0.0228993750526364 |
it | 0.0264490547105951 | 0.0356674440311847 | 0.00541759897864314 | 0.0314539386250293 | 0.0140606468587681 |
friend | 0.0135971322960941 | 0.0346118171467234 | 0.00434999437350706 | 0.0666507321888536 | 0.018156863779311 |
點 | 0.0227415889348212 | 0.0396233855719081 | 0.00404663601474112 | 0.0381156510019025 | 0.0337788009496797 |
good | 0.651813073836783 | 0.0598646397444108 | 0.00446809691985617 | 0.0358975694646062 | 0.0138989124411206 |
its | 0.0185385588647078 | 0.144253986783184 | 0.00408876416453866 | 0.0583049240441475 | 0.015442805566858 |
of | 0.0171416780245647 | 0.0559361180418586 | 0.0100633904544953 | 0.087093930106723 | 0.0182573833869842 |
借 | 0.0171416780245647 | 0.0559361180418586 | 0.0100633904544953 | 0.087093930106723 | 0.0182573833869842 |
has | 0.0171416780245647 | 0.0559361180418586 | 0.0100633904544953 | 0.087093930106723 | 0.0182573833869842 |
預訂 | 0.0143157047920681 | 0.069145948535052 | 0.184036340170983 | 0.0548757337823903 | 0.0156837976985903 |
建議使用 | 0.0161486848419689 | 0.0399143326399534 | 0.00550113530229642 | 0.028637149142764 | 0.0147675139039372 |
this | 0.0161486848419689 | 0.0399143326399534 | 0.00550113530229642 | 0.028637149142764 | 0.0147675139039372 |
技術說明
本節包含實作詳細資料、提示和常見問題集的解答。
實作詳細資料
根據預設,已轉換資料集和特徵主題矩陣的輸出分佈會正規化為機率。
已轉換的資料集會正規化為文件指定主題的條件機率。 在此案例中,每個資料列的加總會等於 1。
特徵主題矩陣會正規化為字組指定主題的條件機率。 在此案例中,每個資料行的加總會等於 1。
提示
模組有時可能會傳回空白主題,這最常由演算法的虛擬隨機初始化所造成。 如果發生這種情況,您可以嘗試變更相關的參數,例如 N 語法字典的大小上限,或用於特徵雜湊的位數目。
LDA 和主題模型化
潛在的狄氏配置 (LDA) 通常用於以 內容為基礎的主題模型,基本上是指從非機密文字學習類別目錄。 在以內容為基礎的主題模型化中,主題是字組的分佈。
例如,假設您已提供客戶評論的主體,其中包含許多產品。 許多客戶在一段時間內提交的評論文字會包含許多條款,其中有些是用於多個主題。
LDA 程式所識別的 主題 可能代表個別產品 a 的評論,或可能代表一組產品評論。 對 LDA 而言,主題本身就是一組字組在一段時間的機率分佈。
條款對任何一項產品來說很少,但可參考其他產品,或適用于所有 ( 「絕佳」、「操作」 ) 的一般術語。 其他字詞可能是非搜尋字。 不過,請務必瞭解,LDA 方法不會據稱來捕捉 universe 中的所有單字,或瞭解單字如何相關,除了共同出現的機率之外。 它只能群組目標網域中使用的單字。
計算過詞彙索引之後,會使用以距離為基礎的相似性量值來比較個別的文字資料列,以判斷兩段文字是否類似。 例如,您可能會發現產品有多個明顯相互關聯的名稱。 或者,您可能會發現強烈的負面字詞通常與特定產品相關聯。 您可以使用相似性量值來識別相關的字詞,以及建立建議。
預期的輸入
名稱 | 類型 | 說明 |
---|---|---|
資料集 | 資料表 | 輸入資料集 |
模組參數
名稱 | 類型 | 範圍 | 選擇性 | 預設 | 描述 |
---|---|---|---|---|---|
雜湊位元數 | 整數 | [1;31] | 當未選取 [顯示所有選項] 核取方塊時套用 | 12 | 用於特徵雜湊的位元組數目 |
目標資料行 | 資料行選取 | 必要 | StringFeature | 目標資料行名稱或索引 | |
模型的主題數目 | 整數 | [1;1000] | 必要 | 5 | 針對 N 個主題建立檔散發的模型 |
N 字母組 | 整數 | [1;10] | 必要 | 2 | 雜湊期間產生的 N 字母順序 |
正規化 | Boolean | 必要 | true | 將輸出正規化為機率。 已轉換的資料集將會是 P(topic|document),而特徵主題矩陣將會是 P(word|topic)。 | |
顯示所有選項 | Boolean | True 或 False | 必要 | False | 提供 Vowpal Wabbit online LDA 專用的其他參數 |
Rho 參數 | Float | [0.00001;1.0] | 當選取 [ 顯示所有選項 ] 核取方塊時套用 | 0.01 | Rho 參數 |
Alpha 參數 | Float | [0.00001;1.0] | 當選取 [ 顯示所有選項 ] 核取方塊時套用 | 0.01 | Alpha 參數 |
估計的文件數目 | 整數 | [1;int.MaxValue] | 當選取 [ 顯示所有選項 ] 核取方塊時套用 | 1000 | 估計 (對應至 lda_D 參數的檔數目) |
批次的大小 | 整數 | [1;1024] | 當選取 [ 顯示所有選項 ] 核取方塊時套用 | 32 | 批次的大小 |
學習率更新排程中所使用的反覆運算初始值 | 整數 | [0;int.MaxValue] | 當選取 [ 顯示所有選項 ] 核取方塊時套用 | 0 | 學習速率更新排程中使用的反復專案計數初始值 (對應至 initial_t 參數) |
更新期間套用至反覆運算的功率 | Float | [0.0;1.0] | 當選取 [ 顯示所有選項 ] 核取方塊時套用 | 0.5 | 在線上更新期間套用至反覆運算計數的電源 (對應至 power_t 參數) |
反覆定型的次數 | 整數 | [1;1024] | 當選取 [ 顯示所有選項 ] 核取方塊時套用 | 25 | 反覆定型的次數 |
建立 N 元語法字典 | Boolean | True 或 False | 當未選取 [顯示所有選項] 核取方塊時套用 | True | 在計算 LDA 之前,先建立 N 元語法的字典。 適用于模型檢查和轉譯 |
用於特徵雜湊的位元組數目 | 整數 | [1;31] | 適用于 ngrams 的選項 建立字典 為 False 時 | 12 | 在特徵雜湊期間要使用的位元組數目 |
N 元語法字典的大小上限 | 整數 | [1;int.MaxValue] | 當選項 [建構 N 元語法字典] 為 True 時套用 | 20000 | N 元語法字典的大小上限。 如果輸入中的權杖數目超過此大小,可能會發生衝突 |
在 LDA 之前建立 N 元語法字典 | Boolean | True 或 False | 當選取 [ 顯示所有選項 ] 核取方塊時套用 | True | 在 LDA 之前,先建立 N 元語法的字典。 適用于模型檢查和轉譯 |
字典中的 N 元語法數目上限 | 整數 | [1;int.MaxValue] | 適用于 ngrams 的選項 建立字典 為 True,且已選取 [ 顯示所有選項 ] 核取方塊時 | 20000 | 字典的大小上限。 如果輸入中的權杖數目超過此大小,可能會發生衝突 |
輸出
名稱 | 類型 | 說明 |
---|---|---|
已轉換的資料集 | 資料表 | 輸出資料集 |
功能主題矩陣 | 資料表 | LDA 所產生的功能主題矩陣 |
LDA 轉換 | ITransform 介面 | 將 LDA 套用至資料集的轉換 |
例外狀況
例外狀況 | 描述 |
---|---|
錯誤 0002 | 如果找不到資料集的一或多個指定的資料行,就會發生例外狀況。 |
錯誤 0003 | 如果一或多個輸入為 Null 或空白,就會發生例外狀況。 |
錯誤 0004 | 如果參數小於或等於特定值,就會發生例外狀況。 |
錯誤 0017 | 如果一或多個指定的資料行具有目前模組不支援的類型,就會發生例外狀況。 |
如需 Studio (傳統) 模組特定的錯誤清單,請參閱機器學習錯誤碼。
如需 API 例外狀況的清單,請參閱機器學習 REST API 錯誤碼。
另請參閱
文字分析
特性雜湊
具名實體辨識
計分 Vowpal Wabbit 7-4 模型
定型 Vowpal Wabbit 7-4 模型
定型 Vowpal Wabbit 8 模型