Esempio n. 1
0
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:
Esempio n. 3
0
#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: