Python结巴jieba分词计算高频词及TFIDF

    用Python写脚本比较挺容易上瘾,呵呵、主要是比较容易忽略SEO这一块,有时会感觉是为了技术而技术,本渣做百度seo可能很多人比起来都比较短呢,有时候接一下单子也只是为了保持对这个行业类目的认知新鲜度。对于做百度seo本渣渣知道有千奇百怪的做法,也知道只用火车头和cms有做出相当可观的流量,至于seo是否要学编程,如python,php,ruby,java之类,见仁见智,只能说技多不压身,python现在应该是个大趋势!

    自己也看到很多python方面的相关脚本,对写网络应用方面的小程序还算比较顺手,但毕竟非专科,脚本很多时候都很粗糙,但是后面个人认为能用脚本解决问题就好,待续吧…Python脚本。

    结巴jieba分词这个模块很好用,用这个都可以自己写一些关键词分组工具等,对管理词库有很多的帮助,分词,去停止词,提取高频词,去重等SEO词库管理方面的应用,都直接或间接可以利用到结巴分词这个库,具体结巴的函数方法可以去GitHub上自行补脑,终于凑够字数,下面还是说说说流程:

安装说明
代码对 Python 2/3 均兼容

  • 全自动安装:easy_install jieba 或者 pip install jieba / pip3 install jieba
  • 半自动安装:先下载 http://pypi.python.org/pypi/jieba/ ,解压后运行 python setup.py install
  • 手动安装:将 jieba 目录放置于当前目录或者 site-packages 目录
  • 通过 import jieba 来引用
  • 代码实例
    结巴分词

    #coding=utf-8
    import sys
    reload(sys)
    sys.setdefaultencoding("utf-8")
    import jieba       
    import jieba.analyse              #导入结巴jieba相关模块
    output=open('words.csv','a') 
    output.write('词语,词频,词权\n')  
    stopkeyword=[line.strip() for line in open('stop.txt').readlines()]  #将停止词文件保存到列表
    text = open(r"new.txt","r").read()          #导入需要计算的内容
    zidian={}
    fenci=jieba.cut_for_search(text)
    for fc in fenci:
            if fc in zidian:                
                    zidian[fc]+=1
            else:
                    # zidian.setdefault(fc,1)   #字典中如果不存在键,就加入键,键值设置为1
                    zidian[fc]=1
    #计算tfidf
    tfidf=jieba.analyse.extract_tags(text,topK=30,withWeight=True)
    
    #写入到csv
    for word_weight in tfidf:
        if word_weight in stopkeyword: 
            pass
        else:                                   #不存在的话就输出
            print word_weight[0],zidian.get(word_weight[0],'not found'),str(int(word_weight[1]*100))+'%'
            output.write('%s,%s,%s\n'%(word_weight[0],zidian.get(word_weight[0],'not found'),str(int(word_weight[1]*100))+'%'))
    

    逻辑思路

  • 安装和导入结巴模块
  • 通过jieba.cut_for_search分词
  • 结合利用数据类型中的字典dirt计算词频
  • 计算tfidf也是一行代码的事情jieba.analyse.extract_tags
  • 快快利用结巴jieba分词计算高频词及TFIDF去做点什么吧!

    发表评论

    电子邮件地址不会被公开。