主题模型用于在一系列文档中发现抽象主题(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组件参数。
方式一:可视化方式
在Designer工作流页面配置组件参数。
表 1. 参数说明
页签 | 参数 | 参数描述 |
字段设置 | 选择特征列 | 选择参与训练的特征列。 |
参数设置 | 主题个数 | 设置LDA的输出的主题个数。 |
Alpha |
| |
beta |
| |
burn In 迭代次数 | Burn In 迭代次数,必须小于总迭代次数,默认值为100。 | |
总迭代次数 | 正整数,非必选,默认值为150。 |
方式二:PAI命令方式
使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本。
pai -name PLDA
-project algo_public
-DinputTableName=lda_input
-DtopicNum=10
-topicWordTableName=lda_output;
参数名称 | 是否必选 | 描述 | 类型 | 默认值 |
参数名称 | 是否必选 | 描述 | 类型 | 默认值 |
inputTableName | 是 | 输入表的名称。 | STRING | 无 |
inputTablePartitions | 否 | 输入表中,参与训练的分区。系统支持以下格式:
指定多个分区时,分区之间使用英文逗号(,)分隔。 | STRING | 输入表的所有分区 |
selectedColNames | 否 | 输入表中用于LDA的列名。 | STRING | 输入表中所有的列名 |
topicNum | 是 | Topic的数量,取值范围为[2, 500]。 | 正整数 | 无 |
kvDelimiter | 否 | Key和Value间的分隔符。取值:
| STRING | 英文冒号(:) |
itemDelimiter | 否 | Key和Key间的分隔符。取值:
| STRING | 空格 |
alpha | 否 |
| FLOAT | 0.1 |
beta | 否 |
| FLOAT | 0.01 |
topicWordTableName | 是 | topic-word频率贡献表。 | STRING | 无 |
pwzTableName | 否 |
| STRING | 无,即不输出 |
pzwTableName | 否 |
| STRING | 无,即不输出 |
pdzTableName | 否 |
| STRING | 无,即不输出 |
pzdTableName | 否 |
| STRING | 无,即不输出 |
pzTableName | 否 |
| STRING | 无,即不输出 |
burnInIterations | 否 | Burn In迭代次数,且取值必须小于totalIterations。 | 正整数 | 100 |
totalIterations | 否 | 迭代次数。 z是主题,w是词,d是文档。 | 正整数 | 150 |
enableSparse | 否 | 是否是kv输入,选择kv输入或分词结果。取值范围如下:
| BOOL | true |
coreNum | 否 | 与参数memSizePerCore配对使用,默认系统会根据输入数据量计算所起Instance的数量,即取值为-1。 | 正整数 | -1 |
memSizePerCore | 否 | 单个节点内存大小,单位MB。范围为[1024, 64*1024]。默认系统自动计算每个节点的内存大小,即取值为-1。 | 正整数 | -1 |
输入和输出设置
输入
数据必须为稀疏矩阵的格式。可以通过三元组转KV组件进行转换。
输出:
输出依次为:topic-word频率贡献表、单词|主题输出表、主题|单词输出表、文档|主题输出表、主题|文档输出表、主题输出表。
topic-word频率贡献表的输出格式如输出格式所示。
图 2. 输出格式
- 本页导读 (1)
- 组件配置
- 方式一:可视化方式
- 方式二:PAI命令方式
- 输入和输出设置