使用TextRank算法为文本生成关键字和摘要
2016-12-23 09:23
429 查看
使用TextRank算法为文本生成关键字和摘要
TextRank算法基于PageRank,用于为文本生成关键字和摘要。其论文是:
Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004.
构造完图后,使用下面的公式:
S(Vi)=(1−d)+d∗∑j∈In(Vi)1∣Out(Vj)∣S(Vj)
S(Vi)是网页i的重要性(PR值)。d是阻尼系数,一般设置为0.85。In(Vi)是存在指向网页i的链接的网页集合。Out(Vj)是网页j中的链接存在的链接指向的网页集合。midOut(Vj)∣是集合中元素的个数。
PageRank需要使用上面的公式多次迭代才能得到结果。初始时,可以设置每个网页的重要性为1。上面公式等号左边计算的结果是迭代后网页i的PR值,等号右边用到的PR值全是迭代前的。
举个例子:
两个词汇单元之间的任何关系都能够被定义为是潜在的有用连接(edge),这个连接可以添加到两个顶点之间。我们使用同现的关系来控制词之间出现的距离:如果在一个最大的窗口N个单词里两个相关的词汇同现,那么这两个顶点是连接的,N可以被设置为2-10的任何值。同现连接表示在句法联系之间的关系,同样的,发现语义的连接对处理词之间的模棱两可有帮助,他们代表对一个给定文本的结合度。
将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的单词(可选)。由此可以得到句子的集合和单词的集合。
textrank关键词抽取算法完全是无监督的,整个过程如下。首先,将文本进行标记,和注释部分演说标签——一个必须的预处理步骤使得句法滤波器能够应用。为了避免图的大小长的太厉害,我们通过增加所有可能的超过一个词汇单元(ngrams)组成的系列连接,我们仅仅考虑单一的词作为添加到图的候选者,对于多词的关键字最后需要重构。
接下来,所有的通过句法滤波器的词汇单元添加到图里,同样增加边在这些同时出现在一个窗口大小里的单词词汇单元之间。在这个图构建完毕之后(无向无权图),每个顶点的得分设置为1,排序算法在第二部分描述过了,公式如下:
S(Vi)=(1−d)+d∗∑j∈In(Vi)1∣Out(Vj)∣S(Vj)
排序算法在这个图里迭代几次直到收敛-通常需要20--30次迭代,阈值设为0.0001。
一但获得图里每一个顶点的最终得分,将对顶点进行降序排序,排名top T的顶点保留下来进一步处理。T可以设置为任意固定值,通常设置为5到20个关键词用来限制关键词的数量,我们有更灵活的办法,决定关键词的数量基于文本的大小。
在进一步处理中,所有选出来的词汇都作为潜在的关键词,之后系列将组成多词的关键词。例如:Matlab code for plotting ambi-guity functions。如何通过textrank排序算法把MATLAB和code都选出来了,那么唯一的关键词将是MATLAB code。
每个单词作为pagerank中的一个节点。设定窗口大小为kk,假设一个句子依次由下面的单词组成:
w1,w2,w3,w4,w5,…,wnw1,w2,w3,w4,w5,…,wn
[w1,w2,…,wkw1,w2,…,wk]、[w2,w3,…,wk+1w2,w3,…,wk+1]、[w3,w4,…,wk+2w3,w4,…,wk+2]等都是一个窗口。在一个窗口中的任两个单词对应的节点之间存在一个无向无权的边。
基于上面构成图,可以计算出每个单词节点的重要性。最重要的若干单词可以作为关键词。
例如,在一篇介绍“支持向量机”的文章中,可以找到三个关键词支持、向量、机,通过关键短语提取,可以得到支持向量机。
使用TextRank提取摘要
将每个句子看成图中的一个节点,若两个句子之间有相似性,认为对应的两个节点之间有一个无向有权边,权值是相似度。
通过pagerank算法计算得到的重要性最高的若干句子可以当作摘要。
论文中使用下面的公式计算两个句子Si和Sj的相似度:
Similarity(Si,Sj)=∣wk∣wk∈Si⋂wk∈Sj∣log(∣Si∣)+log(∣Sj∣)
S(Vi)=(1−d)+d∗∑j∈In(Vi)1∣Out(Vj)∣S(Vj)
这个方法不好,改为余弦相似性。
分子是在两个句子中都出现的单词的数量。|Si|是句子i的单词数。
由于是有权图,这里相似度作为两条边的权值,PageRank公式略做修改:
WS(Vi)=(1−d)+d∗∑Vj∈In(Vi)wji∑Vk∈Out(V)jwjkWS(Vj)
TextRank算法基于PageRank,用于为文本生成关键字和摘要。其论文是:
Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004.
先从PageRank讲起
PageRank最开始用来计算网页的重要性。整个www可以看作一张有向图图,节点是网页。如果网页A存在到网页B的链接,那么有一条从网页A指向网页B的有向边。构造完图后,使用下面的公式:
S(Vi)=(1−d)+d∗∑j∈In(Vi)1∣Out(Vj)∣S(Vj)
S(Vi)是网页i的重要性(PR值)。d是阻尼系数,一般设置为0.85。In(Vi)是存在指向网页i的链接的网页集合。Out(Vj)是网页j中的链接存在的链接指向的网页集合。midOut(Vj)∣是集合中元素的个数。
PageRank需要使用上面的公式多次迭代才能得到结果。初始时,可以设置每个网页的重要性为1。上面公式等号左边计算的结果是迭代后网页i的PR值,等号右边用到的PR值全是迭代前的。
举个例子:
3使用TextRank提取关键字
3.1 TextRank for Keyword Extraction两个词汇单元之间的任何关系都能够被定义为是潜在的有用连接(edge),这个连接可以添加到两个顶点之间。我们使用同现的关系来控制词之间出现的距离:如果在一个最大的窗口N个单词里两个相关的词汇同现,那么这两个顶点是连接的,N可以被设置为2-10的任何值。同现连接表示在句法联系之间的关系,同样的,发现语义的连接对处理词之间的模棱两可有帮助,他们代表对一个给定文本的结合度。
将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的单词(可选)。由此可以得到句子的集合和单词的集合。
textrank关键词抽取算法完全是无监督的,整个过程如下。首先,将文本进行标记,和注释部分演说标签——一个必须的预处理步骤使得句法滤波器能够应用。为了避免图的大小长的太厉害,我们通过增加所有可能的超过一个词汇单元(ngrams)组成的系列连接,我们仅仅考虑单一的词作为添加到图的候选者,对于多词的关键字最后需要重构。
接下来,所有的通过句法滤波器的词汇单元添加到图里,同样增加边在这些同时出现在一个窗口大小里的单词词汇单元之间。在这个图构建完毕之后(无向无权图),每个顶点的得分设置为1,排序算法在第二部分描述过了,公式如下:
S(Vi)=(1−d)+d∗∑j∈In(Vi)1∣Out(Vj)∣S(Vj)
排序算法在这个图里迭代几次直到收敛-通常需要20--30次迭代,阈值设为0.0001。
一但获得图里每一个顶点的最终得分,将对顶点进行降序排序,排名top T的顶点保留下来进一步处理。T可以设置为任意固定值,通常设置为5到20个关键词用来限制关键词的数量,我们有更灵活的办法,决定关键词的数量基于文本的大小。
在进一步处理中,所有选出来的词汇都作为潜在的关键词,之后系列将组成多词的关键词。例如:Matlab code for plotting ambi-guity functions。如何通过textrank排序算法把MATLAB和code都选出来了,那么唯一的关键词将是MATLAB code。
每个单词作为pagerank中的一个节点。设定窗口大小为kk,假设一个句子依次由下面的单词组成:
w1,w2,w3,w4,w5,…,wnw1,w2,w3,w4,w5,…,wn
[w1,w2,…,wkw1,w2,…,wk]、[w2,w3,…,wk+1w2,w3,…,wk+1]、[w3,w4,…,wk+2w3,w4,…,wk+2]等都是一个窗口。在一个窗口中的任两个单词对应的节点之间存在一个无向无权的边。
基于上面构成图,可以计算出每个单词节点的重要性。最重要的若干单词可以作为关键词。
使用TextRank提取关键短语
参照“使用TextRank提取关键词”提取出若干关键词。若原文本中存在若干个关键词相邻的情况,那么这些关键词可以构成一个关键短语。例如,在一篇介绍“支持向量机”的文章中,可以找到三个关键词支持、向量、机,通过关键短语提取,可以得到支持向量机。
使用TextRank提取摘要
将每个句子看成图中的一个节点,若两个句子之间有相似性,认为对应的两个节点之间有一个无向有权边,权值是相似度。
通过pagerank算法计算得到的重要性最高的若干句子可以当作摘要。
论文中使用下面的公式计算两个句子Si和Sj的相似度:
Similarity(Si,Sj)=∣wk∣wk∈Si⋂wk∈Sj∣log(∣Si∣)+log(∣Sj∣)
S(Vi)=(1−d)+d∗∑j∈In(Vi)1∣Out(Vj)∣S(Vj)
这个方法不好,改为余弦相似性。
分子是在两个句子中都出现的单词的数量。|Si|是句子i的单词数。
由于是有权图,这里相似度作为两条边的权值,PageRank公式略做修改:
WS(Vi)=(1−d)+d∗∑Vj∈In(Vi)wji∑Vk∈Out(V)jwjkWS(Vj)
相关文章推荐
- 使用TextRank算法为文本生成关键字和摘要
- 使用TextRank算法为文本生成关键字和摘要
- 使用TextRank算法为文本生成关键字和摘要
- 使用TextRank算法为文本生成关键字和摘要
- TextRank算法为文本生成关键字和摘要
- 使用TextRank生成文本摘要
- 【FastDev4Android框架开发】列表头生成带文本或者字母的图片开源库TextDrawable使用和详解(二十二)
- 使用正则表达式自动为文本中的url地址生成链接
- 使用位图文本工具BMFont从图片生成自定义字体
- mssql 使用数据库代码直接生成文本记录
- TensorFlow文本摘要生成 - 基于注意力的序列到序列模型
- 基本上包含了Foudation框架内的所有函数和方法。 使用方法:全选,自己建一个文本类的文件,如果要使用某个方法却想不起来方法名,直接在文本中搜索关键字即可。
- 黄聪:C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(转载)
- TensorFlow 自动文本摘要生成模型,2016
- 使用shiro的SimpleHash来生成常用的摘要串
- hibernate生成表时候,注意不能使用mysql关键字和保留字(比如order)
- 使用Word Embedding构造简洁有效的文本摘要系统
- 自定义RFS关键字库中的关键字(使用python随机生成身份证号码)
- 黄聪:C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名
- DedeCms采集没有自动生成摘要和关键字的解决办法