-perplexity介绍
-LDA确定主题的数目
perplexity
在对文本的主题特征进行研究时,我们往往要指定LDA生成的主题的数目,而一般的解决方法是使用perplexity来计算,原理如下(概率分布perplexity):
其中,M是测试语料库的大小,Nd是第d篇文本大小(即单词个数)
其中z是主题,w是文档,gamma是训练集学出来的文本-主题分布
所以perplexity的上半部分就是生成整个文档的似然估计(表示训练集训练出的参数的生成能力)的负值,由于概率取值范围为【0,1】,按照对数函数的定义,分子值是一个大数,而分母是整个测试集的单词数目。也就是说模型生成能力越强,perplexity值越小。
LDA确定主题的数目
首先看一下原始数据格式:
title字段为用户名,text为用户的帖子
使用sklearn的函数,分训练集和测试集,然后在训练集上生成gamma和主题用来计算测试集的困惑度。
### 万年不变的文本预处理
def docs_preprocessor(docs):
tokenizer = RegexpTokenizer('\w+')
for idx in range(len(docs)):
docs[idx] = docs[idx].lower() # Convert to lowercase.
docs[idx]