def spam(): # spam类对象 spam = spamEmailBayes() testDict = {} # 保存每封邮件中出现的词 wordsList = [] wordsDict = {} # 保存预测结果,key为文件名,值为预测类别 testResult = {} testDict.clear() wordsDict.clear() wordsList.clear() # 需要从request对象读取表单内容: json_data = request.form['json_data'] json_data = json.loads(json_data) for data in json_data: article_id = data['id'] article_title = data['article_title'] article_abstract = data['article_abstract'] article_title_abstract = article_title + article_abstract rule = re.compile(r"[^\u4e00-\u9fa5]") article_title_abstract = rule.sub("", article_title_abstract) spam.get_word_list(article_title_abstract, wordsList, stopList) spam.addToDict(wordsList, wordsDict) testDict = wordsDict.copy() # 通过计算每个文件中p(s|w)来得到对分类影响最大的10个词 wordProbList = spam.getTestWords(testDict, spamDict, normDict, normFilelen, spamFilelen) print(wordProbList) # Detail = # 对每封邮件得到的5个词计算贝叶斯概率 p = spam.calBayes(wordProbList, spamDict, normDict) if (p > 0.8): testResult.setdefault(article_id, 1) else: testResult.setdefault(article_id, 0) # for i, ic in testResult.items(): # print(i + "/" + str(ic)) return ''' <h3>Result:</h3><h3>{}</h3> '''.format(testResult)
#encoding=utf-8 ''' Created on 2018年3月11日 @author: yeshan ''' from spam.spamEmail import spamEmailBayes import re #spam类对象 spam=spamEmailBayes() #保存词频的词典 spamDict={} normDict={} testDict={} #保存每封邮件中出现的词 wordsList=[] wordsDict={} #保存预测结果,key为文件名,值为预测类别 testResult={} #分别获得正常邮件、垃圾邮件及测试文件名称列表 normFileList=spam.get_File_List("./../data/normal") spamFileList=spam.get_File_List("./../data/spam") testFileList=spam.get_File_List("./../data/test") #获取训练集中正常邮件与垃圾邮件的数量 normFilelen=len(normFileList) spamFilelen=len(spamFileList) #获得停用词表,用于对停用词过滤 stopList=spam.getStopWords() #获得正常邮件中的词频 for fileName in normFileList:
#encoding=utf-8 ''' Created on 2016年4月18日 @author: lenovo ''' from spam.spamEmail import spamEmailBayes import re #spam类对象 spam=spamEmailBayes() #保存词频的词典 spamDict={} normDict={} testDict={} #保存每封邮件中出现的词 wordsList=[] wordsDict={} #保存预测结果,key为文件名,值为预测类别 testResult={} #分别获得正常邮件、垃圾邮件及测试文件名称列表 normFileList=spam.get_File_List(r"E:\EclipseWorkspace\BayesSpam\data\normal") spamFileList=spam.get_File_List(r"E:\EclipseWorkspace\BayesSpam\data\spam") testFileList=spam.get_File_List(r"E:\EclipseWorkspace\BayesSpam\data\test") #获取训练集中正常邮件与垃圾邮件的数量 normFilelen=len(normFileList) spamFilelen=len(spamFileList) #获得停用词表,用于对停用词过滤 stopList=spam.getStopWords() #获得正常邮件中的词频 for fileName in normFileList: