文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
三、使用 NMF 和 SVD 的主题建模
主题建模是开始使用矩阵分解的好方法。 我们从术语 - 文档矩阵开始:
来源: 信息检索导论
我们可以将其分解为一个高的窄矩阵乘以一个宽的扁矩阵(中间可能有对角矩阵)。
请注意,此表示不考虑单词顺序或句子结构。 这是一个词袋的例子。
动机
考虑最极端的情况 - 使用两个向量的外积重建矩阵。 显然,在大多数情况下,我们无法准确地重建矩阵。 但是,如果我们有一个向量,带有每个单词在所有单词中的相对频率,而另一个向量具有每个文档的平均单词数,那么外积将尽可能接近。
现在考虑将矩阵增加到两列和两行。 现在最佳分解是将文档聚类成两组,每组具有尽可能彼此不同的单词分布,但在簇中的文档中尽可能相似。 我们将这两个组称为“主题”。 我们会根据每个主题中最常出现的词汇将这些词汇分为两组。
今天的课程中
我们将采用几个不同类别的文档数据集,并为它们查找主题(由单词组组成)。 了解实际类别有助于我们评估我们发现的主题是否有意义。
我们将尝试使用两种不同的矩阵因式分解:奇异值分解(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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论