聚焦哈利·波特系列丛书文本摘要比较几种算法!

lookFuture 2018-12-13

点击上方关注,All in AI中国

作者简介:格雷格·拉弗蒂(Greg Rafferty),一名数据科学家。Github地址:https://github.com/raffg/harry_potter_nlp

聚焦哈利·波特系列丛书文本摘要比较几种算法!

太阳落在外面时,哈利坐在图书馆里,赫敏和罗恩坐在一起,在一页又一页的咒语中狂热地撕裂前面桌子上堆满的大量的书。

在这一系列的帖子中,我正在从哈利波特的“镜头”来研究一些实用的NLP技术。

赫敏打断了他们,“难道你们俩不打算读《霍格沃茨的历史》吗?”在《哈利波特》系列剧中,赫敏有多少次逼着哈利和罗恩去读那本巨著《霍格沃茨的历史》?他们三个人在图书馆里度过了多少个夜晚,通读他们能找到的每本书,找出Nicolas Flamel是谁,或者如何在水下生存,或者为他们的O.W.L.s做准备?他们所犯的错误就是试图自己阅读所有内容。

还记得当你在学校时,偶然发现了那本书从未读过的CliffsNotes摘要,这基本上就是文本摘要的作用:为任何大型文档提供CliffsNotes版本。CliffsNotes是由相当受过良好教育的人写的,这些人熟悉他们总结的书。但现在是二十一世纪,计算机不应该让这类工种消失么?我查看了一些文本摘要算法,看看我们是否已准备好让旧Clifton退出工作岗位。

有两种类型的文本摘要算法:提取和抽象算法。所有提取摘要算法都尝试对文档中的短语或句子进行评分,并仅返回信息量最大的文本块。抽象文本摘要实际上创建了新文本,该文本在该文档中不存在。抽象摘要是您在向朋友解读一本书时可能会做的事情,计算机比抽取摘要要困难得多。计算机在创作方面并不是那么出色。到目前为止,还没有任何抽象的摘要技术可以很好地适用于长文档。效果最好的只是根据单个段落创建一个句子,或者在保持尽可能多的信息的同时将句子的长度减半。通常,语法会受到严重影响。它们通常基于神经网络模型,本文将重点介绍更简单的提取文本摘要技术。

我将介绍的大多数算法都在Python的sumy包中打包在一起,但我也使用了Gensim包中的一个摘要器以及我自己使用LDA主题关键字编写的另一种技术来丰富整个EdmundsonSummarizer。所有例子都输出了《哈利波特与魔法石》第一章的五句摘要。需要注意的是:不要过于苛刻地判断结果。他们并不是很好......(文字摘要似乎更适合非小说类的枯燥作品)

LexRank Summarizer

LexRank是一种无监督的方法,它的灵感来自于Google的PageRank算法背后的相同想法。作者说它是“基于句子图形表示中的特征向量中心性的概念”,使用“基于句子内余弦相似性的连通矩阵。”好了,简而言之,它发现了文档中所有单词的相对重要性。并选择了包含大多数高分词最多的句子。

"波特一家,没错,我听到的就是这个名字。""一定的,他们的儿子,哈利——"

他一共点了十二次,直到最后整条街只剩下远处两盏绿豆大小的灯,原来是那只猫的两只眼睛。

如果有任何人此时往窗外看,即使是眼睛圆得像珠子似的杜斯利夫人,她也无法看清楚人行道上有什么东西,邓布利多打火机收好,径直走到四号门,坐到了墙上那只猫旁边。

“但我不-不-不能承受——莉莉和詹姆死了——可怜的小哈利要和麻瓜住在一起-”

“没错,没错,这一切太令人悲伤了,但是控制住自己,海格,不然我们就要被发现了,”麦格教授低声说,小心地用胳膊轻拍着海格,这时邓布利多越过花园的矮墙,来到了前门。

邓布利多转身沿着街道往回走。

Luhn Summarizer

最早的文本摘要算法之一由Hans Peter Luhn于1958年出版,他在IBM的研究中工作。Luhn的算法是一种基于TF-IDF的朴素算法,它是查看重要性词之间非重要词的“窗口大小”。它还为在文档开头附近发生的句子赋予更高的权重。

它正在看女贞路的标志,不,它在盯着那个标志,可是猫是不会看地图和标志的。

他从来没在大白天见过猫头鹰飞过,但是有人在街上看到了。他们回头指着,目瞪口呆地看着一只接一只的猫头鹰从头顶飞过。

