资源简介
最大熵模型用于文本分类的例子,里面有数据集和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个文件信息
评论
共有 条评论