資源描述:
《貝葉斯分類代碼.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、Python運(yùn)行下——貝葉斯分類代碼最近在網(wǎng)站上謾罵的人比較多,想寫一個(gè)語義分類器,讓電腦自動(dòng)屏蔽那些罵人的評(píng)論,怎么辦呢?這就用到了一個(gè)機(jī)器學(xué)習(xí)的算法——貝葉斯文本分類器。這個(gè)算法很有用處,可以讓電腦識(shí)別人類語言,如果加上一點(diǎn)心理學(xué)的知識(shí),可以讓電腦理解人類的文章并讓電腦判斷作者的個(gè)性特征,這就復(fù)雜了,現(xiàn)在我們先做一個(gè)簡(jiǎn)單的示范。1.首先是需要一個(gè)樣本集,用于訓(xùn)練文本分類器:這里面用到了一個(gè)分詞算法【cs.perse】,其實(shí)是一個(gè)機(jī)械分詞算法,cs.py文件的代碼粘貼在最下面。2.下面的函數(shù)利用樣本創(chuàng)建一個(gè)詞表
2、,也就是所有詞的集合1.下面的函數(shù)將一個(gè)詞表轉(zhuǎn)換成詞向量2.訓(xùn)練樣本得到臟話/非臟話的詞分布概率3.利用貝葉斯條件概率,計(jì)算輸入的一句話到底是不是罵人的話,如果是罵人的話,就返回1,否則返回01.最后測(cè)試一下【'fuckyou!motherfucker!'】這句話,輸出結(jié)果為:1##########以下是cs.py文件的代碼#####################coding:utf8importtimeimportpandasaspdimportstringdefload_words(dic_file='./
3、Freq/SogouLabDic.dic'):??t=time.time()??word_dic={}??first_word_dic={}??forlineinopen(dic_file):????line=unicode(line,'utf8').split()????word=line[0]????word_len=line[1]????sex=line[2]iflen(line)==3elseNone????first_word_dic.setdefault(word[0],[])????first_wo
4、rd_dic[word[0]].append(word)????word_dic[word]=(word_len,sex)??forfirst_word,wordsinfirst_word_dic.items():????word_dic[first_word]=sorted(words,key=lambdax:len(x),reverse=False)??print'load_wordstime:',time.time()-t??returnfirst_word_dic,word_dicfirst_word_d
5、ic,word_dic=load_words()model_dic={??'letters':string.ascii_letters,??'digits':string.digits,??'punctuation':string.punctuation,??}defmatch_ascii(i,sentence):??result=''??foriinrange(i,len(sentence)):????ifnotsentence[i]instring.ascii_letters:break????result+
6、=sentence[i]??returnresultdefmatch_word(i,sentence,first_word_dic=first_word_dic):??first_word=sentence[i]??ifnotfirst_word_dic.has_key(first_word):????iffirst_wordinstring.ascii_letters:??????returnmatch_ascii(i,sentence)????return''??words=first_word_dic[fi
7、rst_word]??forwordinwords:????ifsentence[i:i+len(word)]==word:??????returnword??returnfirst_worddefperse(sentence):??ifsentence:????words=[]????i=0????whilei8、ed_word)??????i+=len(matched_word)????returnwordsif__name__=='__main__':??sentence=u'我曾經(jīng)跨過山和abddfdf大海!互,聯(lián)網(wǎng)詞語搭配關(guān)系庫(kù)來自于對(duì)SOGOU搜索引擎所索引到的中文互聯(lián)網(wǎng)語料的統(tǒng)計(jì)分析,統(tǒng)計(jì)所進(jìn)行的時(shí)間是2006年10月,涉及到的互聯(lián)網(wǎng)語料規(guī)模在1億頁(yè)面以上。涉及到的搭配