• 大小: 19.9MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-20
  • 语言: Python
  • 标签: 最大熵  文本分类  

资源简介

最大熵模型用于文本分类的例子,里面有数据集和Python代码

资源截图

代码片段和文件信息

# -*- coding: cp936 -*-
‘‘‘
注意当测试集,训练集不大时,在测试集中出现的单词在训练集中有可能不存在,这种情况直接忽略这个词的判断。
‘‘‘
import os
import random

textNum = 0
wordNum = 0
ctgyNum = 0
weight = [[0 for x in range(ctgyNum)] for y in range(wordNum)]
category = [‘finance‘‘local‘‘computer‘‘house‘‘edu‘‘tech‘‘car‘‘talent‘‘sport‘‘healthy‘‘artist‘‘fun‘]
words = set([])


def process(inPathoutPathctgyfileNameisTrainData):
    text=open(inPath+‘\\‘+fileName)
    lines = text.readlines()
    wf = {}
    cnt = 0
    for line in lines:
        arr = line.split()
        for w in arr:
            w = w.strip()
            if wf.has_key(w):
                wf[w]+=1
            else:
                wf[w] = 1
            cnt+=1
            if isTrainData:             #只收集训练集中的单词
                if w not in words:
                    words.add(w)
    for (kv) in wf.items():
        wf[k]/=float(cnt)
    text2 = open(outPath+‘\\‘+ctgy+fileName‘w‘)
    for (kv) in wf.items():
        text2.write(k+‘\t‘+str(v)+‘\n‘)
    text.close()
    text2.close()
    
def wordFreq():
    print “计算中,请稍后...“
    path = “TanCorp-12-Txt“
    trainPath =“data\\train\\“
    testPath =“data\\test\\“
    wordPath = “data\\words.txt“
    dirs = os.listdir(path)
    trainCnt = 0
    testCnt = 0
    for ctgy in dirs:
        currPath = path+‘\\‘+ctgy
        files = os.listdir(currPath)
        index = 0                   #为了减小计算量,每类别最多取200个数据
        for f in files:
            index+=1
            if index>300 : break
            if random.random()>0.2:
                process(currPathtrainPathctgyfTrue)
                trainCnt+=1
            else :
                process(currPathtestPathctgyfFalse)
                testCnt+=1    
    stat = open(wordPath‘w‘)
    for word in words:
        stat.write(word+‘\n‘)
    stat.close()
    print “处理完毕:“
    print “单词总量“+str(len(words))
    print “训练总量“+str(trainCnt)
    print “测试总量“+str(testCnt)

if __name__ == ‘__main__‘ :
    wordFreq()
   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-05-08 12:36  maxEnt\
     目录           0  2015-05-07 19:38  maxEnt\data\
     文件         504  2015-05-06 17:30  maxEnt\data\rename.py
     目录           0  2015-05-07 19:39  maxEnt\data\test\
     文件        5939  2015-05-07 19:38  maxEnt\data\test\ar7820.txt
     文件        5196  2015-05-07 19:38  maxEnt\data\test\ar7823.txt
     文件       10112  2015-05-07 19:38  maxEnt\data\test\ar7827.txt
     文件        7285  2015-05-07 19:38  maxEnt\data\test\ar7837.txt
     文件        2425  2015-05-07 19:38  maxEnt\data\test\ar7838.txt
     文件        8163  2015-05-07 19:38  maxEnt\data\test\ar7840.txt
     文件         695  2015-05-07 19:38  maxEnt\data\test\ar7842.txt
     文件        4034  2015-05-07 19:38  maxEnt\data\test\ar7846.txt
     文件       21443  2015-05-07 19:38  maxEnt\data\test\ar7850.txt
     文件        7698  2015-05-07 19:38  maxEnt\data\test\ar7853.txt
     文件        3808  2015-05-07 19:38  maxEnt\data\test\ar7855.txt
     文件        2568  2015-05-07 19:38  maxEnt\data\test\ar7864.txt
     文件        2217  2015-05-07 19:38  maxEnt\data\test\ar7868.txt
     文件        3859  2015-05-07 19:38  maxEnt\data\test\ar7869.txt
     文件        3559  2015-05-07 19:38  maxEnt\data\test\ar7871.txt
     文件       10122  2015-05-07 19:38  maxEnt\data\test\ar7872.txt
     文件        9354  2015-05-07 19:38  maxEnt\data\test\ar7880.txt
     文件        2191  2015-05-07 19:38  maxEnt\data\test\ar7881.txt
     文件        7808  2015-05-07 19:38  maxEnt\data\test\ar7885.txt
     文件        6124  2015-05-07 19:38  maxEnt\data\test\ar7900.txt
     文件       13448  2015-05-07 19:38  maxEnt\data\test\ar7904.txt
     文件       13660  2015-05-07 19:38  maxEnt\data\test\ar7907.txt
     文件       12541  2015-05-07 19:38  maxEnt\data\test\ar7912.txt
     文件        6455  2015-05-07 19:38  maxEnt\data\test\ar7921.txt
     文件       10015  2015-05-07 19:38  maxEnt\data\test\ar7928.txt
     文件       15559  2015-05-07 19:38  maxEnt\data\test\ar7932.txt
     文件        6473  2015-05-07 19:38  maxEnt\data\test\ar7936.txt
............此处省略17591个文件信息

评论

共有 条评论