14.余弦定理与新闻的分类
14.1 新闻的特征向量
新闻是传递信息的,而词是信息的载体,新闻的信息和词的语义是练习在一起的。而新闻中的词的权重值都有所不同,所以新闻的特征向量可以这样计算:对于一篇新闻的所有实词,计算出它们的TF-IDF值;把这些值按词汇表顺序排列,就得到一个向量。
14.2 向量距离的度量
两个向量是否相似,可以用两向量之间的余弦值来衡量:
(14.1)
(14.2)
余弦值越近于1,两条新闻约相似;越近于0,越不相关。
然后在此基础上讨论新闻的分类算法:
- 已知一些新闻类别的特征向量,可直接求余弦值分类;
- 对于没有这些类别的特征向量,则就要用到聚类算法了,用无监督学习让它们自行聚合分类(Kmeans、KNN等等)。
14.3 计算向量余弦的技巧
14.3.1 大数据量时的余弦计算
由于计算余弦的计算量很大,再加之需要两两比较,多次迭代,其计算量十分之大,所以需要简化计算。
- 式(14.1)的分母部分不需要重复计算,可以算好之后存储起来;
- 在计算式(14.1)中的分子即两个向量内积时,只需考虑向量中的非零元素,因为一篇文章的词汇量其实并不多;
- 删除虚词,如“的”、“因为”等等。
虚词其实就是一种噪音,删除虚词与通信中过滤低频噪音是同样的原理。
14.3.2 位置的加权
显然,出现在标题中的词对主题的贡献远比出现在新闻正文中的重要;正文中,出现在文章开头和结尾的词也比中间的重要。所以可以对标题和重要位置的词进行额外的加权,以提高文本分类的准确性。
15.矩阵计算和文本处理总的两个分类问题
一次就能把所有新闻相关性计算出来。这个一步到位的办法利用的是矩阵运算中的奇异值分解(SVD)。
把上面一个大矩阵,分解成三个小矩阵相乘。相应的存储量好计算量都会小很多。
如何进行奇异值分解:矩阵的特征值、以及数值分析的各种算法等等。
奇异值分解的定义:
(15.1)
文本分类中,M对应文本的数量,N对应词典大小。
奇异值分解一般分两步进行:
- 将矩阵A变换成一个双对角矩阵(除了两行对角线元素非零,剩下的都是零),这个过程的计算量是O(MN2),可用矩阵A的稀疏性大大缩短计算时间;
- 将双对角矩阵编程奇异值分解的三个矩阵,计算量微乎其微。
奇异值分解的分类结果比较粗糙,适合处理超大规模文本的粗分类。所以在实际应用中,可用先进行奇异值分解,得到粗分类结果,再利用计算向量余弦的方法,进行几次迭代,得到比较精确的结果。