TextRank4ZH

TextRank算法可以用来从文本中提取关键词和摘要(重要的句子)。TextRank4ZH是针对中文文本的TextRank算法的python算法实现。

安装

方式1:

$ python setup.py install --user

方式2:

$ sudo python setup.py install

方式3:

$ pip install textrank4zh --user

方式4:

$ sudo pip install textrank4zh

Python 3下需要将上面的python改成python3,pip改成pip3。

卸载

$ pip uninstall textrank4zh

依赖

jieba >= 0.35

numpy >= 1.7.1

networkx >= 1.9.1

兼容性

在Python 2.7.9和Python 3.4.3中测试通过。

原理

TextRank的详细原理请参考:

Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004.

关键词提取

将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的单词(可选)。由此可以得到句子的集合和单词的集合。

每个单词作为pagerank中的一个节点。设定窗口大小为k,假设一个句子依次由下面的单词组成:

w1, w2, w3, w4, w5, ..., wn

w1, w2, ..., wk、w2, w3, ...,wk+1、w3, w4, ...,wk+2等都是一个窗口。在一个窗口中的任两个单词对应的节点之间存在一个无向无权的边。

基于上面构成图,可以计算出每个单词节点的重要性。最重要的若干单词可以作为关键词。

关键短语提取

参照关键词提取提取出若干关键词。若原文本中存在若干个关键词相邻的情况,那么这些关键词可以构成一个关键词组。

例如,在一篇介绍支持向量机的文章中,可以找到关键词支持、向量、机,通过关键词组提取,可以得到支持向量机。

摘要生成

将每个句子看成图中的一个节点,若两个句子之间有相似性,认为对应的两个节点之间有一个无向有权边,权值是相似度。

通过pagerank算法计算得到的重要性最高的若干句子可以当作摘要。

示例

example/example01.py:

#-*- encoding:utf-8 -*-

from __future__ import print_function

import sys

try:

reload(sys)

sys.setdefaultencoding('utf-8')

except:

pass

import codecs

from textrank4zh import TextRank4Keyword, TextRank4Sentence

text = codecs.open('../test/doc/01.txt', 'r', 'utf-8').read()

tr4w = TextRank4Keyword()

tr4w.analyze(text=text, lower=True, window=2) # py2中text必须是utf8编码的str或者unicode对象,py3中必须是utf8编码的bytes或者str对象

print( '关键词:' )

for item in tr4w.get_keywords(20, word_min_len=1):

print(item.word, item.weight)

print()

print( '关键短语:' )

for phrase in tr4w.get_keyphrases(keywords_num=20, min_occur_num= 2):

print(phrase)

tr4s = TextRank4Sentence()

tr4s.analyze(text=text, lower=True, source = 'all_filters')

print()

print( '摘要:' )

for item in tr4s.get_key_sentences(num=3):

print(item.index, item.weight, item.sentence) # index是语句在文本中位置,weight是权重

运行结果如下:

关键词:

媒体 0.02155864734852778

高圆圆 0.020220281898126486

微 0.01671909730824073

宾客 0.014328439104001788

赵又廷 0.014035488254875914

答谢 0.013759845912857732

谢娜 0.013361244496632448

现身 0.012724133346018603

记者 0.01227742092899235

新人 0.01183128428494362

北京 0.011686712993089671

博 0.011447168887452668

展示 0.010889176260920504

捧场 0.010507502237123278

礼物 0.010447275379792245

张杰 0.009558332870902892

当晚 0.009137982757893915

戴 0.008915271161035208

酒店 0.00883521621207796

外套 0.008822082954131174

关键短语:

微博

摘要:

摘要:

0 0.0709719557171 中新网北京12月1日电(记者 张曦) 30日晚,高圆圆和赵又廷在京举行答谢宴,诸多明星现身捧场,其中包括张杰(微博)、谢娜(微博)夫妇、何炅(微博)、蔡康永(微博)、徐克、张凯丽、黄轩(微博)等

6 0.0541037236415 高圆圆身穿粉色外套,看到大批记者在场露出娇羞神色,赵又廷则戴着鸭舌帽,十分淡定,两人快步走进电梯,未接受媒体采访

27 0.0490428312984 记者了解到,出席高圆圆、赵又廷答谢宴的宾客近百人,其中不少都是女方的高中同学

使用说明

类TextRank4Keyword、TextRank4Sentence在处理一段文本时会将文本拆分成4种格式:

sentences:由句子组成的列表。

words_no_filter:对sentences中每个句子分词而得到的两级列表。

words_no_stop_words:去掉words_no_filter中的停止词而得到的二维列表。

words_all_filters:保留words_no_stop_words中指定词性的单词而得到的二维列表。

例如,对于:

这间酒店位于北京东三环,里面摆放很多雕塑,文艺气息十足。答谢宴于晚上8点开始。

#-*- encoding:utf-8 -*-

from __future__ import print_function

import codecs

from textrank4zh import TextRank4Keyword, TextRank4Sentence

import sys

try:

reload(sys)

sys.setdefaultencoding('utf-8')

except:

pass

text = "这间酒店位于北京东三环,里面摆放很多雕塑,文艺气息十足。答谢宴于晚上8点开始。"

tr4w = TextRank4Keyword()

tr4w.analyze(text=text, lower=True, window=2)

print()

print('sentences:')

for s in tr4w.sentences:

print(s) # py2中是unicode类型。py3中是str类型。

print()

print('words_no_filter')

for words in tr4w.words_no_filter:

