Py之textrank4zh:textrank4zh的简介、安装、使用方法之详细攻略

简介: Py之textrank4zh:textrank4zh的简介、安装、使用方法之详细攻略

textrank4zh的简介


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



原理


TextRank的详细原理请参考:


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


关于TextRank4ZH的原理和使用介绍:使用TextRank算法为文本生成关键字和摘要




关键词提取


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


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


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

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


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




关键短语提取


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


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




摘要生成


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


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




textrank4zh的安装


pip install textrank4zh==0.3

pip install textrank4zh

image.png



textrank4zh的使用方法


1、测试

#-*- 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是权重


相关文章
|
机器学习/深度学习 自然语言处理 算法
【文本摘要(1)】抽取式之textrank(无监督学习):生成200字以内摘要
【文本摘要(1)】抽取式之textrank(无监督学习):生成200字以内摘要
486 0
|
开发工具 git Windows
文件过大无法git pull/git clone解决办法
由于公司无线限速, windows下拉代码会比较慢, 导致过大的仓库无法clone/pull下来, 可以尝试以下方法, 将一次拉取的size缩小, 然后再fetch 效率云中代码库过大时, 会有限制, 出现无法pull或者clone的情况, 如下图 首先以shallow模式克隆 例如:  git clone http://gaoyuan03_iwaimai.
6727 0
|
2月前
|
机器学习/深度学习 缓存 自然语言处理
11_文本总结实战:用LLM浓缩长文章
在信息爆炸的时代,面对海量的长文本内容,如何高效地提取核心信息成为一项关键技能。文本摘要作为自然语言处理(NLP)中的重要任务,能够将冗长的文本压缩为保留核心信息的简短摘要,极大地提高了信息获取和处理的效率。随着大语言模型(LLM)技术的快速发展,特别是基于Transformer架构的模型如BART的出现,文本摘要技术取得了突破性进展。
|
6月前
|
安全 Shell 测试技术
安卓硬改一键新机,一键新机改串软件,免ROOT网卡串号Imei/sn码
本内容提供移动安全研究相关资料与方法,包括通过Android Studio官方工具和模拟器进行设备测试、ADB调试命令学习
|
测试技术
如何使用 JUnit 测试方法是否存在异常
【8月更文挑战第22天】
600 0
|
IDE 开发工具 开发者
Python函数说明文档:编写清晰易懂的文档字符串
Python函数说明文档:编写清晰易懂的文档字符串
349 1
|
搜索推荐 Java 应用服务中间件
【solr】安装和使用
【solr】安装和使用
218 1
|
缓存 网络协议 前端开发
45 张图深度解析 Netty 架构与原理(一)
作为一个学 Java 的,如果没有研究过 Netty,那么你对 Java 语言的使用和理解仅仅停留在表面水平,会点 SSH 写几个 MVC,访问数据库和缓存,这些只是初等 Java 程序员干的事。如果你要进阶,想了解 Java 服务器的深层高阶知识,Netty 绝对是一个必须要过的门槛。 接下来我们会学习一个 Netty 系列教程,Netty 系列由「架构与原理」,「源码」,「架构」三部分组成,今天我们先来看看第一部分:Netty 架构与原理初探,大纲如下:
1084 0
45 张图深度解析 Netty 架构与原理(一)
|
存储 SQL 缓存
一看就会的Next.js App Router版 -- Routing(上)(一)
一看就会的Next.js App Router版 -- Routing
1406 1
|
网络协议 安全
Bing搜索没法用的解决办法(附Google和edge的详细解决步骤)
Bing搜索没法用的解决办法(附Google和edge的详细解决步骤)
6214 0
Bing搜索没法用的解决办法(附Google和edge的详细解决步骤)