文本分类与线性代数

 

目录

一、余弦距离

二、聚类算法

三、奇异值分解


       现如今,有些新闻网站已经不做新闻的“生产者”,它们只做新闻的“搬运工”,也就是说这些网站本身不编辑任何的新闻,它们只是对网络上已有的新闻进行分类,聚合,然后推荐给用户,那么在这个“搬运”过程中就涉及到一个很关键的技术——文本分类。所谓文本分类,顾名思义,就是让计算机根据内容自动地将文本进行归类。当然,计算机是“看”不懂文章的,它只会做数学运算,因此,我们首先得把每一篇新闻都转化成一串数字,才能让计算机对这些数字进行算法运算。具体怎么做呢?

一、余弦距离

       其实,要对新闻文本进行分类,最容易想到的就是提取新闻中的关键词,例如有“利物浦”、“湖人”这些字眼的很可能就是体育类的新闻,同时,这些关键词在文中的排序又没有那么重要,所以,我们就可以利用一些关键词在文中出现的频率来对新闻分类。但我们也知道文章中很多词是对文本的分类毫无帮助的,例如“的”、“他”、“是”等等,我们在分类时就要避开这些词,这时候,之前提到过的TF-IDF词频—逆文本频率值)就派上用场了(具体概念详见搜索引擎之美的第三部分——网页排序算法),TF-IDF越高,这个词对文章的重要程度越高。现在应该知道怎么把新闻转化成数字了吧!假如词汇表有10万个词,每篇新闻都可以用这10万个词的TF-IDF值来描述它的主要特征,这些TF-IDF值纵向排列就形成了一个100000\times 1向量,所以每篇新闻都可以用一个向量来表示,这是一种化繁为简的过程!

       将新闻文本转化为向量后,接下来就可以根据这些向量之间的相似度来对新闻分类,那如何衡量两个向量的相似度呢?我们可以比较向量的方向,如果两个向量的方向非常接近,那对应两篇新闻的用词比例也是基本一致的,这时候就应该能想到利用两个向量之间的夹角来衡量它们的相似度。我们高中就学过平面向量的夹角余弦值公式,平面中两个向量\vec{a}\vec{b}之间的夹角余弦值可以用下式表示:

                                                                                       cos\theta =\frac{\left \langle \vec{a} ,\vec{b}\right \rangle}{\left | a \right |\cdot \left | b \right |}

        本科课程《线性代数》也告诉我们,上面这个公式对于高维度的向量也同样适用,向量x_{1}x_{2}的夹角余弦值等于它们的内积除以模的乘积,即:

                                                                             cos\theta =\frac{ x_{1} \cdot x_{2}}{\left \| x_{1} \right \|\left \| x_{2} \right \|}=\frac{ x_{1}^{T} x_{2}}{\left \| x_{1} \right \|\left \| x_{2} \right \|}

        根据以上公式,两个向量的夹角余弦值越大,夹角越小,它们对应的两篇新闻的相似度就越大,这个余弦值也有个官方的名字——余弦距离

二、聚类算法

       现在我们知道了可以利用余弦距离来衡量新闻的相似度,最后一步就是根据这些相似度对所有的新闻进行归类,这其实属于机器学习中的聚类问题。《数学之美》中提到了两种常用的聚类算法:自底向上不断合并K均值聚类算法

       先来说下自底向上不断合并的方法,这种方法的思想其实非常简单:先设置一个相似度阈值,先计算所有新闻两两之间的余弦距离,把余弦距离大于阈值的新闻合并为一个小类,这是第一轮归类;然后把第一轮归类得到的每一个小类看做一个整体(一篇大的新闻),计算这些小类对应的向量,再根据余弦距离将这些小类合并成大一点的小类,这是第二轮归类;接下来以此类推,直至不能得到大于阈值的余弦距离,结束分类进程,得到最终的分类结果。

       但是,这种自底向上的聚类算法计算量相当大,因为它需要对所有的新闻进行两两对比,假如词汇表的大小是10万个词,要分类10万篇新闻,第一轮归类的计算量应该要达到10^{14}这个量级。所以,还有一种更为常用的方法——K均值聚类K-means算法,具体的操作步骤如下:

        1.假设有N篇新闻,对应N个向量X_{1}, X_{2},\cdots ,X_{N},现在要把这些新闻分成K类。首先,在N个向量中随机抽取K个向量,记为C_{1}(0),C_{2}(0),\cdots ,C_{K}(0),他们分别代表了第

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值