推广 热搜:   公司  快速  企业  中国  设备    上海  行业  未来 

四、利用jieba中的tfidf提取关键词,并自定义idf词典

   日期:2024-10-31     移动:http://keant.xrbh.cn/quote/10419.html

关键词:
    TF-IDF实现、TextRank、jieba、关键词提取
数据来源:
    语料数据来自搜狐新闻2012年6月—7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据
    数据处理参考前一篇文章
介绍:
    介绍了文本关键词提取的原理,tfidf算法和TextRank算法
    利用sklearn实现tfidf算法
    手动python实现tfidf算法
    使用jieba分词的tfidf算法和TextRank提取关键词

四、利用jieba中的tfidf提取关键词,并自定义idf词典

  关键词抽取就是从文本里面把跟这篇文档意义最相关的一些词抽取出来。这个可以追溯到文献检索初期,当时还不支持全文搜索的时候,关键词就可以作为搜索这篇论文的词语。因此,目前依然可以在论文中看到关键词这一项。

  除了这些,关键词还可以在文本聚类、分类、自动摘要等领域中有着重要的作用。比如在聚类时将关键词相似的几篇文档看成一个团簇,可以大大提高聚类算法的收敛速度;从某天所有的新闻中提取出这些新闻的关键词,就可以大致了解那天发生了什么事情;或者将某段时间内几个人的微博拼成一篇长文本,然后抽取关键词就可以知道他们主要在讨论什么话题。

  目前大多数领域无关的关键词抽取算法(领域无关算法的意思就是无论什么主题或者领域的文本都可以抽取关键词的算法)和它对应的库都是基于后者的。从逻辑上说,后者比前着在实际使用中更有意义。

从算法的角度来看,关键词抽取算法主要有两类:

  • 有监督学习算法,将关键词抽取过程视为二分类问题,先抽取出候选词,然后对于每个候选词划定标签,要么是关键词,要么不是关键词,然后训练关键词抽取分类器。当新来一篇文档时,抽取出所有的候选词,然后利用训练好的关键词抽取分类器,对各个候选词进行分类,最终将标签为关键词的候选词作为关键词;
  • 无监督学习算法,先抽取出候选词,然后对各个候选词进行打分,然后输出topK个分值最高的候选词作为关键词。根据打分的策略不同,有不同的算法,例如TF-IDF,TextRank等算法;
  •   TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。
    TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。

  •   TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
  •   TF是词频(Term Frequency):词频(TF)表示词条(关键字)在文本中出现的频率。
  •   逆向文件频率 (IDF) :某一特定词语的IDF,可以由总文件数目除以包含该词语的文件的数目,再将得到的商取对数得到。如果包含词条t的文档越少, IDF越大,则说明词条具有很好的类别区分能力。
  •   TF-IDF实际上是:TF *IDF。某一特定文件内的高词语频率,以及该词语在整个文件集合中的低文件频率,可以产生出高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见的词语,保留重要的词语。
  •   TF-IDF计算:
            (1)计算词频

      
            (2)计算逆文档频率

      
            (3)计算TF-IDF

      

      此种算法的一个重要特点是可以脱离语料库的背景,仅对单篇文档进行分析就可以提取该文档的关键词。基本思想来源于Google的PageRank算法。这种算法是1997年,Google创始人拉里.佩奇和谢尔盖.布林在构建早期的搜索系统原型时提出的一种链接分析算法,基本思想有两条:
      1)链接数量。一个网页被越多的其他网页链接,说明这个网页越重要.
      2)链接质量。一个网页被一个越高权值的网页链接,也能表明这个网页越重要.
        
      TextRank 用于关键词提取的算法如下:
        (1)把给定的文本 T 按照完整句子进行分割,即:T=[S1,S2,…,Sm]
        (2)对于每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,其中 ti,j 是保留后的候选关键词。Si=[ti,1,ti,2,...,ti,n]
        (3)构建候选关键词图 G = (V,E),其中 V 为节点集,由(2)生成的候选关键词组成,然后采用共现关系(Co-Occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K 的窗口中共现,K表示窗口大小,即最多共现 K 个单词。
        (4)根据 TextRank 的公式,迭代传播各节点的权重,直至收敛。
        (5)对节点权重进行倒序排序,从而得到最重要的 T 个单词,作为候选关键词。
        (6)由(5)得到最重要的 T 个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。
        
        TextRank & PageRank
            如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是PageRank值会相对较高
            如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高
            
        与TF-IDF需要在语料库上计算IDF(逆文档频率)不同,TextRank利用一篇文档内部的词语间的共现信息(语义)便可以抽取关键词

      控制台输出:

      问题:词频矩阵非常稀疏矩阵,矩阵太大(文档数量×词汇数量),实际计算中文档有59万余条,出现内存错误memoryerror,可以将语料分成多片分别进行计算,但这样效率并不高,下面手动进行词频统计

      手动计算词频,计算tfidf值

      输出前5篇文档的关键词:

    jieba分词中已经对tfidf进行了实现,并预先统计出了汉语中每个词的逆文档频率(idf),存储目录为C:Python37Libsite-packagesjiebaanalyseidf.txt
    jieba默认使用以上路径的idf词典,并计算输入文档的tf(文本词频)值,进而求出tfidf提取关键词
    jieba允许用户使用set_idf_path方法自定义idf词典
    本文首先使用默认的idf词典提取测试文档的关键词,然后使用set_idf_path将idf词典设置为上一节中训练的idf-1.txt再提取关键字,并进行前后对比

    TextRank算法提取关键字采用了PageRank算法的思想,仅文章本身便可以提取关键词
    算法原理: http://www.cnblogs.com/rubinorth/p/5799848.html
    TextRank算法源码解析:https://www.cnblogs.com/zhbzz2007/p/6177832.html

      输出:

    本文地址:http://lianchengexpo.xrbh.cn/quote/10419.html    迅博思语资讯 http://lianchengexpo.xrbh.cn/ , 查看更多

    特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


    相关行业动态
    推荐行业动态
    点击排行
    网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号