Open zengbin93 opened 6 years ago
TextRank是一个无监督算法,本质上是一个用于文本处理的图排序模型。对于图排序模型来说,它需要做的就是找到一种方法来计算图中任一顶点(Vertex)的重要性,这个方法需要依赖整个图的全局信息(global information)进行递归计算,而不仅仅是任一顶点的局部信息(local vertex-specific information)。
TF-IDF的基本思想是:词语的重要性与它在文件中出现的次数成正比,但同时会随着它在语料库中出现的频率成反比下降。
一个文档中多次出现的词总是有一定的特殊意义,但是并不是所有多次出现的词就都是有意义的,如果一个词在所有的文档中都多次出现,那么这个词就没有什么价值了。或者说,如果某个词或者短语在一个文档中出现多次,但是在其他文档中很少出现,就可以认为这个词或短语具有很好的区分性,适合用来对文档进行分类。
TF(Term Frequency)表示一个词在文档中出现的次数。
DF(Document Frequency)表示整个语料库中含有某个词的文档个数
IDF(Inverse Document Frequency)为逆文档频率,其计算公式为: IDF= log(语料库中文档总数/(包含该词的文档数+1))
+1 的作用是确保分母不为零。
TF-IDF = TF * IDF
由公式可知:一个词在文档中出现的次数越多,其TF值就越大,整个语料库中包含某个词的文档数越少,则IDF值越大,因此某个词的TF-IDF值越大,则这个词是关键词的概率越大。
TF-IDF关键词提取算法的一大缺点是:为了精确的提取一篇文档中的关键词,需要有一整个语料库来提供支持。 这个问题的解决方法,通常是在一个通用的语料库上提前计算好所有词的IDF值,jieba就是这么做的。这样的解决方案对于普通文档关键词提取有一定的效果,但是对于专业性稍微强一点的文档,表现就会差很多。
jieba中的已经有TF-IDF关键词提取算法的实现。使用jieba中的TF-IDF关键词提取算法的代码如下:
import jieba.analyse
p = "在新时代,实施网络强国战略必须要有新作为。习近平总书记一再强调,"
"我们要掌握我国互联网发展主动权,保障互联网安全、国家安全,就必须"
"突破核心技术这个难题,争取在某些领域、某些方面实现“弯道超车”。"
"总书记以卓越的政治智慧和远见卓识,站在网络安全和信息化事业发展"
"全局的高度,鲜明指出了我国网信事业发展的关键点和突破口。"
key_words = jieba.analyse.extract_tags(p, topK=6, withWeight=True)
key_words = [(x[0], round(x[1], 4)) for x in key_words]
print(key_words)
Rake算法引入了一个degree(度)的概念,并且对词和短语不做任何区分,因此,它实际上是不仅仅是在提取关键词,也是在提取关键短语。
关于Rake中引入的degree,它其实是图论中的一个概念。在一张图上,任一顶点的degree(度)是指与该顶点相关联的边的条数。 在Rake算法中,一个词的degree其实就是它在整个文档中的非重复共现词的数量。
举个例子来说明degree的计算。比如在 “我要买一个小米手机,因为大家都说小米手机很好用!”中,“小米”这个词出现了两次,共现词分别是 【一个,手机,说,手机】,因此,在这句话中,“小米”这个词的degree就是3。
使用Rake算法进行关键词提取不需要一整个语料库的支持,相比于TF-IDF,这是一个很大的优势。
Rake算法的输入参数有三个:1)停用词表(stop words);2)段落分割符;3)词语分割符。针对同一种语言,这三个参数事实上是一样的。
使用Rake算法进行关键词(短语)提取的过程如下:
step 1. 从输入文本中获取候选关键词(candidate keywords)
step 2. 计算所有候选关键词的得分,公式如下:
score = sum(deg(w)/freq(w))
step 3. 拼接候选关键词(以同样的顺序相邻出现两次),获取带有停用词的关键词
step 4. 输出得分最高的前T个候选关键词作为关键词,作者的做法是输出前三分之一
Rake算法的实现,请点击:https://github.com/zelandiya/RAKE-tutorial
关键词是指能反映文本主题或者主要内容的词语。关键词提取是NLP领域的一个重要的子任务。在信息检索中,准确的关键词提取可以大幅提升效率;在对话系统中,机器可以通过关键词来理解用户意图;在文本分类中,关键词的发现也非常有帮助。
关键词提取的方法主要有:TF-IDF、TextRank、Rake、Topic-Model等。