有关中文文本分类中用n-gram提高精度的问题

技术小白一个,但是接到一个很具有挑战性的任务是对上万条中文留言进行分类。我首先用网上比较常见的朴素贝叶斯分类器来进行分类,但发现对于短文本精确度并不高。因此想在TF-IDF之后加上n-gram来提高精度。但是python总是读取文件不成功,读出来全是乱码。求大神帮忙解答一下我应该改哪里,问题到底出在哪里?谢谢大家了
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import re
import string
import operator

def cleanText(input):
input = re.sub('\n+', " ", input).lower()
input = re.sub('[[0-9]*]', "", input)
input = re.sub(' +', " ", input)
input = bytes(input)#.encode('utf-8')
#input = input.decode("ascii", "ignore")
return input

def cleanInput(input):
input = cleanText(input)
cleanInput = []
input = input.split(' ')

for item in input:
    item = item.strip(string.punctuation) 

    if len(item) > 1 or (item.lower() == "的" or item.lower() == "啊"): 
return cleanInput

def getNgrams(input, n):
input = cleanInput(input)

output = {} 
for i in range(len(input)-n+1):
    ngramTemp = " ".join(input[i:i+n])#.encode('utf-8')
    if ngramTemp not in output: 
        output[ngramTemp] = 0 
    output[ngramTemp] += 1
return output

content = _readfile("‘·/train2/train_word_bag/tfdifspace.dat")#这个路径是训练集转成词向量空间后的文件路径,我也不大确定是不是要用这个路径
ngrams = getNgrams(content, 2)
sortedNGrams = sorted(ngrams.items(), key = operator.itemgetter(1), reverse=True) #=True
print(sortedNGrams)

图片说明
运行出来是这样的