点击上方关注,All in AI中国
《了不起的盖茨比》是一部引人入胜且令人兴奋的文学作品。它的中心主题贯穿整本小说,其中谈论到了社会和阶级、财富和地位,现在和过去的主题。
在本文中,我们将使用自然语言处理(NLP)中的一些方法来总结TGG。 NLP是人工智能和机器学习的子领域,分析计算机如何处理和理解有机通信方法(例如书面语言)。虽然这些流行语可能令人生畏,但潜在的概念却并非如此。
清洁和聚合TGG
在我们做任何总结之前,我们需要实际掌握这本书。我们从Project Gutenberg Australia提供的副本开始。首先,我们需要删除停用词,比如,“在”、“面”、“也”、“的”、“它”、“为”等词。这些词是创建格式良好的句子所必需的,但它们不会增加容易辨别的含义,并且它们可以扭曲词频分析,我们将在这里使用停用词列表。其次,我们将TGG分解为(键、值)对的映射。我们地图中的键将是完整的句子(带有停用词和所有内容),值将是表示句子的清理版本的数组。
马可夫链与余弦相似
对于那些不熟悉图论的人来说,它非常简单。基本图有两部分:节点和边。节点代表人、电话号码或城市等真实世界的概念。边是两个节点之间的连接,图表的一个常见示例是Facebook,节点将是Facebook用户。如果这两个Facebook用户是朋友,那么两个节点之间会有一个边。
出于我们的目的,我们将把TGG表示为一个图表,我们每个句子都有一个节点,并且两个节点之间将具有等于其句子相似性的边缘(我们将在一秒钟内得到它)。但是,在此之前,为什么这种表述有帮助?
这允许我们将TGG表示为马尔可夫链。马尔可夫链是一种概率模型,通过定义从一种状态转换到另一种状态的概率来描述状态序列。
假设我想用马尔可夫链表示驾驶的地方。只标记我只开车往返的4个地方:家、工作、商店和健身房。对于每个可能的位置,我有可能开车到不同的位置。这在下面会以图形方式说明。如果节点未连接,则概率为0%。在下图中,我发现我从未在没有先回家的情况下在商店和健身房之间开车。
我们可以使用这个马尔可夫链来找到我将在任何给定位置的平稳概率。在上图中,直觉上我很可能在任何给定时间都在家。这是因为有很多节点以很高的概率指向家庭。
现在,回到盖茨比!让我们将两个句子之间的转移概率定义为等于两个句子之间的余弦相似度。然后我们将找到马尔可夫链的平稳概率分布。具有最高静止概率的句子是在我们的图中连接最紧密的节点。在下面的示例中,节点A可能具有最高的静止概率。
高度连接的节点将具有高静止概率。这些节点应该表示关键主题的摘要,因为这些节点与许多其他句子最相关。但是,在我们超越自己之前,我们需要定义余弦相似度。
假设我们有两句话 - “杰克和吉尔上山”和“吉尔和杰克跑下山”。余弦相似性将这些句子视为单词的向量,并使用下面的公式度量它们的重叠。余弦相似度计算两个单词向量的点积,并将其除以每个向量大小的乘积。
现在我们都准备好了。我们将把图表表示为矩阵。索引(X,Y)处的值将是句子X和句子Y之间的余弦相似度。该值是句子X和句子Y之间的转换概率。我们将使用这些转移概率来找到每个节点的平稳概率。
在马尔可夫链中找到平稳概率相对简单。我们可以重复地将转移概率矩阵乘以它们直到达到一个稳定的状态 - 当所有转移概率都收敛到单个值时,一个更有效的解决方案是使用左特征向量。
既然我们有一个稳态,我们可以寻找最高的概率,具有最高稳态概率的句子在下面。
“我是盖茨比,”他突然说道。
“你们两个回家吧,黛西,”汤姆表示, “在盖茨比先生的车里。”
“我告诉过你我去了那里,”盖茨比说。
“我希望你和黛西过来我家,”他说,“我想带她去看看。”
她告诉他,她爱他,汤姆布坎南看到了。他很震惊,他的嘴张开了一点,他看着盖茨比,然后又回头看了看黛西,好像他刚刚认出她是他很久以前就知道的那个人。
现在,数据科学中最有趣的部分来了,得出我们的数据不支持的结论。我们来评估下面的摘要。
在我们的最后一句话中,黛西告诉盖茨比她爱他,而她的丈夫汤姆布坎南看到了。这句话捕捉了盖茨比、黛西和汤姆之间复杂的关系。在我们的第四句中,我们看到盖茨比希望在他的房子周围展示黛西。如果黛西看到他现在变得富有并且成功,他会相信黛西会想和他在一起。这抓住了盖茨比以他目前的成功来掩盖他过去的挣扎,这是小说的核心主题。我们的第一句话抓住了盖茨比自我介绍的标志性时刻。我们的模型已经做到了!我们总结了“了不起的盖茨比”!
从我们的分析到上一段,有一种简单的方法。它只需要一次跳跃,一次跳跃和再一次跳跃。我们的数据绝不意味着上述情况,我们的方法很强大,分析也很周到。但是我引入了很多外部知识才得出上面的结论。
我们强调这一点不是要改变这种方法,而是要认识到我们方法的局限性。我们可以合理地推断:盖茨比、黛西和汤姆是相关人物,盖茨比和黛西之间存在某种关系。我们当然找到了一些关键的想法,但我们还远远没有形成一个完整的总结。
期待
我们当然可以采取一些措施来改进我们的方法,主要围绕句子相似性的确定。我们可以使用TF * IDF查看哪个单词在一个句子中最相关,并相应地加权。在度量余弦相似度时,我们不需要仅考虑严格的相等性。我们可以考虑意义有相似但在拼写上不相似的词(例如快乐和兴高采烈)。如果我们想要更加激烈,我们可以使用Latent Dirichlet Allocation(LDA)等高级主题模型。
自动摘要分为两个主要领域 - 提取方法和抽象方法。我们在这里谈到的一切都是一种提取方法。我们正试图从文本本身中提取相关信息。但是,没有人会像这样编写一个提取摘要。人类接受概念、概括它们、考虑模式并产生结果。这是一种抽象方法。
代码
对于那些感兴趣的人,可以在这里NLPSummarization/src at master · andrewjoliver/NLPSummarization · GitHub找到运行它所需的所有代码。有Python代码和Jupyter笔记本。清理数据和计算邻接矩阵确实需要一点时间。使用Jupyter Notebook,您只需运行一次这些方法。方法定义和代码结构与本文相似,因此很容易遵循。