首页 > 编程知识 正文

lda算法优缺点,lda算法实现

时间:2023-05-03 17:54:58 阅读:190145 作者:4854

NLP中经常出现的主题是通过主题提取来理解大量文本。 无论您分析用户的在线评论,产品描述还是在搜索栏中输入文字,了解关键主题总是非常有用的。

了解LDA
直觉
LDA(Latent Dirichlet Allocation)是一种无监督的机器学习模型,该模型将文档作为输入,而将主题作为输出。 该模型还说明每个文档谈论每个主题的百分比。

主题表示为单词的加权列表。 主题示例如下所示:
花 0,2 |* 玫瑰* 0,15 | 植物* 0,09 |…

该模型有3个主要参数:
主题数
每个主题的字数
每个文档的主题数

如何成功实施LDA
LDA是一种复杂的算法,通常被认为难以微调和解释。确实,要获得LDA的相关结果,需要对它的工作原理有深入的了解。

数据清理
使用LDA时,您会遇到的常见问题是单词出现在多个主题中。解决此问题的一种方法是将这些单词添加到停用词列表中。

另一件事是复数形式和单数形式。我建议定形-如果您不能定形但主题不易理解,则建议定形。
删除其中带有数字的单词也会清除主题中的单词。如果您认为保留年份(2006,1981)对您的主题有意义,那么它们可能是有意义的。

过滤至少出现在3个(或更多)文档中的单词是删除与主题无关的稀有单词的好方法。

资料准备
包括二元和三元语法以掌握更多相关信息。
另一个经典的准备步骤是通过POS标记(POS:词性)仅使用名词和动词。

微调
主题数量:尝试几个主题,以了解哪个数量有意义。您实际上需要查看主题以了解您的模型是否有意义。至于K-Means,LDA收敛并且该模型在数学水平上有意义,但这并不意味着在人类水平上有意义。

清理数据:添加主题中过于频繁的停用词并重新运行模型是很常见的步骤。仅保留名词和动词,从文本中删除模板,反复测试不同的清洁方法将改善您的主题。准备在这里花点时间。

如果您不熟悉技术知识,那就不要理会这些。否则,您可以调整alpha和eta来调整主题。从“自动”开始,如果主题不相关,请尝试其他值。我建议使用较低的Alpha和Eta值,以使每个文档中的主题较少,而每个主题中的相关单词也较少。

增加通过次数以拥有更好的模型。 3或4是一个不错的数字,但是您可以提高。

评估结果
您的主题可以解释吗?
您的主题独特吗? (两个不同的主题使用不同的词)
您的主题是否详尽无遗? (这些主题是否能很好地代表您的所有文档?)
如果您的模型遵循这三个条件,则看起来是一个好的模型:)

LDA的主要优势

它很快
在Jupyter中使用%time命令进行验证。该模型通常运行很快。当然,这取决于您的数据。有几个因素会使模型变慢:
长文件
大量文件
词汇量大(特别是如果您使用n大的n-gram)

直观
如果需要解释主题,将主题建模为单词的加权列表是一种简单的近似方法,但是却是一种非常直观的方法。没有嵌入也没有隐藏的尺寸,只是带有重量的单词袋。
它可以预测看不见的新文档的主题

模型运行后,便可以将主题分配给任何文档。当然,如果您的训练数据集是英文的,并且您希望预测中文文档的主题,那么它将是行不通的。但是,如果新文档具有相同的结构,并且应该具有或多或少相同的主题,那么它将起作用。

LDA的主要缺点
很多微调
如果LDA可以快速运行,它将给您带来一些麻烦,无法获得良好的效果。这就是为什么提前知道如何对其进行微调的真正原因。

需要人为解释
通过计算机找到主题。人们需要对它们进行标记,以便将结果呈现给非专家人员。

您无法影响topic
知道您的某些文档谈论的是您知道的主题,而在LDA找到的主题中找不到它肯定会令人沮丧。而且无法对模型说某些词应该属于同一词。您必须坐下来等待LDA给您想要的东西。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。