第14章 余弦定理和新闻的分类

以下内容学习、摘录自《数学之美》

世界上有些事情常常超乎人们的想象,例如:余弦定理和新闻的分类看似八竿子打不着,却有着紧密的联系。

每天互联网都会产生大量的新闻或文章,对它们的分类需要自动化、准确的计算机程序来完成。所谓新闻的分类,或者更广义地讲任何文本的分类,无非是要把相似的新闻归入同一类中。如果让编辑来对新闻分类,他一定会先读懂新闻,然后找出其主题,最后根据主题的不同对新闻进行分类。但是计算机根本读不懂新闻,计算机本质上只能做快速计算。为了让计算机能够“算”新闻(而不是读新闻),就要求我们先把文字的新闻变成一组可计算的数字(量化新闻),然后再设计一个算法来算出任意两篇新闻的相似性。

首先让我们来看看怎样量化新闻:
1.建立一个常用词汇表(假设我们有64000个词汇);
2.对新闻进行分词;
3.计算新闻中每个词的TF-IDF值(可参考第11章);

如果单词表中的某个词在新闻中没有出现,对应的值为零,那么这64000个数,组成一个6400维的向量。我们就用这个向量来代表这篇新闻并称为新闻的特征向量( Feature Vector)。每一篇新闻都可以对应这样一个特征向量,向量中每一个维度的大小代表每个词对这篇新闻主题的贡献。当新闻从文字变成了数字后,计算机就有可能“算一算”新闻之间是否相似了。

再让我们看看如何算出两篇新闻的相似性。

学过向量代数的人都知道,向量实际上是多维空间从原点出发的有向线段,向量的夹角是衡量两个向量相近程度的度量。如下图:

图中左边的两个向量夹角较小:比较相似;右边两个夹角较大:不太相似。因此,可以通过计算两个新闻向量的夹角来判断它们是否相似。这里就要用到余弦定理了,如下角A的余弦:

如果将三角形的两边b和c看成是两个以A为起点的向量,分母表示两个向量b和c的长度,分子表示两个向量的内积。举一个具体的例子,假如新闻X和新闻Y对应的向量分别是:
X1, X2, …, X64000
Y1, Y2, …, Y64000,
那么它们夹角的余弦等于:

计算所得的余弦取值在0和1之间,也就是说夹角在0度到90度之间。当两条新闻向量夹角的余弦等于1时,这两个向量的夹角为零,两条新闻完全相同;当夹角的余弦接近于1时两条新闻相似,从而可以归成一类;夹角的余弦越小,夹角越大,两条新闻越不相关。当两个向量正交时(90度),夹角的余弦为零,说明两篇新闻根本没有相同的主题词,它们毫不相关。

经过以上步骤,我们能够量化新闻,并比较两篇新闻之间的相似度了。但新闻的分类还要解决“类别”问题。

常规的思路是“人工建立一些样板新闻”,并给该新闻定义好一个类别,如“体育”。然后把待分类新闻与之对比。这种人工的方式工作量大而且不准确。更好的方法是采用“无监督学习的聚类”方法。即:计算所有新闻之间两两的余弦相似性,把相似性大于一个阈值的新闻合并成一个小类。再把每个小类中所有的新闻作为一个整体,计算小类的特征向量、小类之间两两的余弦相似性,然后合并更大一点的小类。这样不断做下去,类别越来越少,而每个类越来越大。当某一类太大时,这一类里一些新闻之间的相似性就很小了,这时就要停止上述迭代的过程了。至此,自动分类完成。

采用自动聚类,而非人工定义类别的方法,可以看出优秀程序员做事的良好习惯:倾向于用机器(计算机)代替人工来完成重复性任务。虽然在短期内需要做一些额外的工作,但是从长远看可以节省很多时间和成本。

余弦定理就这样通过新闻的特征向量和新闻分类联系在一起了。我们在中学学习余弦定理时,恐怕很难想象它可以用来对新闻进行分类。在这里,我们再一次看到数学工具的用途。

大数据量时的余弦计算:我们假定常用词汇表的大小为10万,需要分类的新闻为10万篇,那总的计算量在10的15次方这个数量级。即使用100台服务器,每台服务器的计算能力是每秒1亿次,那么完成所有的计算需要两三个月,这个速度显然很慢。这里面可简化的地方非常多:
1.分母部分(向量的长度)不需要重复计算,计算向量a和向量b的余弦时,可以将它们的长度存起来,等计算向量a和向量c的余弦时,直接取用a的长度即可。这样,上面的计算量可以节省2/3;
2.在计算两个向量内积时,只需考虑向量中的非零元素。如果一篇新闻的一般长度不超过2000词,那么非零元素的个数一般也就是1000词左右,这样计算的复杂度大约可以下降100倍;
3.可以删除虚词,这里的虚词包括搜索中的非必留词,诸如“的”、“是”、“和”,以及“因为”、“所以”、“非常”,等等,这样计算时间还可以缩短几倍。
因此,10万篇新闻两两比较一下,也可以在一天内计算完成。

需要特别指出的是删除虚词,不仅可以提高计算速度,对新闻分类的准确性也大有好处,因为虚词的权重其实是一种噪音,干扰分类的正常进行。这一点与通信中过滤掉低频噪音是同样的原理。通过这件事,我们也可以看出自然语言处理和通信的很多道理是相通的

位置的加权:和计算搜索相关性一样,出现在文本不同位置的词在分类时的重要性也不相同。显然,出现在标题中的词对主题的贡献远比出现在新闻正文中的重要。而即使在正文中,出现在文章开头和结尾的词也比出现在中间的词重要。因此要对标题和重要位置的词进行额外的加权,以提高文本分类的准确性。

点击这里可以查看《数学之美》的其它学习笔记。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容