textrank

TextRank算法提取关键词的Java实现

心已入冬 提交于 2020-03-01 02:03:03
转载: 码农场 » TextRank算法提取关键词的Java实现 谈起自动摘要算法,常见的并且最易实现的当属TF-IDF,但是感觉TF-IDF效果一般,不如 TextRank 好。 TextRank是在 Google的PageRank算法启发下,针对文本里的句子设计的权重算法,目标是自动摘要。它利用投票的原理,让每一个单词给它的邻居(术语称窗口) 投赞成票,票的权重取决于自己的票数。这是一个“先有鸡还是先有蛋”的悖论,PageRank采用矩阵迭代收敛的方式解决了这个悖论。TextRank也 不例外: PageRank的计算公式: 正规的TextRank公式 正规的TextRank公式在PageRank的公式的基础上,引入了边的权值的概念,代表两个句子的相似度。 但是很明显我只想计算关键字,如果把一个单词视为一个句子的话,那么所有句子(单词)构成的边的权重都是0(没有交集,没有相似性),所以分子分母的权值w约掉了,算法退化为PageRank。所以说,这里称关键字提取算法为PageRank也不为过。 另外,如果你想提取关键句(自动摘要)的话,请参考姊妹篇《 TextRank算法自动摘要的Java实现 》。 TextRank的Java实现 先看看测试数据: 程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员

算法浅入浅出之Textrank

蹲街弑〆低调 提交于 2020-03-01 01:34:27
一 自动文摘的方法 自动文摘( Automatic Summarization )的方法主要有两种:Extraction和Abstraction。 Extraction是抽取式自动文摘方法,通过提取文档中已存在的关键词,句子形成摘要; Abstraction是生成式自动文摘方法,通过建立抽象的语意表示,使用自然语言生成技术,形成摘要。由于生成式自动摘要方法需要复杂的自然语言理解和生成技术支持,应用领域受限。   目前主要方法有: 基于统计:统计词频,位置等信息,计算句子权值,再简选取权值高的句子作为文摘,特点:简单易用,但对词句的使用大多仅停留在表面信息。 基于图模型:构建拓扑结构图,对词句进行排序。例如,TextRank/LexRank 基于潜在语义:使用主题模型,挖掘词句隐藏信息。例如,采用LDA,HMM 基于整数规划:将文摘问题转为整数线性规划,求全局最优解。 二. TextRank算法   TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank 算法, 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文摘。和 LDA、HMM 等模型不同, TextRank不需要事先对多篇文档进行学习训练, 因其简洁有效而得到广泛应用。  

HanLP 关键词提取算法分析详解

六眼飞鱼酱① 提交于 2020-03-01 01:23:03
HanLP 关键词提取算法分析 详解 l 参考论文:《 TextRank: Bringing Order into Texts》 l TextRank算法提取关键词的Java实现 l TextRank算法自动摘要的Java实现这篇文章中作者大概解释了一下TextRank公式 1. 论文 In this paper, we introduce the TextRank graphbased ranking model for graphs extracted from natural language texts TextRank是一个非监督学习算法,它将文本中构造成一个图,将文本中感兴趣的东西(比如分词)当成一个个顶点,然后应用TextRank算法来抽取文本中的一些信息。 Such keywords may constitute useful entries for building an automatic index for a document collection, can be used to classify a text, or may serve as a concise summary for a given document. 提取出来的关键词,可用来作为文本分类,或者概括文本的中心思想。 TextRank通过不断地迭代来提取关键词,每一轮迭代

HanLP 关键词提取算法分析

久未见 提交于 2020-03-01 01:22:27
HanLP 关键词提取算法分析 参考论文:《TextRank: Bringing Order into Texts》 TextRank算法提取关键词的Java实现 TextRank算法自动摘要的Java实现 这篇文章中作者大概解释了一下TextRank公式 1. 论文 In this paper, we introduce the TextRank graphbased ranking model for graphs extracted from natural language texts TextRank是一个非监督学习算法,它将文本中构造成一个图,将文本中感兴趣的东西(比如分词)当成一个个顶点,然后应用TextRank算法来抽取文本中的一些信息。 Such keywords may constitute useful entries for building an automatic index for a document collection, can be used to classify a text, or may serve as a concise summary for a given document. 提取出来的关键词,可用来作为文本分类,或者概括文本的中心思想。 TextRank通过不断地迭代来提取关键词,每一轮迭代,算法给图中的顶点打分

使用Python自动提取内容摘要

喜夏-厌秋 提交于 2020-01-27 19:04:51
https://www.biaodianfu.com/automatic-text-summarizer.html 利用计算机将大量的文本进行处理,产生简洁、精炼内容的过程就是文本摘要,人们可通过阅读摘要来把握文本主要内容,这不仅大大节省时间,更提高阅读效率。但人工摘要耗时又耗力,已不能满足日益增长的信息需求,因此借助计算机进行文本处理的自动文摘应运而生。近年来,自动摘要、信息检索、信息过滤、机器识别、等研究已成为了人们关注的热点。 自动摘要(Automatic Summarization)的方法主要有两种:Extraction和Abstraction。其中Extraction是抽取式自动文摘方法,通过提取文档中已存在的关键词,句子形成摘要;Abstraction是生成式自动文摘方法,通过建立抽象的语意表示,使用自然语言生成技术,形成摘要。由于自动摘要方法需要复杂的自然语言理解和生成技术支持,应用领域受限。,抽取式摘要成为现阶段主流,它也能在很大程度上满足人们对摘要的需求。 目前抽取式的主要方法: 基于统计:统计词频,位置等信息,计算句子权值,再简选取权值高的句子作为文摘,特点:简单易用,但对词句的使用大多仅停留在表面信息。 基于图模型:构建拓扑结构图,对词句进行排序。例如,TextRank/LexRank 基于潜在语义:使用主题模型,挖掘词句隐藏信息。例如,采用LDA,HMM

