矩阵运算和文本处理中的分类问题
我在大学学习线性代数时,实在想不出它除了告诉我们如何解线性方程外,还能有什么别的用途。关于矩阵的许多概念,比如特征值等等,更是脱离日常生活。后来在数值分析中又学了很多矩阵的近似算法,还是看不到可以应用的地方。当时选这些课,完全是为了混学分的学位。我想,很多同学都多多少少有过类似的经历。直到后来长期做自然语言处理的研究,我才发现数学家们提出那些矩阵的概念和算法,是有实际应用的意义的。
在自然语言处理中,最常见的两类的分类问题分别是,将文本按主题归类(比如将所有介绍亚运会的新闻归到体育类)和将词汇表中的字词按意思归类(比如将各种体育运动的名称个归成一类)。这两种分类问题都可用通过矩阵运算来圆满地、同时解决。为了说明如何用矩阵这个工具类解决这两个问题的,让我们先来来回顾一下我们在余弦定理和新闻分类中介绍的方法。
分类的关键是计算相关性。我们首先对两个文本计算出它们的内容词,或者说实词的向量,然后求这两个向量的夹角。当这两个向量夹角为零时,新闻就相关;当它们垂直或者说正交时,新闻则无关。当然,夹角的余弦等同于向量的内积。从理论上讲,这种算法非常好。但是计算时间特别长。通常,我们要处理的文章的数量都很大,至少在百万篇以上,二次回标有非常长,比如说有五十万个词(包括人名地名产品名称等等)。如果想通过对一百万篇文章两篇两篇地成对比较,来找出所有共同主题的文章,就要比较五千亿对文章。现在的计算机一秒钟最多可以比较一千对文章,完成这一百万篇文章相关性比较就需要十五年时间。注意,要真正完成文章的分类还要反复重复上述计算。
在文本分类中,另一种办法是利用矩阵运算中的奇异值分解(Singular Value Decomposition,简称 SVD)。现在让我们来看看奇异值分解是怎么回事。首先,我们可以用一个大矩阵A来描述这一百万篇文章和五十万词的关联性。这个矩阵中,每一行对应一篇文章,每一列对应一个词。
在上面的图中,M=1,000,000,N=500,000。第 i 行,第 j 列的元素,是字典中第 j 个词在第 i 篇文章中出现的加权词频(比如,TF/IDF)。读者可能已经注意到了,这个矩阵非常大,有一百万乘以五十万,即五千亿个元素。
奇异值分解就是把上面这样一个大矩阵,分解成三个小矩阵相乘,如下图所示。比如把上面的例子中的矩阵分解成一个一百万乘以一百的矩阵X,一个一百乘以一百的矩阵B,和一个一百乘以五十万的矩阵Y。这三个矩阵的元素总数加起来也不过1.5亿,仅仅是原来的三千分之一。相应的存储量和计算量都会小三个数量级以上。
三个矩阵有非常清楚的物理含义。第一个矩阵X中的每一行表示意思相关的一类词,其中的每个非零元素表示这类词中每个词的重要性(或者说相关性),数值越大越相关。最后一个矩阵Y中的每一列表示同一主题一类文章,其中每个元素表示这类文章中每篇文章的相关性。中间的矩阵则表示类词和文章雷之间的相关性。因此,我们只要对关联矩阵A进行一次奇异值分解,w 我们就可以同时完成了近义词分类和文章的分类。(同时得到每类文章和每类词的相关性)。
现在剩下的唯一问题,就是如何用计算机进行奇异值分解。这时,线性代数中的许多概念,比如矩阵的特征值等等,以及数值分析的各种算法就统统用上了。在很长时间内,奇异值分解都无法并行处理。(虽然 Google 早就有了MapReduce 等并行计算的工具,但是由于奇异值分解很难拆成不相关子运算,即使在 Google 内部以前也无法利用并行计算的优势来分解矩阵。)最近,Google 中国的张智威博士和几个中国的工程师及实习生已经实现了奇异值分解的并行算法,我认为这是 Google 中国对世界的一个贡献。
转自:http://hi.baidu.com/xiaoxiaolq/blog/item/0b106cd9de2678e338012f79.html
矩阵运算和文本处理中的分类问题相关推荐
- 《数学之美》第15章 矩阵运算和文本处理中的两个分类问题
1 文本和词汇的矩阵 在自然语言处理中,最常见的两个分类问题分别是:将文本按主题归类(比如将所有介绍奥运会的新闻归到体育类)和将词汇表中的字词按意思归类(比如将各种运动的项目名称归成体育一类). 新闻 ...
- 一文读懂文本处理中的对抗训练
作者丨WenZe.Leo 单位丨追一科技AI Lab研究员 背景与研究意义 深度学习技术的快速发展,大幅提升了众多自然语言处理任务(比如文本分类,机器翻译等)的效果,越来越多的深度学习模型被用于现实生 ...
- jsp接收 input文本输入框中,无法正确显示单引号和双引号的问题
在html的input文本输入框中,无法正确显示单引号和双引号的问题 分类: JavaScript2010-12-08 15:02 4074人阅读 评论(1) 收藏 举报 inputhtmljquer ...
- 中小型超市系统中的分类/产品属性/扩展属性的数据库设计
中小型商城系统中的分类/产品属性/扩展属性的数据库设计 正文: 之前发表过一篇"商城系统中[商品扩展属性]的表单生成及客户端验证",部分童鞋对于后台数据库的设计比较感兴趣,于是今天 ...
- 16Python文本数据分析:新闻分类任务 (贝叶斯算法应用实例)
唐宇迪<python数据分析与机器学习实战>学习笔记 16Python文本数据分析:新闻分类任务 (贝叶斯算法应用实例) ** 一.流程分析 ** 数据如下图:content为主体内容, ...
- 30天数据分析与机器学习实践之Day16——Python文本数据分析:新闻分类任务
30天数据分析与机器学习实践之Day16--Python文本数据分析:新闻分类任务 一.文本分析与关键词提取 1.1文本数据 1.2停用词 1.语料中大量出现2.没啥大用3.留着过年嘛? 1.3Tf- ...
- 机器学习中的分类模型整理
概要 机器学习中的分类模型有逻辑回归.朴素贝叶斯.决策树.支持向量机.随机森林.梯度提升树等分类算法,不仅可以进行二分类,还可以进行多分类. 一.逻辑回归 逻辑回归的本质就由线性回归演变而来,是一个线 ...
- 基于贝叶斯算法文本分析之新闻分类
文本分析中的重要概念 1 停用词:用来缩小语料 停用词是指在语料中大量出现,但对分文本的分析没啥大用的文本.这种词我们一般称为停用词.现在有好多停用词表,网上都可以搜到. 2 TF-idf:用来提取关 ...
- 2020 CCF BDCI 非结构化商业文本信息中隐私信息识别TOP5方案
2020 CCF BDCI 非结构化商业文本信息中隐私信息识别TOP5方案 1 写在前面 在本次CCF BDCI的非结构化商业文本信息中隐私信息识别比赛中,我们团队水煮毛血旺在初赛A榜B榜排名第六, ...
最新文章
- 第七讲:数据契约(2)
- windows中用cmd命令生成任意大小文件
- mysql(connector/ODBC)
- webgl内置函数--通用函数
- leetcode--207. 课程表
- Qt下OpenCv中cvGetWindowHandle的使用
- 获取某个地址的utxo的三种方法
- 安卓案例:View动画 - 弹球碰壁
- C++ 接口 函数导出_Matlab与C/C++混合编程、Visual C++与Matlab封装库互相调用相关要点...
- 零基础带你学习MySQL—MySQL常用的数据类型(列类型)(五)
- 《构建之法》读书心得
- jmeter接口顺序执行_【接口测试】JMeter中各组件执行顺序详解
- linux删除eth2设备_Linux卸载/删除多余网卡
- 万恶之源-python基本数据类型
- 戴着镣铐与狼共舞!深度解读新势力造车迷局
- 微信小程序中使用地图
- matlab模拟塞曼图谱,基于MATLAB的塞曼效应数值模拟
- 数电基础 逻辑门电路 学习截图
- 【信号与系统】(二)信号与系统概述——基本信号
- 开源的大文件上传组件NeatUpload™
热门文章
- [云炬创业基础笔记]第四章测试22
- [云炬创业基础笔记]商业模式在现代创业中的重要性
- 科大星云诗社动态20201118
- [MATLAB学习笔记] global声明全部变量
- 台湾大学林轩田机器学习技法课程学习笔记1 -- Linear Support Vector Machine
- 校园网站服务器配置参数,校园网服务器性能 配置及分布
- python可以开多少线程_Python开启线程,在函数中开线程的实例
- C语言高级技巧-在Makefile中引用你的头文件
- 交换技术、覆盖技术、虚拟存储技术的区分
- ANSI编码和Unicode编码的不同