技术小白一个,但是接到一个很具有挑战性的任务是对上万条中文留言进行分类。我首先用网上比较常见的朴素贝叶斯分类器来进行分类,但发现对于短文本精确度并不高。因此想在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)