zoukankan      html  css  js  c++  java
  • 计算tfidf,关键词抽取---python

    1、读入文本内容

    corpos = pandas.DataFrame(columns=['filePath','content'])
    for root ,dirs,files in os.walk(r'H:19113117 - 副本'):    
        for name in files:
            filePath=root+'\'+name
            f = codecs.open(filePath,'r','utf-8')
            content=f.read()
            f.close()
            corpos.loc[len(corpos)+1]=[filePath,content.strip()]

    2、将手动分完词的文本进行词频统计

    filePaths=[]
    segments=[]
    for filePath,content in corpos.itertuples(index=False):
        for item in content.split('/'):
            segments.append(item)
            filePaths.append(filePath)
    segmentDF=pandas.DataFrame({'filePath':filePaths,'segments':segments})
                 
    segStat = segmentDF.groupby(
                by=["filePath","segments"]
            )["segments"].agg({
                "计数":numpy.size
            }).reset_index();

    3、计算tf值

    textVector=segStat.pivot_table(
               index='segments',
               values='计数',
               columns='filePath',
               fill_value=0)           
    tF=(1+numpy.log(textVector)).as_matrix()

    4、计算IDF

    def handle(x):
        idf=1+numpy.log(len(corpos)/(numpy.sum(x>0)+1))
        return idf
    zhuan=textVector.T
    iDF=zhuan.apply(handle).as_matrix()
    iDF=iDF.reshape(8889,1)

    5、计算tfidf

    TFIDF=tF*iDF
    tFIDF_DF=pandas.DataFrame(TFIDF)

    6、将每个文本中tfidf值排名前100的词和相应的tfidf值输出

    file=[]
    for root ,dirs,files in os.walk(r'H:19113117 - 副本'):    
        for name in files:
            name=name[0:-4]
            file.append(name)
    for i in range(len(corpos)):
        sort=pandas.DataFrame(tFIDF_DF.loc[:,i].order(ascending=False)[:100]).reset_index()
        names = sort.columns.tolist()
        names[names.index(i)] = 'value'
        sort.columns = names
        tagis = textVector.index[sort.index]
        print(file[i])
        for t in range(len(tagis)):
            print(tagis[t],sort.loc[t].value)
  • 相关阅读:
    Redis的分布式锁
    Redis的雪崩、击穿、穿透
    psr规范
    Mysql的联(复)合索引
    nginx的location配置(二)
    nginx的location规则(一)
    easyswoole中队列的使用
    第三章 文件I/O
    移动语义及拷贝优化
    PHP对接tdzntech.com云平台电子免费券程序
  • 原文地址:https://www.cnblogs.com/chenyaling/p/5559906.html
Copyright © 2011-2022 走看看