全文共3951字,预计学习时长8分钟git
F. Scott Fitzgerald《了不得的盖茨比》封面,初版,1925年github
对美国的高中生来讲,若是每个高一新生在英语课上都有一项相同的做业,那这项做业必定是写一篇关于《了不得的盖茨比》的大意总结。《了不得的盖茨比》是一部引人入胜的文学做品,它的中心主题贯穿于社会与阶级、财富与地位、过去与如今。因而可知,对于一个高中生来讲,写一篇关于这部小说的既简明又有说服力的总结并不是易事。数组
在本文中,咱们将使用天然语言处理(NLP)中的一些方法来总结《了不得的盖茨比》。天然语言处理是人工智能和机器学习的一个子领域,其分析领域为计算机如何处理和理解天然语言通讯方法(例如书面语言)。这些术语可能听起来有些高深莫测,可是其基本概念仍是容易理解的。微信
清除与整理网络
在作总结以前,首先须要得到这本书。因此,咱们拿到了一份由澳大利亚古登堡项目所提供的该书的副本。接下来,第一步须要删除书中的停用词,即the、and、in、for、an等词。要写出格式良好的句子,使用停用词是必需的,但它们却并不为句子增长任何容易辨别的含义,且它们会影响词频的分析。因此,咱们将使用此处的停用词列表。第二步,将把《了不得的盖茨比》分解为(键,值)对的映射。映射中的键是完整的句子(包含停用词和全部内容),而值表示已清除版本的数组。机器学习
停用词列表传送门:https://gist.github.com/sebleier/554280学习
就算对于不熟悉图论的人来讲,理解这个概念也是十分简单的。初等图由两部分组成:节点和边。节点表明现实世界中的一个概念,如人、电话号码或城市等。边则是两个节点之间的链接。以下图所示,Facebook就是一个常见的图形例子。图中的这些节点就表明Facebook用户。若是两个Facebook用户是朋友,那么这两个节点之间就会有一条边。人工智能
为了实现目标,可把《了不得的盖茨比》也表示为这样一个图,每一个句子都表明一个节点。两个节点之间就会有一条边,而这条边就等于它们的句子类似性(对于这一点咱们将在下文进一步介绍)。可是在作这件事以前,咱们要明白,这种表示法为何会有用呢?spa
这种图示其实是将这本书表示为一个马尔可夫链。马尔可夫链是一种几率模型,经过定义从一种状态到另外一种状态的转换几率来描述一系列状态。翻译
好比,假设想用马尔可夫链来表示我开车到达的地点。那么,先假设我只开车往返于4个地点,即家、工做、商店和健身房,每一个地点我都有可能开车到达。下面以图示来讲明。若是节点之间没有链接,则开车往返于两个地点之间的几率为0%。例如,在下图中,我从不开车直接往返于商店与健身房,而是每每先回家一趟。
经过以上的马尔可夫链,能够得出我可能位于的任何给定地点的平稳几率。从上图中直观来看,在任何给定时间内,我最有多是在家。这是由于有不少节点以极高的几率指向了家这个位置。
如今,让咱们回到《了不得的盖茨比》上来。同理,将两个句子之间的转移几率定义为两个句子之间的余弦类似度。而后咱们就能够得到该马尔可夫链的平稳几率分布。其中,在图中有着最多链接的节点就是具备最高平稳几率的句子。如在下面的示例中,节点A可能具备最高的平稳几率。
因而可知,高度链接的节点具备高平稳几率。而在这本书中,这样的节点就能表明一个关键主题的总结,由于这些节点与许多句子之间有着很高的相关性。可是,在咱们说得太远以前,须要定义什么是余弦类似性。
假设这里有两个句子—“Jack and Jill went up the hill”和“Jill and Jack run down the hill”。余弦类似性就将这两个句子视为词的向量,并使用下面的公式计算它们的重叠度。余弦类似将计算两个词汇向量的点积,并将其除以每一个向量大小的积。
理解这些以后,准备进行下一步了。咱们将把图表示为一个矩阵。索引(x,y)处的值将是句子x和句子y之间的余弦类似性。该值是句子x和句子y之间的转换几率。使用这些转换几率来得到每一个节点的平稳几率。
在马尔可夫链中得到平稳几率是相对简单的。能够重复地将转移几率矩阵相乘,直到达到一个稳定状态—即当全部转移几率都收敛到单个值时。除此以外,更有效的解决方案是使用左特征向量。
既然已经达到了一个稳定状态,就能够寻找最高几率值了。如下,就是具备最高稳态几率的句子。
"I'm Gatsby," he said suddenly.
--------------------------------------------------
"You two start on home, Daisy," said Tom. "In Mr. Gatsby's car."
--------------------------------------------------
"I told you I went there," said Gatsby.
--------------------------------------------------
"I want you and Daisy to come over to my house," he said, "I'd like to show her around."
--------------------------------------------------
She had told him that she loved him, and Tom Buchanan saw. He was astounded. His mouth opened a little and he looked at Gatsby and then back at Daisy as if he had just recognized her as some one he knew a long time ago.
如今,就来到了数据科学中最有趣的部分——得出了数据并不支持的结论。来评价一下下方得出的摘要吧。
In our last sentence, Daisy tells Gatsby she loves him and Tom Buchanan, her husband, sees. This sentence captures the complex relationship between Gatsby, Daisy, and Tom. In our fourth sentence, we see Gatsby wanting to show Daisy around his house. He’s convinced Daisy will want to be with him if she sees that he is now rich and successful. This captures Gatsby’s struggle to obscure his past with his current success, a central theme in the novel. And our first sentence captures the iconic moment of Gatsby introducing himself. Our model has done it! We have summarized The Great Gatsby!
(上述内容翻译以下:在最后一句中,黛西告诉盖茨比她爱他,但她的丈夫汤姆·布坎南看到了这一切。这个句子描述了盖茨比、黛西和汤姆三人之间复杂的关系。在第四句中,咱们看到盖茨比想带黛西参观他的房子,他相信黛西在看到他如今的富有与成功以后,会愿意和他在一块儿。这一点反映了盖茨比为了用如今的成功来掩盖本身的过去而进行的斗争,而这正是小说的中心主题。而且,咱们第一句就抓住了盖茨比进行自我介绍的标志性时刻。咱们的模型成功了!咱们成功总结了《了不得的盖茨比》!)
来源:《了不得的盖茨比》华纳兄弟2013
分析是如何得出这般总结的呢?其中的方法再简单不过,只须要跳过、跳过、再跳过。但根据以前的数据,是毫不会得出上述结果的。由于咱们的方法是十分强大的,分析是通过深思熟虑的。可是上述结论的得出也因为引入了不少外部知识。
强调这一点并非为失败开脱,而是要认识到这种方法的局限性。咱们能够合理地得出结论,即盖茨比、黛西和汤姆是相关的人物,且盖茨比和黛西之间存在着某种关系。的确,咱们找到了一些关键点,但还远远不能得出一个完整的总结。
固然,咱们能够经过一些方式来改进方法,主要是围绕如何肯定句子类似性。好比,可使用TF*IDF公式来计算句子中哪些单词是最相关的,并对它们进行相应的加权。以及,在计算余弦类似度时,不要只考虑严格的相等性,也要考虑词义类似但拼写不一样的单词(例如,高兴和兴高采烈)。若是想更大胆一点,还可使用先进的主题模型,如隐含狄利克雷分布模型(LDA)。
自动总结分为两个主要领域—提取方法和抽象方法。以上所讨论的一切都使用的是提取方法,即试图从文本自己中提取相关信息。但这种方法产生出来的摘要是不尽人意的,没有人会这么写。人类的思考方式是,先理清概念,再概括总结,再考虑模式,最后产出结果。这是一种抽象的方法。为此,咱们须要运用计算机科学中最流行的一个概念:深度神经网络。
代码传送门:https://github.com/andrewjoliver/NLPSummarization/tree/master/src
众所周知,清理数据和计算邻接矩阵是须要必定时间的,但若是使用Jupyter笔记本,则能一次性快速运行。而且,其方法的定义及代码结构都与这篇文章所讲到的相似,所以理解起来也相对容易。
留言 点赞 关注
咱们一块儿分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”
(添加小编微信:dxsxbb,加入读者圈,一块儿讨论最新鲜的人工智能科技哦~)