python库之jieba小试牛刀 3

点点圈 提交于 2021-02-18 01:37:49

 关键词提取

1 基于 TF-IDF 算法的关键词抽取

    import jieba.analyse

    jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=())jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件

  •         sentence 为待提取的文本
  •         topK 为返回几个 TF/IDF 权重最大的关键词,默认值为 20
  •         withWeight 为是否一并返回关键词权重值,默认值为 False
  •         allowPOS 仅包括指定词性的词,默认值为空,即不筛选


       jieba.analyse.TFIDF(idf_path=None) 新建 TFIDF 实例,idf_path 为 IDF 频率文件

       关键词提取所使用逆向文件频率(IDF)文本语料库可以切换成自定义语料库的路径
            用法:jieba.analyse.set_idf_path(file_name) # file_name为自定义语料库的路径

       关键词提取所使用停止词(Stop Words)文本语料库可以切换成自定义语料库的路径
            用法: jieba.analyse.set_stop_words(file_name) # file_name为自定义语料库的路径

 

#!usr/bin/env python  
    #-*- coding:utf-8-*-  
    import jieba  
    import jieba.analyse  
    import codecs  
    file_path='./data/000000_0'  
    result_file_path="./data/000000_0_result_ifidf"  
    f=open(file_path,'r')  
    f_result=codecs.open(result_file_path,'w+','utf-8')  
    f_result.write('[')  
    texts=f.readlines()  
    num_text=0  
    for text in texts:  
        text_id=texts.split('\t')[0]  
        text_content=texts.split('\t')[3]  
        f_result.write('{\"text_id\": %s\n'% text_id)  
          
        keywords=jieba.analyse.extract_tags(text_content,topK=20,withWeight=True,allowPOS=('ns', 'n', 'vn', 'v'),withFlag=True)  
        f_result.write('\"keyword\":{')  
        num_text+=1  
        for keyword in keywords:  
            (word,flag)=keyword[0]  
            weight=keyword[1]  
            f_result.write('\"word\":%s,\"weight\":%s,\"nature\": %s\n'% (word,weight,flag))  
        f_result.write('}')  
        if num_text%100=0:  
            print "已经处理%s篇文章" % num_text  
    f_result.write(']')  
    print "总共处理%s篇文章" %num_text  
    f_result.close()  
    f.close()

 

2 基于 TextRank 算法的关键词抽取    

  •       jieba.analyse.textrank(sentence, topK=20, withWeight=False, allowPOS=('ns', 'n', 'vn', 'v')) 直接使用,接口相同,注意默认过滤词性。
  •       jieba.analyse.TextRank() 新建自定义 TextRank 实例

    基本思想:
    1,将待抽取关键词的文本进行分词
    2,以固定窗口大小(默认为5,通过span属性调整),词之间的共现关系,构建图
    3,计算图中节点的PageRank,注意是无向带权

#!usr/bin/env python  
    #-*- coding:utf-8-*-  
    import jieba  
    import jieba.analyse  
    import codecs  
    file_path='./data/000000_0'  
    result_file_path="./data/000000_0_result_textrank"  
    f=open(file_path,'r')  
    f_result=codecs.open(result_file_path,'w+','utf-8')  
    f_result.write('[\n')  
    texts=f.readlines()  
    num_text=0  
    for text in texts:  
        text_id=texts.split('\t')[0]  
        text_content=texts.split('\t')[3]  
        f_result.write('{\"text_id\": %s\n'% text_id)  
          
        keywords=jieba.analyse.textrank(text_content,topK=20,withWeight=True,allowPOS=('ns', 'n', 'vn', 'v'),withFlag=True)  
        f_result.write('\"keyword\":{')  
        num_text+=1  
        for keyword in keywords:  
            (word,flag)=keyword[0]  
            weight=keyword[1]  
            f_result.write('\"word\":%s,\"weight\":%s,\"nature\": %s\n'% (word,weight,flag))  
        f_result.write('}\n')  
        if num_text%100=0:  
            print "已经处理%s篇文章" % num_text  
    f_result.write(']\n')  
    print "总共处理%s篇文章" num_text  
          
    f_result.close()  
    f.close()

 

 

引用资源

http://blog.csdn.net/zhangyu132/article/details/51970286

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!