LatentDirichletAllocationEstimator 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
LDA 轉換實作了 LightLDA,這是潛在狄利克雷分配的先進實作。
public sealed class LatentDirichletAllocationEstimator : Microsoft.ML.IEstimator<Microsoft.ML.Transforms.Text.LatentDirichletAllocationTransformer>
type LatentDirichletAllocationEstimator = class
interface IEstimator<LatentDirichletAllocationTransformer>
Public NotInheritable Class LatentDirichletAllocationEstimator
Implements IEstimator(Of LatentDirichletAllocationTransformer)
- 繼承
-
LatentDirichletAllocationEstimator
- 實作
備註
估算器特性
| 這個估計器需要查看資料來訓練參數嗎? | Yes |
| 輸入欄位資料型別 | Single 向量 |
| 輸出欄位資料型態 | Single 向量 |
| 可匯出至 ONNX | No |
潛在狄利克雷分配是一種知名的 主題建模 演算法,能從文本資料推斷語意結構,最終幫助回答「這份文件到底是什麼?」這個問題。 它可用來將任何文本欄位作為低維主題向量來特徵化。 LightLDA 是 LDA 的極為高效實作,結合了多種最佳化技術。 透過 LDA 轉換,ML.NET 使用者可以訓練主題模型,在單一機器上數小時內產生 100 萬個主題、100 萬字詞彙,涵蓋 10 億個標記文件集(通常此規模的 LDA 需耗時數天且需大型叢集)。 最重要的創新是超高效率的$O(1)$。 Metropolis-Hastings 取樣演算法的執行成本不受模型大小影響,使其收斂速度比其他 Gibbs 取樣器快近一個數量級。
在 ML.NET 管線中,這個估計器需要以某種預處理的輸出作為輸入。 一個典型的文字管線需要文字正規化、分詞化,並產生 n-gram 以供 LDA 估計器使用。 請參閱「參見」部分的範例用法建議。
如果我們有以下三個文字範例作為資料點,並使用 LDA 轉換,主題數設為 3,結果就會顯示在下表中。 範例文件:
- 我喜歡吃香蕉。
- 我每天都吃香蕉。
- 地球日自1970年首次慶祝,現已涵蓋超過193個國家/地區的活動,並由地球日網絡在全球範圍內協調。
注意第一排和第二排的數值與第三排的相似性,並觀察這些數值如何反映這兩個(小)文本體之間的相似性。
| 主題1 | 主題2 | 主題 3 |
|---|---|---|
| 0.5714 | 0.0000 | 0.4286 |
| 0.5714 | 0.0000 | 0.4286 |
| 0.2400 | 0.3200 | 0.4400 |
如需更多技術細節,可參考以下論文。
請參考「參見」區塊,裡面有使用範例的連結。
方法
| 名稱 | Description |
|---|---|
| Fit(IDataView) | |
| GetOutputSchema(SchemaShape) |
回傳 SchemaShape 由變壓器產生的結構結構。 用於結構傳播與管線驗證。 |
擴充方法
| 名稱 | Description |
|---|---|
| AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
在估計鏈中附加一個「快取檢查點」。 這將確保下游估計器能針對快取資料進行訓練。 在訓練師接受多次資料通行前設置快取檢查點會很有幫助。 |
| WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
給定一個估計器,回傳一個包裹物件,該物件會呼叫一次 Fit(IDataView) 代理。 估計器通常回傳擬合的資訊很重要,因此該 Fit(IDataView) 方法回傳一個特定型別的物件,而非一般 ITransformer的 。 然而,同時, IEstimator<TTransformer> 通常會被組成包含許多物件的管線,因此我們可能需要建立一條估計鏈,將 EstimatorChain<TLastTransformer> 我們想要取得變壓器的估計器埋藏在這條鏈的某處。 在這種情況下,我們可以透過此方法附加一個代理,當 fit 被呼叫時會被呼叫。 |