但是他杀不了那个小男孩,没有人知道其中的原因,但是人们说如果他杀不了哈利·波特,伏地魔的力量就会消失——这也是他离开的原因。

“但我不-不-不能承受——莉莉和詹姆死了——可怜的小哈利要和麻瓜住在一起-”“没错,没错,这一切太令人悲伤了,但是控制住自己,海格,不然我们就要被发现了,”麦格教授低声说,小心地用胳膊轻拍着海格,这时邓布利多越过花园的矮墙,来到了前门。

晚安,麦格教授——邓布利多教授。

LSA Summarizer

潜在语义分析是一种相对较新的算法,它将术语频率与奇异值分解相结合。

他赶紧穿过马路,直奔自己的办公室,告诉秘书不要来打扰自己,拿起电话,几乎要拨出家里的号码,这时他改变了注意。

很显然麦格教授已经谈论到点子上来了,这也是她一整天坐在冰冷僵硬的墙上的真正原因。无论是作为一只猫还是作为一个女人她都从来没有像这样盯过邓布利多。

那人比普通人高一倍,宽度至少有五倍,似乎显得出奇地高大,而且粗野地纠结在一起的乱蓬蓬的黑色长发和胡须几乎遮住了大部分脸庞,那双手有垃圾桶盖那么大,一双穿着皮靴的脚像两只小海豚。

海格的肩膀在抖动,麦格教授拼命眨眼,邓布利多一向闪光的眼睛也暗淡无光了。

TextRank Summarizer

TextRank是另一个基于PageRank思想的文本摘要,也是与LexRank同时开发的,尽管是由不同的人群组成,TextRank比LexRank更简单;虽然这两种算法非常相似,但LexRank采用启发式后处理步骤来删除具有高度重复的句子。

住在四号普里怀特街的杜斯利先生及夫人,非常骄傲地宣称自己是十分正常的人。

杜斯利先生是一家叫格朗宁斯的钻机工厂的老板。

他非常肥壮、结实,几乎肥到没有颈根,但却有一把大胡子。

杜斯利夫人则非常苗条,一头金发,她的颈根有常人的两倍那么长,这使得她每天伸长脖子透过花园围栏去偷窥邻居家的动静变得非常容易。

Edmundson Summarizer

1969年,Harold Edmundson开发了以他名字命名的摘要。Edmundson的算法和Luhn的算法是影响深远的文本摘要技术之一。Edmundson摘要与众不同之处在于它考虑了“奖励词”,用户所说的词语具有高度重要性; “耻辱词”,重要性低甚至是负面的词;和“停止词”,这与NLP处理中的其他地方使用的相同。Edmundson建议使用文档标题中的单词作为奖励单词。使用章节标题作为奖励词,这是Edmundson输出的内容:

杜斯利一家一想到要是波特一家来到这条街上邻居们怎么说,就不寒而栗。

在把达力哄上床后,他正好有时间看到晚间新闻的最后一条新闻:各地的鸟类学家均报道全国各地猫头鹰有异常动向。

邓布利多把打火机收好,径直走到四号门,坐到了墙上那只猫旁边。

他一共点了十二次,直到最后整条街只剩下远处两盏绿豆大小的灯,原来是那只猫的两只眼睛。

他也不可能知道,就在此刻,全国人都在秘密聚会。人们高举酒杯悄声说:“祝福大难不死的孩子——哈利·波特! ”

我做的另一个补充是使用LDA提取主题关键字,然后将这些主题关键字添加回作为额外的奖励词。经过这样的修改,Edmundson结果如下:

八点半时,德思礼先生拿起自己的公文包,亲吻了太太的脸,并且尝试给达力吻别,但是却错过了,因为达力正在发脾气将他的麦片往墙上扔。

在把达力哄上床后,他正好有时间看到晚间新闻的最后一条新闻:各地的鸟类学家均报道全国各地猫头鹰有异常动向。

他一共点了十二次,直到最后整条街只剩下远处两盏绿豆大小的灯,原来是那只猫的两只眼睛。

他的一只小手正好放在那封信旁边。他还继续沉睡,一点不知道他很特殊,不知道他名气很大,不知道再过几小时,等德思礼太太开大门放奶瓶时,他会被她的尖叫声吵醒。

他也不可能知道,就在此刻,全国人都在秘密聚会。人们高举酒杯悄声说:“祝福大难不死的孩子——哈利·波特!

