SVD分解在文本分类中的应用


    在自然语言处理中,最常见的两个问题分别是,将文本按主题归类和将词汇按意思归类。这两个问题都可以通过矩阵运算来圆满地,一次次能够解决。首先来看一看余弦定理和新闻分类这个问题

    新闻分类其实就是一个聚类问题,关键是计算两篇新闻的相似程度。问了完成这个任务,我们可以将新闻表示成代表它们内容的实词序列,即向量,然后求两个向量的夹角。夹角越小,表示两篇新闻越相关;当它们垂直正交时,表示两篇新闻无关。从理论上来讲,这种算法非常简单,,也易于实现。但问题是,当我们需要对大量的新闻进行分类时,我们需要两两比较,这需要很多次迭代,因此非常耗时。尤其当新闻数量非常大,同时词汇数量也很大时,这个问题可能会趋于无解。那么我们有没有一种方法,能够一次性地把所有新闻的相关性计算出来呢?答案是肯定的,这就是我们在“线性代数”中学过的SVD(奇异值分解)。

    现在让我们来看看奇异值分解是怎么回事。首先,我们可以用一个大矩阵A来描述这一百万篇文章和五十万词的关联性。这个矩阵中,每一行对应一篇文章,每一列对应一个词。

     在上面的图中,M=1,000,000,N=500,000。第 i 行,第 j 列的元素,是字典中第 j 个词在第 i 篇文章中出现的加权词频(比如,TF/IDF)。读者可能已经注意到了,这个矩阵非常大,有一百万乘以五十万,即五千亿个元素。

    奇异值分解就是把上面这样一个大矩阵,分解成三个小矩阵相乘,如下图所示。比如把上面的例子中的矩阵分解成一个一百万乘以一百的矩阵X,一个一百乘以一百的矩阵B,和一个一百乘以五十万的矩阵Y。这三个矩阵的元素总数加起来也不过1.5亿,仅仅是原来的三千分之一。相应的存储量和计算量都会小三个数量级以上。

  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值