赞
踩
1、文本摘要提取
文本摘要可以大致分为两类——抽取型摘要和抽象型摘要:
这里我们使用的Textrank算法就是抽取型摘要。
2、PageRank原理
谷歌的两位创始人的佩奇和布林,借鉴了学术界评判学术论文重要性的通用方法,“那就是看论文的引用次数”。由此想到网页的重要性也可以根据这种方法来评价。
PageRank算法也是基于图的,每个网页可以看作是一个图中的结点,如果网页A能够跳转到网页B,那么则有一条A->B的有向边。这样,我们就可以构造出一个有向图了。
利用公式:
经过多次迭代就可以获得每个网页对应的权重。下面解释公式每个元素的含义:
3、TextRank原理
这里和PageRank算法一样,不过是将网页换成句子、词汇、字,吸取n-gram算法的精髓,我们只建立某个词和前后n个词之间的联系。简单来说,某个单词,只与它附近的n个单词有关,即与它附近的n个词对应的结点连一条无向边(两个有向边),除此之外还可删除某些词性的词、停用词、自定义的一些词
如下是一篇文章的TextRank结果:
构图成功即可使用上述公式求解
论文中计算两个句子相似度的公式如下:
其他计算相似度的方法应该也是可行的,比如余弦相似度,最长公共子序列之类的,不过论文里一笔带过了。这里使用log我觉得是希望分母变小,相似度增大便于比较,由于使用了带权的边,因此参考PageRank的公式也要进行相应的修改,具体公式如下:
对比于 下面PageRank的公式,这里TextRank添加了权值参数也是可以理解的
最后说明TextRank不需要训练,直接使用数据即可,但是我觉得训练其实在切词等之前的准备工作中就完成了,具体可做如下工作:
评价体系是rouge,rouge是根据召回率改的,就是多少正确结果被找出来了,这里也就是:
以下是 rouge 的计算方法:
4、基于TextRank的关键词提取代码实现
代码API讲解:
基本思想:
- s = "此外,公司拟对全资子公司吉林欧亚置业有限公司增资4.3亿元,增资后,吉林欧亚置业注册资本由7000万元增加到5亿元。吉林欧亚置业主要经营范围为房地产开发及百货零售等业务。目前在建吉林欧亚城市商业综合体项目。2013年,实现营业收入0万元,实现净利润-139.13万元。"
- print('='*40+'\n'+' TextRank'+'\n'+'-'*40)
-
- for x, w in jieba.analyse.textrank(s, topK= 5, withWeight=True):
- print('%s %s' % (x, w))
-
- """
- 吉林 1.0
- 欧亚 0.9966893354178172
- 置业 0.6434360313092776
- 实现 0.5898606692859626
- 收入 0.43677859947991454
- """
5、词性标注
jieba.posseg.POSTokenizer(tokenizer=None)
新建自定义分词器,tokenizer
参数可指定内部使用的 jieba.Tokenizer
分词器。jieba.posseg.dt
为默认词性标注分词器。- import jieba.posseg
-
- print('='*40+'\n'+'4. 词性标注'+'\n'+'-'*40)
-
- words = jieba.posseg.cut("我是真的爱北京天安门")
- for word, flag in words:
- print('%s %s' % (word, flag))
-
- """
- 我 r
- 是 v
- 真的 d
- 爱 v
- 北京 ns
- 天安门 ns
- # 这里不完全兼容ictclas,因为是在ictclas中标注为vshi
- """
6、并行分词
jieba.enable_parallel(4)
# 开启并行分词模式,参数为并行进程数jieba.disable_parallel()
# 关闭并行分词模式jieba.dt
和 jieba.posseg.dt
。7、剩余功能包括返回分词在原句中的起始位置、命令行分词、搜索引擎三个功能不介绍了,如有需求自行查看https://github.com/fxsjy/jieba
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。