LatentDirichletAllocationEstimator 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
LDA 转换实现 LightLDA,这是 Latent Dirichlet Allocation 的最先进的实现。
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
- 实现
注解
估算器特征
此估算器是否需要查看数据来训练其参数? | 是 |
输入列数据类型 | Single 的向量 |
输出列数据类型 | Single 的向量 |
可导出到 ONNX | 否 |
Latent Dirichlet Allocation 是一种众所周知 的主题建模 算法,它从文本数据推断语义结构,最终有助于回答有关“本文档的内容?”的问题。 它可用于将任何文本字段特征化为低维主题向量。 LightLDA 是 LDA 的极其高效的实现,其中包含许多优化技术。 通过 LDA 转换,ML.NET 用户可以训练主题模型,以在 10 亿个令牌文档中生成 100 万个单词词汇的 100 万个主题,通常 (一台计算机,LDA 在此规模上需要几天时间,并且需要大型群集) 。 最重要的创新是一个超高效的$O (1) 美元。 Metropolis-Hastings 采样算法,其运行成本与模型大小无关,因此可以比其他 Gibbs 采样器快近一个数量级。
在 ML.NET 管道中,此估算器需要一些预处理的输出作为其输入。 在文本上运行的典型管道需要文本规范化、标记化和生成 n 元语法才能提供给 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 |
有关更多技术详细信息,可查阅以下论文。
有关使用示例的链接,请查看“另请参阅”部分。
方法
Fit(IDataView) |
火车并返回一个 LatentDirichletAllocationTransformer。 |
GetOutputSchema(SchemaShape) |
返回 SchemaShape 由转换器生成的架构。 用于管道中的架构传播和验证。 |
扩展方法
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
将“缓存检查点”追加到估算器链。 这将确保针对缓存的数据训练下游估算器。 在执行多个数据传递的训练器之前,拥有缓存检查点会很有帮助。 |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
给定估算器后,返回将调用委托的 Fit(IDataView) 包装对象。 估算器通常必须返回有关拟合情况的信息,这就是为什么 Fit(IDataView) 该方法返回特定类型化对象的原因,而不仅仅是常规 ITransformer对象。 但是,同时, IEstimator<TTransformer> 通常形成为包含许多对象的管道,因此,我们可能需要通过 EstimatorChain<TLastTransformer> 估算器链生成一系列估算器,以便我们要获取转换器的估算器被埋在此链中的某个位置。 对于这种情况,我们可以通过此方法附加调用一次将调用的委托。 |