返回介绍

三、使用 NMF 和 SVD 的主题建模

发布于 2025-01-01 12:38:39 字数 997 浏览 0 评论 0 收藏 0

主题建模是开始使用矩阵分解的好方法。 我们从术语 - 文档矩阵开始:

来源: 信息检索导论

我们可以将其分解为一个高的窄矩阵乘以一个宽的扁矩阵(中间可能有对角矩阵)。

请注意,此表示不考虑单词顺序或句子结构。 这是一个词袋的例子。

动机

考虑最极端的情况 - 使用两个向量的外积重建矩阵。 显然,在大多数情况下,我们无法准确地重建矩阵。 但是,如果我们有一个向量,带有每个单词在所有单词中的相对频率,而另一个向量具有每个文档的平均单词数,那么外积将尽可能接近。

现在考虑将矩阵增加到两列和两行。 现在最佳分解是将文档聚类成两组,每组具有尽可能彼此不同的单词分布,但在簇中的文档中尽可能相似。 我们将这两个组称为“主题”。 我们会根据每个主题中最常出现的词汇将这些词汇分为两组。

今天的课程中

我们将采用几个不同类别的文档数据集,并为它们查找主题(由单词组组成)。 了解实际类别有助于我们评估我们发现的主题是否有意义。

我们将尝试使用两种不同的矩阵因式分解:奇异值分解(SVD)和非负矩阵分解(NMF)。

import numpy as np
from sklearn.datasets import fetch_20newsgroups
from sklearn import decomposition
from scipy import linalg
import matplotlib.pyplot as plt

%matplotlib inline
np.set_printoptions(suppress=True)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文