专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » 矩阵运算:数学的美系列十 8:矩阵运算和文本处理中的分类问题 »正文

矩阵运算:数学的美系列十 8:矩阵运算和文本处理中的分类问题

来源: 发布时间:星期一, 2010年1月25日 浏览:0次 评论:0
  我在大学学习线性代数时实在想不出它除了告诉我们如何解线性方程外还能有什么别用途有关矩阵许多概念比如特征值等等更是脱离日常生活后来在数值分析中又学了很多矩阵近似算法还是看不到可以应用地方当时选这些课完全是为了混学分学位我想很多同学都多多少少有过类似经历直到后来长期做自然语言处理研究我才发现数学家们提出那些矩阵概念和算法是有实际应用意义

  在自然语言处理中最常见两类分类问题分别是将文本按主题归类(比如将所有介绍亚运会新闻归到体育类)和将词汇表中字词按意思归类(比如将各种体育运动名称个归成类)这两种分类问题都可用通过矩阵运算来圆满地、同时解决为了介绍说明如何用矩阵这个工具类解决这两个问题让我们先来来回顾下我们在余弦定理和新闻分类中介绍思路方法

  分类关键是计算相关性我们首先对两个文本计算出它们内容词或者说实词向量然后求这两个向量夹角当这两个向量夹角为零时新闻就相关;当它们垂直或者说正交时新闻则无关当然夹角余弦等同于向量内积从理论上讲这种算法非常好但是计算时间特别长通常我们要处理文章数量都很大至少在百万篇以上 2次回标有非常长比如说有 5十万个词(包括人名地名产品名称等等)如果想通过对百万篇文章两篇两篇地成对比较来找出所有共同主题文章就要比较 5千亿对文章现在计算机秒钟最多可以比较千对文章完成这百万篇文章相关性比较就需要十 5年时间注意要真正完成文章分类还要反复重复上述计算

  在文本分类中种办法是利用矩阵运算中奇异值分解(Singular Value Decomposition简称 SVD)现在让我们来看看奇异值分解是如何回事首先我们可以用个大矩阵A来描述这百万篇文章和 5十万词关联性这个矩阵中行对应篇文章列对应个词



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

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



   3个矩阵有非常清楚物理含义个矩阵X中行表示意思相关类词其中每个非零元素表示这类词中每个词重要性(或者说相关性)数值越大越相关最后个矩阵Y中列表示同主题类文章其中每个元素表示这类文章中每篇文章相关性中间矩阵则表示类词和文章雷的间相关性因此我们只要对关联矩阵A进行次奇异值分解w 我们就可以同时完成了近义词分类和文章分类(同时得到每类文章和每类词相关性)

  现在剩下问题就是如何用计算机进行奇异值分解这时线性代数中许多概念比如矩阵特征值等等以及数值分析各种算法就统统用上了在很长时间内奇异值分解都无法并行处理(虽然 Google 早就有了MapReduce 等并行计算工具但是由于奇异值分解很难拆成不相关子运算即使在 Google 内部以前也无法利用并行计算优势来分解矩阵)最近Google 中国张智威博士和几个中国工程师及实习生已经实现了奇异值分解并行算法我认为这是 Google 中国对世界个贡献

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: