使用来自 LDA 的主题建模信息作为特征,通过 SVM 执行文本分类
Posted
技术标签:
【中文标题】使用来自 LDA 的主题建模信息作为特征,通过 SVM 执行文本分类【英文标题】:Use topic modeling information from LDA as features to perform text classification through SVM 【发布时间】:2017-04-21 17:19:31 【问题描述】:我想使用主题建模信息作为输入到 svm 分类器的特征来执行文本分类。所以我想知道如何通过对数据集的训练和测试分区执行 LDA 来生成主题建模特征,因为数据集的两个分区的语料库发生了变化?
我是否做出了错误的假设?
您能否提供一个使用 scikit learn 的示例?
【问题讨论】:
【参考方案1】:你的假设是正确的。您所做的是根据您的训练数据训练 LDA,然后根据该训练模型转换训练和测试数据。
所以你会有这样的东西:
from sklearn.decomposition import LatentDirichletAllocation as LDA
lda = LDA(n_topics=10,...)
lda.fit(training_data)
training_features = lda.transform(training_data)
testing_features = lda.transform(testing_data)
如果我是你,如果你的弓特征稀疏,我会使用 numpy.hstack 或 scipy.hstack 将 LDA 特征与 Bag of words 特征连接起来。
【讨论】:
我会对人们对 SVM 等 LDA 功能的体验感兴趣。我做了一些尝试,发现它们对手头的问题或多或少没用 - 性能并没有仅仅提高/n-gram 功能(如果我记得的话,我使用 word 和 2-grams)。如果没有 word/n-gram 功能,性能真的很差。 在当前版本中尝试使用n_components
,而不是n_topics
。以上是关于使用来自 LDA 的主题建模信息作为特征,通过 SVM 执行文本分类的主要内容,如果未能解决你的问题,请参考以下文章
在PYTHON中使用TMTOOLKIT进行主题模型LDA评估
主题建模:LDA ( Latent Dirichlet Allocation)
机器学习入门-文本特征-使用LDA主题模型构造标签 1.LatentDirichletAllocation(LDA用于构建主题模型) 2.LDA.components(输出各个词向量的权重值)(代码