第 14 章 余弦定理和新闻分类
Last updated
Last updated
对于一篇新闻中所有的实词,计算出它们的 TF-IDF 值,没有出现的词的 TF-IDF 为零。把这些词按照对应的实词在词汇表的位置依次排列,就得到一个多维向量,即该新闻的特征向量,向量中每一个维度的大小代表每个词对这篇新闻主题的贡献度。
同一类新闻一定是某些主题词用得较多,即它们的特征向量在某几个维度上的值都比较大。如果不属于同一类,则较大的特征向量应该没什么交集。由于每篇新闻的文本长度不同,所以特征向量各个维度的数值也不同。单纯比较各个维度的大小没有太大意义。但是向量的方向却有很大意义。如果两个向量的方向一字,说明对应的新闻用词的比例也基本一致。因此可以利用余弦定理计算两个向量的夹角来判断对应新闻主题的接近程度。
若将三角形的两边和看成是两个以为起点的向量,则上述公式等价于:
第一种假设我们已知一些新闻类别的特征向量,计算出要被分类的新闻和各类新闻特征向量的余弦相似性,余弦越小,相似度越高。
第二种假设我们不知道这些新闻类别的特征向量,则我们要计算出所有新闻两两之间的余弦相似性,把相似性大于一个阈值的新闻合并成一个小类,然后把每个小类中的所有新闻作为一个整体,并计算出小类的特征向量,再计算出所有小类之间两两的余弦相似性,然后把小类合并成大一点的小类,以此类推,直到小类之间的余弦相似度很小时,就可以停止迭代了。
计算 N 篇新闻之间的两两相关性,一次迭代计算复杂度为 N 方,计算量较大。简化方法如下:首先,分母(向量的长度)不需要重复计算,第一次计算余弦以后,长度可以存起来。其次,只考虑向量中的非零元素即可,这样一来复杂度取决于两个向量中非零元素个数的最小值。第三,删除虚词,如“因为、是、的、如果”等等,既提高了计算速度,又减少了干扰。
标题中的词对主题的贡献要大于正文中的;出现在文章首尾中的词比中间部分的词重要。所以,可以对重要位置的词进行额外的加权,以提高文本分类的准确性。
求特征向量时,要先计算TF-IDF(即每篇文章中关键词的词频 乘以 关键词的权重。权重与关键词在语料库文章中的集中/分散程度,以及关键字在文章中的位置有关。)。计算余弦相似度时,要注意矩阵存储大小及计算复杂度。