HanLP《自然语言处理入门》笔记--9.关键词、关键句和短语提取

本文介绍了信息抽取的无监督学习方法,包括新词、关键词、短语和关键句的提取。重点讲解了信息熵和互信息在新词提取中的作用,以及词频、TF-IDF和TextRank在关键词提取中的应用。此外,还探讨了短语提取和关键句提取的算法,如基于BM25和TextRank的改进方法。
摘要由CSDN通过智能技术生成

笔记转载于GitHub项目https://github.com/NLP-LOVE/Introduction-NLP

9. 信息抽取

信息抽取是一个宽泛的概念,指的是从非结构化文本中提取结构化信息的一类技术。这类技术依然分为基于规则的正则匹配、有监督学习和无监督学习等各种实现方法。我们将使用一些简单实用的无监督学习方法。由于不需要标注语料库,所以可以利用海量的非结构化文本。

本章按照颗粒度从小到大的顺序,介绍抽取新词、关键词、关键短语和关键句的无监督学习方法。

9.1 新词提取

  1. 概述

    新词是一个相对的概念,每个人的标准都不一样,所以我们这里定义: 词典之外的词语(OOV)称作新词

    新词的提取对中文分词而言具有重要的意义,因为语料库的标注成本很高。那么如何修订领域词典呢,此时,无监督的新词提取算法就体现了现实意义。

  2. 基本原理

    • 提取出大量文本(生语料)中的词语,无论新旧。
    • 用词典过滤掉已有的词语,于是得到新词。

    步骤 2 很容易,关键是步骤 1,如何无监督的提取出文本中的单词。给定一段文本,随机取一个片段,如果这个片段左右的搭配很丰富,并且片段内部成分搭配很固定,则可以认为这是一个词。将这样的片段筛选出来,按照频次由高到低排序,排在前面的有很高概率是词。

    如果文本足够大,再用通用的词典过滤掉“旧词”,就可以得到“新词”。

    片段外部左右搭配的丰富程度,可以用信息熵来衡量,而片段内部搭配的固定程度可以用子序列的互信息来衡量。

  3. 信息熵

    在信息论中,信息熵( entropy )指的是某条消息所含的信息量。它反映的是听说某个消息之后,关于该事件的不确定性的减少量。比如抛硬币之前,我们不知道“硬币正反”这个事件的结果。但是一旦有人告诉我们“硬币是正面”这条消息,我们对该次抛硬币事件的不确定性立即降为零,这种不确定性的减小量就是信息熵。公式如下:
    H ( X ) = − ∑ x p ( x ) log ⁡ p ( x ) H(X)=-\sum_{x} p(x) \log p(x) H(X)=xp(x)logp(x)
    给定字符串 S 作为词语备选,X 定义为该字符串左边可能出现的字符(左邻字),则称 H(X) 为 S 的左信息熵,类似的,定义右信息熵 H(Y),例如下列句子:

    两只蝴蝶飞啊飞

    这些蝴蝶飞走了

    那么对于字符串蝴蝶,它的左信息熵为1,而右信息熵为0。因为生语料库中蝴蝶的右邻字一定是飞。假如我们再收集一些句子,比如“蝴蝶效应”“蝴蝶蜕变”之类,就会观察到右信息熵会增大不少。

    左右信息熵越大,说明字符串可能的搭配就越丰富,该字符串就是一个词的可能性就越大。

    光考虑左右信息熵是不够的,比如“吃了一顿”“看了一遍”“睡了一晚”“去了一趟”中的了一的左右搭配也很丰富。为了更好的效果,我们还必须考虑词语内部片段的凝聚程度,这种凝聚程度由互信息衡量。

  4. 互信息

    互信息指的是两个离散型随机变量 X 与 Y 相关程度的度量,定义如下:
    I ( X ; Y ) = ∑ x , y p ( x , y ) log ⁡ p ( x , y ) p ( x ) p ( y ) = E p ( x , y ) log ⁡ p ( x , y ) p ( x ) p ( y ) \begin{aligned} I(X ; Y) &=\sum_{x, y} p(x, y) \log \frac{p(x, y)}{p(x) p(y)} \\ &=E_{p(x, y)} \log \frac{p(x, y)}{p(x) p(y)} \end{aligned} I(X;Y)=x,yp(x,y)logp(x)p(y)p(x,y)=Ep(x,y)logp(x)p(y)p(x,y)
    互信息的定义可以用韦恩图直观表达:

    其中,左圆圈表示H(X),右圆圈表示H(Y)。它们的并集是联合分布的信息熵H(X,Y),差集有多件嫡,交集就是互信息。可见互信息越大,两个随机变量的关联就越密切,或者说同时发生的可能性越大。

    片段可能有多种组合方式,计算上可以选取所有组合方式中互信息最小的那一种为代表。有了左右信息熵和互信息之后,将两个指标低于一定阈值的片段过滤掉,剩下的片段按频次降序排序,截取最高频次的 N 个片段即完成了词语提取流程。

  5. 实现

    我们用四大名著来提起100个高频词。

    代码请见(语料库自动下载): extract_word.py

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值