快速上手关键词抽取的算法

时光怂恿深爱的人放手 提交于 2020-01-10 08:27:33
前言 在自然语言处理领域,我们有一种类型的问题是如何在一堆文本中提取出核心词/句子。而无论是对于长文本还是短文本,往往几个关键词就可以代表整个文本的主题思想。同时,在很多推荐系统中,由于无法直接就整体文本进行利用,往往会现对文本进行汇总,常用的方法就是embedding或者关键词抽取,关键词提取的准确程度直接关系到推荐系统或者搜索系统的最终效果。让我们看下有哪些快速上手可用的方法。 TFIDF TFIDF是term frequency inverse document frequency的简称,很好理解:term frequency dot inverse document frequency,文本频率与逆文档频率指数, TFIDF就是为了表征一个token(可以是一个字或者一个词)的重要程度。所以,当我们把doc中的每个词的重要程度算出来,倒序即可作为关键词。 Term Frequency Inverse Document Frequency 分母+1是平衡未出现词 TF * IDF TF-IDF算法非常容易理解,并且很容易实现,但是其简单结构并没有考虑词语的语义信息,无法处理一词多义与一义多词的情况。 实现 Java版本: TfIdf RAKE RAKE是Rapid Automatic Keyword Extraction的简称,RAKE算法的亮点在于“R”

【NLP】【一】中文分词之jieba

假如想象 提交于 2019-12-04 11:07:42
声明:本文参考jieba官方文档而成,官方链接:https://github.com/fxsjy/jieba 【一】jieba安装 pip install jieba 【二】jieba简介 简介可见jieba官方说明:https://pypi.org/project/jieba/ 总而言之,jieba用于中文分词,支持的文本编码格式为utf-8,支持的功能包括:中文分词、关键字提取、词性标注 整体功能如下图: 【三】结巴使用之分词 1. 使用精确模式 # -*- coding:utf-8 -*- import jieba sentence = "我爱北京天安门" seg = jieba.cut(sentence=sentence) print("/".join(seg)) 结果如下: 我/爱/北京/天安门 2. 使用全模式 import jieba sentence = "我爱北京天安门" seg = jieba.cut(sentence=sentence,cut_all=True) print("/".join(seg)) 结果如下: 我/爱/北京/天安/天安门 3.使用搜索模式 # -*- coding:utf-8 -*- import jieba sentence = "我爱北京天安门" seg = jieba.cut_for_search(sentence=sentence

jieba笔记

坚强是说给别人听的谎言 提交于 2019-12-03 19:28:36
1.jieba,cut(需要分词的字符串,cut_all控制是否采用全模式,HMM控制是否使用HMM模型)---------返回一个可迭代的generator,可用for循环获得每个词语。 2.jieba.cut_for_search(需要分词的字符串,是否使用HMM模型)---------返回一个可迭代的generator,可用for循环获得每个词语。 3.jieba.lcut()和jieba.lcut_for_search()-------返回list 4.jieba.load_userdict(file_name):加载用户字典 5.jieba.add_word(word,freq=None,tag=None)和jieba.del_word(word)在程序中动态修改词典。 6.jieba.suggest_freq(segment,tun=True)可以调节单个词语的词频,使其能(或不能)被分出来。 7.基于TF-IDF算法抽取关键词:import jieba.analyse------jieba.analyse.extract_tags(待提取文本,topK=返回几个权重最大的关键词,默认20,withWeight=是否一并返回关键词的权重值,默认False,allowPOS=(仅包括指定词性的词,默认为空,不筛选))。 8.关键词提取所使用逆向文件频率(IDF

TextRank提取关键词实现原理

泪湿孤枕 提交于 2019-11-30 14:32:17
TextRank是在Google的PageRank算法启发下,针对文本里的句子设计的权重算法,目标是自动摘要。它利用投票的原理,让每一个单词给它的邻居(术语称窗口)投赞成票,票的权重取决于自己的票数。这是一个“先有鸡还是先有蛋”的悖论,PageRank采用矩阵迭代收敛的方式解决了这个悖论。TextRank也不例外: PageRank的计算公式: TextRank的计算公式: 正规的TextRank公式在PageRank的公式的基础上,引入了边的权值的概念, 代表两个句子的相似度 。 但是很明显我只想计算关键字,如果把一个单词视为一个句子的话,那么所有句子(单词)构成的边的权重都是0(没有交集,没有相似性),所以分子分母的权值w约掉了,算法退化为PageRank。所以说,这里称关键字提取算法为PageRank也不为过。 Java实现 先看看测试数据 1234 程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和程序编码人员,但两者的界限并不非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类。 我取出了百度百科关于“程序员”的定义作为测试用例,很明显,这段定义的关键字应当是“程序员”并且“程序员”的得分应当最高。 首先对这句话分词,这里可以借助各种分词项目,比如HanLP分词,得出分词结果: