最大熵的文本分类


最大熵模型用于文本分类的例子,里面有数据集和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+‘ ‘+str(v)+‘
‘)
    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+‘
‘)
    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  maxEntdata
     文件         504  2015-05-06 17:30  maxEntdata
ename.py
     目录           0  2015-05-07 19:39  maxEntdata est
     文件        5939  2015-05-07 19:38  maxEntdata estar7820.txt
     文件        5196  2015-05-07 19:38  maxEntdata estar7823.txt
     文件       10112  2015-05-07 19:38  maxEntdata estar7827.txt
     文件        7285  2015-05-07 19:38  maxEntdata estar7837.txt
     文件        2425  2015-05-07 19:38  maxEntdata estar7838.txt
     文件        8163  2015-05-07 19:38  maxEntdata estar7840.txt
     文件         695  2015-05-07 19:38  maxEntdata estar7842.txt
     文件        4034  2015-05-07 19:38  maxEntdata estar7846.txt
     文件       21443  2015-05-07 19:38  maxEntdata estar7850.txt
     文件        7698  2015-05-07 19:38  maxEntdata estar7853.txt
     文件        3808  2015-05-07 19:38  maxEntdata estar7855.txt
     文件        2568  2015-05-07 19:38  maxEntdata estar7864.txt
     文件        2217  2015-05-07 19:38  maxEntdata estar7868.txt
     文件        3859  2015-05-07 19:38  maxEntdata estar7869.txt
     文件        3559  2015-05-07 19:38  maxEntdata estar7871.txt
     文件       10122  2015-05-07 19:38  maxEntdata estar7872.txt
     文件        9354  2015-05-07 19:38  maxEntdata estar7880.txt
     文件        2191  2015-05-07 19:38  maxEntdata estar7881.txt
     文件        7808  2015-05-07 19:38  maxEntdata estar7885.txt
     文件        6124  2015-05-07 19:38  maxEntdata estar7900.txt
     文件       13448  2015-05-07 19:38  maxEntdata estar7904.txt
     文件       13660  2015-05-07 19:38  maxEntdata estar7907.txt
     文件       12541  2015-05-07 19:38  maxEntdata estar7912.txt
     文件        6455  2015-05-07 19:38  maxEntdata estar7921.txt
     文件       10015  2015-05-07 19:38  maxEntdata estar7928.txt
     文件       15559  2015-05-07 19:38  maxEntdata estar7932.txt
     文件        6473  2015-05-07 19:38  maxEntdata estar7936.txt
............此处省略17591个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)