主题模型用于在一系列文档中发现抽象主题(topic)的一种统计模型,在机器学习PAI平台,您可以通过给PLDA组件设置topic参数值,从而让每篇文档抽象出不同主题。

LDA(Latent Dirichlet allocation)是一种主题模型,它可以按照概率分布的形式给出文档集中每篇文档的主题。LDA也是一种无监督学习算法,在训练时您无需手工标注的训练集,仅需要在文档集中指定主题的数量K即可(K即为PLDA参数topic)。

LDA首先由David M. Blei、Andrew Y. Ng和Michael I. Jordan于2003年提出,在文本挖掘领域应用于文本主题识别、文本分类和文本相似度计算等方面。

配置组件

您可以通过以下任意一种方式,配置PLDA参数:
  • 可视化方式
    表 1. 参数说明
    页签 参数 参数描述
    字段设置 选择特征列 选择参与训练的特征列。
    参数设置 主题个数 设置LDA的输出的主题个数。
    Alpha P(z/d) 的先验狄利克雷分布的参数。
    beta P(w/z) 的先验狄利克雷分布的参数。
    burn In 迭代次数 Burn In 迭代次数,必须小于总迭代次数,默认值为100。
    总迭代次数 正整数,非必选,默认值为150。
  • PAI命令方式
    pai -name PLDA
        -project algo_public
        -DinputTableName=lda_input
        –DtopicNum=10
        -topicWordTableName=lda_output;
    参数名称 是否必选 描述 默认值
    inputTableName 输入表的名称。
    inputTablePartitions 输入表中,参与训练的分区。系统支持以下格式:
    • Partition_name=value
    • name1=value1/name2=value2:多级分区
    说明 指定多个分区时,分区之间使用英文逗号(,)分隔。
    输入表的所有分区
    selectedColNames 输入表中用于LDA的列名。 输入表中所有的列名
    topicNum Topic的数量,取值范围为[2, 500]
    kvDelimiter Key和Value间的分隔符。取值:
    • 空格
    • 逗号
    • 冒号
    冒号
    itemDelimiter Key和Key间的分隔符。取值:
    • 空格
    • 逗号
    • 冒号
    空格
    alpha P(z/d)的先验狄利克雷分布的参数。取值为(0, ∞) 0.1
    beta P(w/z)的先验狄利克雷分布的参数。取值为(0, ∞) 0.01
    topicWordTableName topic-word频率贡献表。
    pwzTableName P(w/z)输出表。 不输出P(w/z)
    pzwTableName P(z/w)输出表。 不输出P(z/w)
    pdzTableName P(d/z)输出表。 不输出P(d/z)
    pzdTableName P(z/d)输出表。 不输出P(z/d)
    pzTableName P(z)输出表。 不输出P(z)
    burnInIterations Burn In迭代次数,正整数。且取值必须小于totalIterations 100
    totalIterations 迭代次数,正整数。
    说明 z是主题,w是词,d是文档。
    150
    enableSparse 是否是kv输入,选择kv输入或分词结果。 是kv输入
    coreNum 与参数memSizePerCore配对使用,取值为正整数。系统会根据输入数据量计算所起instance的数量。 默认自动计算
    memSizePerCore 单个节点内存大小,单位MB。正整数,范围为(1024, 64*1024) 默认自动计算

输入和输出设置

  • 输入

    数据必须为稀疏矩阵的格式。可以通过三元组转KV组件进行转换。

    输入格式如图 1所示。
    图 1. 输入格式
    • 第一列:docid。
    • 第二列:单词及词频的kv数据。
  • 输出

    输出依次为:topic-word频率贡献表、单词|主题输出表、主题|单词输出表、文档|主题输出表、主题|文档输出表、主题输出表。

    topic-word频率贡献表的输出格式如图 2所示。
    图 2. 输出格式