隱含狄利克雷分佈

使用 Vowpal Wabbit 程式庫執行 VW LDA

類別: 文字分析

注意

適用于 : Machine Learning Studio (傳統)

此內容僅適用于 Studio (傳統) 。 Azure Machine Learning 設計工具中已新增類似的拖放模組。 若要深入瞭解 這兩個版本,請參閱這篇文章

模組概觀

本文說明如何使用 Azure Machine Learning Studio (傳統) 中的 潛在狄氏配置 模組,將非機密文字分組為許多類別。 潛在的狄氏配置 (LDA) 通常用於自然語言處理 (NLP) 以尋找類似的文字。 另一個常見的詞彙是 主題模型 化。

此課程模組會使用一個文字資料行,並產生下列輸出:

  • 來源文字,以及每個類別的分數

  • 功能矩陣,其中包含每個類別的已解壓縮詞彙和係數

  • 轉換,您可以儲存並重新套用至做為輸入使用的新文字

因為此課程模組使用 Vowpal Wabbit 程式庫,所以非常快速。 如需 Vowpal Wabbit 的詳細資訊,請參閱 GitHub 存放庫 ,其中包含教學課程和演算法的說明。

深入瞭解潛在的狄氏配置 (LDA)

一般來說,LDA 並非每個 se 的分類方法,而是使用有生產力方法。 這表示您不需要提供已知的類別標籤,然後推斷模式。 相反地,此演算法會產生用來識別主題群組的概率模型。 您可以使用概率模型,將現有的定型案例或您提供給模型的新案例分類為輸入。

有生產力模型是最好的作法,因為它可避免對文字和類別之間的關聯性進行任何強式假設,並且只會使用單字的分佈,以數學方式建立主題的模型。

如需詳細資訊,請參閱 技術附注 一節。

如何設定潛在的狄氏配置

