大数据搜索引擎原理分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.9 文档核心句提取

文档核心句又称为文档中心句。提取文档核心句,是为了提升用户体验而设计的。在用户搜索过程中,难免会遇到用户搜索的关键词只在标题中出现,而不在内容中出现的情况。此时,如果系统能够自动将文档核心句提取出来并展示给用户,使得用户能在最短的时间内大致了解文章需要表达的内容,则将会提升用户的搜索体验。

从技术的角度来讲,文档核心句是从文档中自动提取的关键句。在3.7节中对文档关键词的提取有详细介绍。从工程应用的角度来看,有两种方法可以实现文档核心句的提取。第一种是最容易想到的方法,即基于3.7节中已经获取到的所有关键词在文档中的权重,利用均值处理方式计算某一句包含的关键词平均权重最大。此种方法最简单,但仅在较短的文章中有较好的效果,随着文本内容量的增加,效果将会不断衰减。

为了使对任何长文本和短文本的处理达到较好的一致效果,借助3.7节关于TextRank算法的思想,将对词语权值的计算演进为对句子权值的计算,这种计算方式也可以达到很好的效果。借鉴TextRank公式,句子权值的计算公式如下所示:

在关键词计算中以词语作为单位进行计算,而在文档摘要中则以句子为单位进行计算。Tji表示两个句子的关系紧密程度,TS(Vj)表示上次迭代的第j个句子权值。计算两个句子的关系紧密程度,可以参考3.7节中介绍的基于TF-IDF及余弦相似性进行相似度计算,或者通过句子关键词共有数量确定,两者在本质上是一样的。

我们通过下面的示例来理解句子权值的计算方法。例如,对下面这段内容分析其中的核心句。

中国对南海及南沙群岛拥有无可争辩的主权。中国在南海的主权和相关权利是在长期的历史过程中形成的,为历代中国政府所坚持。中方在自己的领土上开展建设,是主权范围内的事,不针对、不影响任何国家。各国也依国际法在南海享有航行和飞越自由。南海的航行自由没有问题,这也是铁的事实。

(1)进行断句预处理。将段落中的文本按照句号、感叹号等分隔符切分为单个独立句子。如表3-34所示为进行断句预处理后的语句,因此,段落的核心句也将会从这5个句子中产生。

表3-34 进行断句预处理后的语句

(2)对每个句子进行分词及词性标注处理,并过滤掉停用词及部分词性无关词汇,再利用TextRank计算每个句子中词语的权重,并筛选出每个句子中词语权值由高到低排序的前3个关键词,选取后的关键词如表3-35所示。

表3-35 计算每个句子中的关键词结果

(3)通过关键词计算句子之间的关系紧密程度,以相同的关键词数量作为紧密值。例如,句子A和句子B中共有关键词“南海”,则紧密值为1。最终句子之间的关系紧密程度如表3-36所示。

表3-36 句子之间的关系紧密程度

与TextRank计算采用同样的方法,句子之间相互“投票”,将句子ABCDE的初始权值设定为1,不断进行迭代计算并将结果进行归一化处理,结果如表3-37所示。

表3-37 对句子关系进行迭代计算与归一化处理的结果

根据表3-37可知,最终确定段落的核心句为第一句“中国对南海及南沙群岛拥有无可争辩的主权”,最不重要的句子是“中方在自己的领土上开展建设,是主权范围内的事,不针对、不影响任何国家”。从上面的例子中也可以看出,其实文档的核心句并不一定是最长的句子。不难看出,基于TextRank算法衍生的句子权重算法将句子之间的紧密关系以共同拥有的关键词作为衡量,从而将关系紧密程度转变为句子之间的相互影响力,最终通过句子之间不断迭代投票的方式选出核心句。上述过程中计算句子之间的关系紧密程度也可以采用句子相似度的方法。