SumBasic Summarizer

SumBasic算法是在2005年开发的,仅使用单词概率方法来确定句子的重要性。

他忽然很好奇。

”哈利。

猫还在那儿。

“看来的确如此,”邓布利多说。

“是的,”麦格教授说。

这确实有点···不可描述。

KL Summarizer

KLSum算法是一种贪婪的方法,只要KL散度(KL Divergence)正在减少,就会将句子添加到摘要中。

在街道的拐角处,他注意到有个奇怪的迹象——一只猫在看地图。

当他们来回搜索街道上是否有汽车前灯的灯光时,响声越来越大,最后变成一阵吼叫。他们抬眼望着天空,只见一辆巨型摩托自天而降,停在他们面前的街道上。

那人比普通人高一倍,宽度至少有五倍,似乎显得出奇地高大,而且粗野地纠结在一起的乱蓬蓬的黑色长发和胡须几乎遮住了大部分脸庞,那双手有垃圾桶盖那么大,一双穿着皮靴的脚像两只小海豚。

“但我不-不-不能承受——莉莉和詹姆死了——可怜的小哈利要和麻瓜住在一起-”“没错,没错,这一切太令人悲伤了,但是控制住自己,海格,不然我们就要被发现了,”麦格教授低声说,小心地用胳膊轻拍着海格,这时邓布利多越过花园的矮墙,来到了前门。

减少Summarizer

Redu算法是另一种基于图的模型,它根据句子边缘权重与文档中其他句子的总和来对句子进行评价。该权重的计算方法与TexRank模型中的权重相同。

波持太太是德思礼太太的妹妹,不过她们已经有好几年不见面了。实际上,德思礼太太佯装自己根本没有这么个妹妹,因为她妹妹和她那一无是处的妹夫与德思礼一家的为人处世完全不一样。

看起来麦格教授已经提到了她最想讨论的一点,这也是她在一堵又冷又硬的墙上待了一天的真正原因,她现在用一种既不是猫也不是女人的眼神盯着邓布利多,像要把他刺穿。

邓布利多抱着哈利,转身向杜斯礼家走去。

“但我不-不-不能承受——莉莉和詹姆死了——可怜的小哈利要和麻瓜住在一起-”“没错,没错,这一切太令人悲伤了,但是控制住自己,海格,不然我们就要被发现了,”麦格教授低声说,小心地用胳膊轻拍着海格,这时邓布利多越过花园的矮墙,来到了前门。

晚安,邓布利多教授。

Gensim Summarizer

Python的Gensim包中包含一个摘要器,它是TextRank算法的修改。Gensim的方法修改了句子相似度函数。

猫这时正在读女贞路的标牌,不,是在看标牌;猫是不会读地图或是读标牌的。

邓布利多把熄灯器放回斗篷里边的口袋里,之后就顺着街道向四号走去。他在墙头猫的身边坐下来。

“我亲爱的教授,像您这样的明白人,总该可以直呼他的大名吧?什么神秘人不神秘人的,全都是瞎扯淡……十一年了,我一直想方设法说服大家,直呼他本人的名字:伏地魔。”麦格教授打了个寒噤,可邓布利多在掰两块粘在一起的雪糕,似乎没有留意。

麦格教授狠狠地瞪了邓布利多一眼,说:猫头鹰和沸沸扬扬的谣言毫不相干。

这一来,麦格教授似乎点到了她急于想讨论的问题核心,这也正是她在冰冷的砖墙上守候了一整天的原因。不管她是一只猫,或是一个女人,她从来都不曾用现在这样锐利的眼光看邓布利多。显然,不管大家怎么说,只有从邓布利多口中得到证实,她才会相信。

那么您认为哪种算法能够提供最佳摘要?在做出最终判断之前,需要调整很多参数。有些可能在较短的摘要上表现较好,有些在较长的摘要上表现较好。写作的风格可能会有所不同(我之前提到过,我总结过非小说的要比小说好)。但是,如果你是哈利,刚刚进入霍格沃茨的图书馆,意图回答一些问题,却被“图书馆的庞大规模吓倒;这有成千上万的书;成千上万的货架;”,只需点击几下鼠标,即可获得一些摘要,这样做不会有什么坏处。如果巫师使用这种愚蠢的麻瓜创作......

聚焦哈利·波特系列丛书文本摘要比较几种算法!

相关推荐