weixin_40087970 2017-11-23 15:24 采纳率: 50%
浏览 3428
已结题

有关中文文本分类中用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)

  • 写回答

1条回答 默认 最新

  • weixin_40087970 2017-11-23 15:29
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法