TextRank4ZH 用于自动从中文文本中提取关键词和摘要,基于 TextRank 算法,使用 Python 编写。
TextRank 算法可以用来从文本中提取关键词和摘要(重要的句子)。TextRank4ZH是针对中文文本的TextRank算法的python算法实现。
本程序使用python 2.7测试没有问题,暂时不兼容python 3。
先确定已经有jieba、numpy、networkx这三个库。可以使用pip安装:
$ sudo pip install numpy $ sudo pip install jieba $ sudo pip install networkx
关于库版本,以下作为参考:
$ pip show jieba --- Name: jieba Version: 0.35 Location: /usr/local/lib/python2.7/dist-packages Requires: $ pip show numpy --- Name: numpy Version: 1.7.1 Location: /usr/lib/python2.7/dist-packages Requires: $ pip show networkx --- Name: networkx Version: 1.9.1 Location: /usr/local/lib/python2.7/dist-packages Requires: decorator
另外,请确保安装最新版本的jieba分词,TextRank4ZH需要新版本jieba提供的词性标注功能。
$ sudo pip install jieba --upgrade
TextRank4ZH暂不支持使用easy_install、pip来安装,使用者可以将textrank4zh拷贝到项目目录,或者环境变量PYTHONPATH指向的目录中。
├── LICENSE #许可证 ├── README.md #使用说明 ├── stopword.data #停止词词典 ├── test.py #测试 ├── text #存放测试所需要的文本 │ ├── 01.txt │ ├── 02.txt │ ├── 03.txt │ ├── 04.txt │ └── 05.txt └── textrank4zh #!main ├── __init__.py ├── Segmentation.py ├── TextRank4Keyword.py └── TextRank4Sentence.py
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算法计算得到的重要性最高的若干句子可以当作摘要。
test.py提供了使用的示例:
#-*- encoding:utf-8 -*- import codecs from textrank4zh import TextRank4Keyword, TextRank4Sentence text = codecs.open('./text/01.txt', 'r', 'utf-8').read() tr4w = TextRank4Keyword(stop_words_file='./stopword.data') # 导入停止词 #使用词性过滤,文本小写,窗口为2 tr4w.train(text=text, speech_tag_filter=True, lower=True, window=2) print '关键词:' # 20个关键词且每个的长度最小为1 print '/'.join(tr4w.get_keywords(20, word_min_len=1)) print '关键短语:' # 20个关键词去构造短语,短语在原文本中出现次数最少为2 print '/'.join(tr4w.get_keyphrases(keywords_num=20, min_occur_num= 2)) tr4s = TextRank4Sentence(stop_words_file='./stopword.data') # 使用词性过滤,文本小写,使用words_all_filters生成句子之间的相似性 tr4s.train(text=text, speech_tag_filter=True, lower=True, source = 'all_filters') print '摘要:' print '\n'.join(tr4s.get_key_sentences(num=3)) # 重要性最高的三个句子
得到的关键词:
媒体/高圆圆/微/宾客/赵又廷/答谢/谢娜/现身/记者/新人/北京/博/展示/捧场/礼物/张杰/当晚/戴/酒店/外套
得到的关键短语:
微博
得到的摘要:
中新网北京12月1日电(记者 张曦) 30日晚,高圆圆和赵又廷在京举行答谢宴,诸多明星现身捧场,其中包括张杰(微博)、谢娜(微博)夫妇、何炅(微博)、蔡康永(微博)、徐克、张凯丽、黄轩(微博)等 高圆圆身穿粉色外套,看到大批记者在场露出娇羞神色,赵又廷则戴着鸭舌帽,十分淡定,两人快步走进电梯,未接受媒体采访 记者了解到,出席高圆圆、赵又廷答谢宴的宾客近百人,其中不少都是女方的高中同学
类TextRank4Keyword、TextRank4Sentence在处理一段文本时会将文本拆分成4种格式:
sentences:由句子组成的列表。
words_no_filter:对sentences中每个句子分词而得到的两级列表。
words_no_stop_words:去掉words_no_filter中的停止词而得到的两级列表。
words_all_filters:保留words_no_stop_words中指定词性的单词而得到的两级列表。
例如,对于:
这间酒店位于北京东三环,里面摆放很多雕塑,文艺气息十足。答谢宴于晚上8点开始。
对类TextRank4Sentence,在speech_tag_filter=True, lower=True, source = 'all_filters'时,
sentences:
['这间酒店位于北京东三环,里面摆放很多雕塑,文艺气息十足', '答谢宴于晚上8点开始']
words_no_filter:
[ [ '这', '间, '酒店, '位于, '北京, '东三环, '里面, '摆放, '很多, '雕塑, '文艺, '气息, '十足'], [ '答谢', '宴于, '晚上, '8, '点, '开始' ] ]
words_no_stop_words:
[ [ '间', '酒店, '位于, '北京, '东三环, '里面, '摆放, '很多, '雕塑, '文艺, '气息, '十足' ], [ '答谢', '宴于, '晚上, '8, '点' ] ]
words_all_filters:
[ [ '酒店', '位于, '北京, '东三环, '摆放, '雕塑, '文艺, '气息' ], [ '答谢', '宴于, '晚上' ] ]
类TextRank4Keyword位于textrank4zh/TextRank4Keyword.py中,类TextRank4Sentence位于textrank4zh/TextRank4Sentence.py中,类的实现、函数的参数请参考源码注释。
TextRank算法是一种文本排序算法,由谷歌的网页重要性排序算法PageRank算法改进而来,它能够从一个给定的文本中提取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法提取出该文本的关键句。其提出论文是: Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational L
TextRank4ZH TextRank算法可以用来从文本中提取关键词和摘要(重要的句子)。TextRank4ZH是针对中文文本的TextRank算法的python算法实现。 安装 方式1: $ python setup.py install --user 方式2: $ sudo python setup.py install 方式3: $ pip install textrank4zh --us
关于 TextRank4ZH TextRank算法可以用来从文本中提取关键词和摘要(重要的句子)。 TextRank4ZH是针对中文文本的TextRank算法的python算法实现。 github:https://github.com/letiantian/TextRank4ZH 原理和使用介绍 : https://www.letiantian.me/2014-12-01-text-rank/ 安
TextRank4ZH 用于自动从中文文本中提取关键词和摘要,基于 TextRank 算法,使用 Python 编写。 TextRank 算法可以用来从文本中提取关键词和摘要(重要的句子)。TextRank4ZH是针对中文文本的TextRank算法的python算法实现。 安装 本程序使用python 2.7测试没有问题,暂时不兼容python 3。 先确定已经有jieba、numpy、netwo
TextRank4ZH TextRank算法可以用来从文本中提取关键词和摘要(重要的句子)。TextRank4ZH是针对中文文本的TextRank算法的python算法实现。 安装 方式1: $ python setup.py install --user 方式2: $ sudo python setup.py install 方式3: $ pip install textrank4zh --us
1 抽取关键词-源文本 #-*- encoding:utf-8 -*- from __future__ import print_function import sys import json import _thread import codecs import threading import pandas as pd from tqdm import tqdm from IPython.l
通过自然语言处理和机器学习封装的textrank4zh库可以实现对文本的关键词和内容摘要的提取 安装 pip3 install textrank4zh 依赖jieba >= 0.35, numpy >= 1.7.1, networkx >= 1.9.1 参考 github # -*- coding: utf-8 -*- from textrank4zh import TextRank4Keywor
问题内容: 我有一个充满关键字的索引,根据这些关键字,我想从输入文本中提取关键字。 以下是示例关键字索引。请注意,关键字也可以是多个单词,或者基本上是唯一的标签。 现在,如果输入文本为 “我在Facebook上看到了借贷俱乐部的新闻,您的故事和法定人数” ,则搜索结果应为 [“借贷俱乐部”,“ facebook”,“您的故事”,“法定人数”] 。此外,搜索应 区分大小写 问题答案: 只有一种真正的
本文向大家介绍python TF-IDF算法实现文本关键词提取,包括了python TF-IDF算法实现文本关键词提取的使用技巧和注意事项,需要的朋友参考一下 TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词。所以我们需要一个重要性调整系数来衡量一个词是不是常见词。该权重为IDF(Inver
问题内容: 假设您有一个像这样的文本文件:http : //www.gutenberg.org/files/17921/17921-8.txt 有没有人有一个好的算法或开放源代码从文本文件中提取单词?如何获得所有单词,同时避免使用特殊字符,并保留诸如“ it’s”之类的内容… 我在用Java工作。谢谢 问题答案: 这听起来像是正则表达式的正确工作。如果您不知道如何开始,以下是一些Java代码,可以
本文向大家介绍使用 Node.js 对文本内容分词和关键词抽取,包括了使用 Node.js 对文本内容分词和关键词抽取的使用技巧和注意事项,需要的朋友参考一下 在讨论技术前先卖个萌,吃货的世界你不懂~~ 众成翻译的文章有 tag,用户可以基于 tag 来快速筛选感兴趣的文章,文章也可以依照 tag 关联来进行相关推荐。但是现在众成翻译的 tag 是在推荐文章的时候设置的,都是英文的,而且人工设置难
问题内容: 有谁知道从文本中仅提取名词的最简单方法? 我听说过TreeTagger工具,但尝试尝试一下,但由于某种原因而无法使用。 有什么建议? 谢谢菲尔 编辑: 那是我的代码,英语是语言。我遇到了错误:new TokenHandler(){}类型必须实现继承的抽象方法TokenHandler.token。难道我做错了什么? 问题答案: 首先,您必须标记文本。这看似微不足道(在任何空格处分割都可以
本文向大家介绍Python实现提取文章摘要的方法,包括了Python实现提取文章摘要的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python实现提取文章摘要的方法。分享给大家供大家参考。具体如下: 一、概述 在博客系统的文章列表中,为了更有效地呈现文章内容,从而让读者更有针对性地选择阅读,通常会同时提供文章的标题和摘要。 一篇文章的内容可以是纯文本格式的,但在网络盛行的当今,更多
本文向大家介绍python多进程提取处理大量文本的关键词方法,包括了python多进程提取处理大量文本的关键词方法的使用技巧和注意事项,需要的朋友参考一下 经常需要通过python代码来提取文本的关键词,用于文本分析。而实际应用中文本量又是大量的数据,如果使用单进程的话,效率会比较低,因此可以考虑使用多进程。 python的多进程只需要使用multiprocessing的模块就行,如果使用大量的进
问题内容: 我正在寻找Java库以从文本块中提取关键字。 该过程应如下所示: 停止单词清洗->词干->根据英语语言统计信息搜索关键字-意味着单词在单词中出现的次数比在英语中出现的次数多于候选单词。 是否有执行此任务的库? 问题答案: 这是使用ApacheLucene的可能解决方案。我没有使用最新版本,但使用3.6.2版本,因为这是我所知道的最好的版本。除了之外,别忘了将下载的存档中的添加到您的项目