print('/'.join(words)) # py2中是unicode类型。py3中是str类型。

print()

print('words_no_stop_words')

for words in tr4w.words_no_stop_words:

print('/'.join(words)) # py2中是unicode类型。py3中是str类型。

print()

print('words_all_filters')

for words in tr4w.words_all_filters:

print('/'.join(words)) # py2中是unicode类型。py3中是str类型。

运行结果如下:

sentences:

这间酒店位于北京东三环,里面摆放很多雕塑,文艺气息十足

答谢宴于晚上8点开始

words_no_filter

这/间/酒店/位于/北京/东三环/里面/摆放/很多/雕塑/文艺/气息/十足

答谢/宴于/晚上/8/点/开始

words_no_stop_words

间/酒店/位于/北京/东三环/里面/摆放/很多/雕塑/文艺/气息/十足

答谢/宴于/晚上/8/点

words_all_filters

酒店/位于/北京/东三环/摆放/雕塑/文艺/气息

答谢/宴于/晚上

API

TODO.

类的实现、函数的参数请参考源码注释。

License

textrank4zh是_GitHub - renxiaowei941015/TextRank4ZH: 从中文文本中自动提取关键词和摘要...相关推荐

  1. textrank4zh是_GitHub - 997666901/TextRank4ZH: 从中文文本中自动提取关键词和摘要

    TextRank4ZH TextRank算法可以用来从文本中提取关键词和摘要(重要的句子).TextRank4ZH是针对中文文本的TextRank算法的python算法实现. 安装 方式1: $ py ...

  2. TextRank算法可以用来从文本中提取关键词和摘要(重要的句子)

    源码和说明如下: https://github.com/liuluyeah/TextRank4ZH-master 转载于:https://blog.51cto.com/9283734/2092323

  3. python提取文本中的字符串到新的txt_Python实现jieba对文本分词并写入新的文本文件,然后提取出文本中的关键词...

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. Python实现jieba对文本分词并写入新的文本文件,然后提取出文本中的关键词思想 先对文本进行 ...

  4. 中文文本中的关键字提取算法总结

    0.关键词提取 定义:从文本中把与这篇文章意义最相关的一些词语抽取出来. 应用:在文献检索.自动文摘.文本聚类/分类等方面有着重要的应用,它不仅是进行这些工作不可或缺的基础和前提,也是互联网上信息建库 ...

  5. 统计中文文本中人物出现次数

      大家好,今天跟大家介绍一下如何统计文本中人物出现的次数? 共现关系 统计人物出现次数和人物关系输出到文件 一.共现关系:   在文献计量学中,关键词的共词方法常用来确定该文献集所代表学科中各主题之 ...

  6. python 去除英文或中文文本中标点和数字及指定字符串

    例一 from string import punctuation from string import digits import redef preprocess_English(text,rm_ ...

  7. 第03课:动手实战中文文本中的关键字提取

    前言 关键词提取就是从文本里面把跟这篇文章意义最相关的一些词语抽取出来.这个可以追溯到文献检索初期,关键词是为了文献标引工作,从报告.论文中选取出来用以表示全文主题内容信息的单词或术语,在现在的报告和 ...

  8. python 英文文本中的关键词提取

    python 英文关键词提取详细教程: https://opensourcelibs.com/lib/pytextrank # To install from PyPi: 慢就加镜像 -i pytho ...

  9. 中文文本相似度计算工具集

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 一.基本工具集 1.分词工具 a.jieba 结巴中文分词 htt ...

最新文章

  1. jdbc连接Oracle/MySQL数据库进行批量导入操作,如何提高效率???
  2. Learning Cocos2d-x for WP8(7)——让Sprite动起来
  3. POJ 1797 Heavy Transportation
  4. 拼音输入法功能大比拼
  5. win7装mysql一直未响应_求助啊 WIN7下安装mysql出问题 老是说未响应~!!
  6. discuz php源码,Discuz7 php源码,该如何解决
  7. 横空出世!IDEA画图神器来了,比Visio快10倍!
  8. Goland使用技巧
  9. ajax以base64上传图片到django
  10. 类、匿名类、静态、构造、单例
  11. html中图片动态效果代码,动态网页设计代码 网页制作动态图片效果源代码
  12. ORAN专题系列-20:5G O-RAN 通过TR-069协议实现一体化小基站的自动配置和安装
  13. 实现Excel实现下拉框选择对应的数据(数据验证)
  14. SPI - 相关类型及其扩展
  15. rknn模型转换问题记录
  16. 通过GCN来实现对Cora数据集节点的分类
  17. 中国自动浓咖啡机市场趋势报告、技术动态创新及市场预测
  18. Xrm.Utility.openEntityForm 时404.15 maxQueryString 错误 和 长度超过maxQueryStringLength值 错误
  19. DenseNet——密集连接的卷积神经网络
  20. suma++ TensorRT Not Found

热门文章

  1. python字符串中strip() 函数和 split() 函数的详解
  2. C语言strchr()函数(字符串中查找子字符)
  3. python continue语句的用法(跳过本次循环,不是跳出整个循环,break才是跳出整个循环)
  4. what does tf.no_op do and tf.control_dependencies work?
  5. Mocha and Hiking 模拟
  6. Elasticsearch Pipeline Aggregation管道聚合详解
  7. php sqlserver扩展,PHP---连接sqlserver扩展配置
  8. shiro登录认证过程讲解(转)
  9. spring boot 异常设计原理
  10. 打开表时提示 Out of resources when opening file......错误解决