此模組需要包含文字資料行的資料集(未經處理或預先處理)。

  1. 潛在的狄氏配置 模組新增至您的實驗。

  2. 提供包含一或多個文字資料行的資料集,作為模組的輸入。

  3. 針對 [ 目標資料行],選擇一個或多個包含要分析之文字的資料行。

    您可以選擇多個資料行,但這些資料行必須是字串資料類型。

    一般來說,因為 LDA 會從文字建立大型的特徵矩陣,所以您通常會分析單一文字資料行。

  4. 若要建立模型的主題數目,請輸入介於1到1000之間的整數,指出您想要從輸入文字中衍生的類別或主題數目。

    預設會建立5個主題。

  5. 若為 N 字母,請指定在雜湊期間產生的 n 字母長度上限。

    預設值為2,表示會產生雙字母組和 unigrams。

  6. 選取 [ 標準化 ] 選項,將輸出值轉換為機率。 因此,輸出和特徵資料集中的值,不會以整數表示轉換的值,而是轉換如下:

    • 資料集中的值會以機率表示 P(topic|document)

    • 功能主題矩陣中的值會以機率表示 P(word|topic)

  7. 選取 [ 顯示所有選項] 選項,然後將它設定為 [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 參數。

    • 估計的檔數目。 輸入數位,代表將處理之檔 (資料) 列數目的最佳預估。 這可讓模組配置足夠大小的雜湊表。 對應到 lda_D Vowpal Wabbit 中的參數。

    • 批次的大小。 輸入數位,表示傳送至 Vowpal Wabbit 的每個文字批次中要包含多少資料列。 對應到 batch_sz Vowpal Wabbit 中的參數。

    • 學習更新排程中所使用之反復專案的初始值。 指定學習速率的起始值。 對應到 initial_t Vowpal Wabbit 中的參數。

    • 在更新期間套用至反覆運算的電源。 指出線上更新期間套用至反覆運算計數的電源等級。 對應到 power_t Vowpal Wabbit 中的參數。

    • 資料的傳遞數目。 指定演算法將對資料進行迴圈的次數。 對應到 epoch_size Vowpal Wabbit 中的參數。

  8. 如果您想要在初始階段中建立 n 語法清單,然後再分類文字,請選取 [ LDA 之前的 ngrams 的 Ngrams 或組建字典的 建立字典] 選項。

    如果您事先建立初始字典,您稍後可以在查看模型時使用字典。 能夠將結果對應至文字,而不是數值索引,通常比較容易轉譯。 不過,儲存字典需要較長的時間,並使用額外的儲存體。

  9. 在 [ ngram 字典的大小上限] 中,輸入可在 n 語法字典中建立的資料列總數。

    此選項適用于控制字典的大小。 不過,如果輸入中的 ngrams 數目超過此大小,可能會發生衝突。

  10. 執行實驗。 LDA 模組會使用貝氏機率分類定理來判斷哪些主題可能與個別單字相關聯。 單字並非專門與任何主題或群組相關聯;相反地,每個 n 元都有一個與任何探索到的類別相關聯的學習可能性。

結果

此模組有兩個輸出:

  • 轉換的資料集:包含輸入文字和指定數目的已探索類別,以及每個類別的每個文字範例的分數。

  • 功能主題矩陣:最左邊的資料行包含已解壓縮的文字功能,而且每個類別都有一個資料行,其中包含該類別中該功能的分數。

如需詳細資訊,請參閱 LDA 結果的範例

LDA 轉換

此模組也會輸出將 LDA 套用至資料集的 轉換 ,作為 ITransform 介面

您可以儲存此轉換,並將其重複用於其他資料集。 如果您已經針對大型主體進行定型,而且想要重複使用係數或類別,這可能會很有用。

精簡 LDA 模型或結果

一般來說,您無法建立符合所有需求的單一 LDA 模型,甚至是針對一個工作所設計的模型,可能需要多個反復專案來改善精確度。 建議您嘗試所有這些方法來改善您的模型:

  • 變更模型參數
  • 使用視覺效果來瞭解結果
  • 取得主題專家的意見反應,以確定產生的主題是否有用。

定性量值也有助於評估結果。 若要評估主題模型化結果,請考慮:

  • 精確度-是否類似專案?
  • 多樣性-當商務問題需要時,模型是否可以區分類似專案?
  • 擴充性-是否適用于各式各樣的文字類別,或僅適用于較窄的目標網域?

以 LDA 為基礎的模型精確度通常可以藉由使用自然語言處理來清除、摘要、簡化或分類文字來改善。 例如,Azure Machine Learning 中所有支援的下列技術都可以改善分類的精確度:

  • 停用字詞移除

  • 案例正規化

  • 詞形歸併還原或詞幹分析

  • 具名實體辨識

如需詳細資訊,請參閱前置處理 文字命名實體辨識。

在 Studio (傳統) 中,您也可以使用 R 或 Python 程式庫進行文字處理: 執行 r 腳本執行 Python 腳本

範例

如需文字分析的範例,請參閱 AZURE AI 資源庫中的這些實驗:

如需詳細資訊和以客戶審核文字為依據的範例,請參閱 瞭解 LDA 結果

LDA 結果的範例

為了說明潛在的 狄氏配置 模組如何運作,下列範例會將具有預設設定的 LDA 套用至 Azure Machine Learning 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 中的所有單字,或瞭解單字如何相關,除了共同出現的機率之外。 它只能群組目標網域中使用的單字。

計算過詞彙索引之後,會使用以距離為基礎的相似性量值來比較個別的文字資料列,以判斷兩段文字是否類似。 例如,您可能會發現產品有多個強關聯的名稱。 或者,您可能會發現強烈的負詞彙通常會與特定產品相關聯。 您可以使用相似性量值來識別相關的字詞,以及建立建議。

預期的輸入

名稱 類型 Description
資料集 資料表 輸入資料集

模組參數

名稱 類型 範圍 選擇性 預設 描述
雜湊位數目 整數 [1; 31] 選取 [顯示所有選項] 核取方塊時套用 12 用於特徵雜湊的位元組數目
目標資料行 資料行選取 必要 StringFeature 目標資料行名稱或索引
要建立模型的主題數目 整數 [1; 1000] 必要 5 針對 N 個主題建立檔散發的模型
N 字母組 整數 [1; 10] 必要 2 雜湊期間產生的 N 字母順序
規範 Boolean 必要 true 將輸出標準化為機率。 已轉換的資料集將會是第一個|檔) 的 (主題,而功能主題矩陣將會是 P (word|主題) 。
顯示所有選項 Boolean True 或 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。Timespan.maxvalue 當選取 [ 顯示所有選項 ] 核取方塊時套用 0 學習速率更新排程中使用的反復專案計數初始值 (對應至 initial_t 參數)
更新期間套用至反復專案的電源 Float [0.0; 1.0] 當選取 [ 顯示所有選項 ] 核取方塊時套用 0.5 在線上更新期間套用至反覆運算計數的電源 (對應至 power_t 參數)
反覆定型的次數 整數 [1; 1024] 當選取 [ 顯示所有選項 ] 核取方塊時套用 25 反覆定型的次數
Ngrams 的組建字典 Boolean True 或 False 選取 [顯示所有選項] 核取方塊時套用 在計算 LDA 之前,先建立 ngrams 的字典。 適用于模型檢查和轉譯
用於特徵雜湊的位元組數目 整數 [1; 31] 適用于 ngrams 的選項 建立字典 為 False 時 12 在特徵雜湊期間要使用的位元組數目
Ngram 字典的大小上限 整數 [1;int.MaxValue] 適用于 ngrams 的選項 建立字典 為 True 時 20000 Ngrams 字典的大小上限。 如果輸入中的權杖數目超過此大小,可能會發生衝突
LDA 之前的 ngrams 建立字典 Boolean True 或 False 當選取 [ 顯示所有選項 ] 核取方塊時套用 在 LDA 之前建立 ngrams 的字典。 適用于模型檢查和轉譯
字典中的 ngrams 數目上限 整數 [1;int.MaxValue] 適用于 ngrams 的選項 建立字典 為 True,且已選取 [ 顯示所有選項 ] 核取方塊時 20000 字典的大小上限。 如果輸入中的權杖數目超過此大小,可能會發生衝突

輸出

名稱 類型 Description
已轉換的資料集 資料表 輸出資料集
功能主題矩陣 資料表 LDA 所產生的功能主題矩陣
LDA 轉換 ITransform 介面 將 LDA 套用至資料集的轉換

例外狀況

例外狀況 描述
錯誤 0002 如果找不到資料集的一或多個指定的資料行,就會發生例外狀況。
錯誤 0003 如果一或多個輸入為 Null 或空白,就會發生例外狀況。
錯誤 0004 如果參數小於或等於特定值,就會發生例外狀況。
錯誤 0017 如果一或多個指定的資料行具有目前模組不支援的類型,就會發生例外狀況。

如需 Studio (傳統) 模組特定的錯誤清單,請參閱 機器學習錯誤碼

如需 API 例外狀況的清單,請參閱 機器學習 REST API 錯誤碼

另請參閱

文字分析
特徵雜湊
命名實體辨識
計分 Vowpal Wabbit 7-4 模型
定型 Vowpal Wabbit 7-4 模型
定型 Vowpal Wabbit 8 模型