成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

web算法中樸素貝葉斯如何實(shí)現(xiàn)文檔分類

本篇內(nèi)容主要講解“web算法中樸素貝葉斯如何實(shí)現(xiàn)文檔分類”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“web算法中樸素貝葉斯如何實(shí)現(xiàn)文檔分類”吧!

葉集網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,葉集網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為葉集超過(guò)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的葉集做網(wǎng)站的公司定做!

作業(yè)要求:

實(shí)驗(yàn)數(shù)據(jù)在bayes_datasets文件夾中。其中,

? train為訓(xùn)練數(shù)據(jù)集,包含hotel和travel兩個(gè)中文文本集,文本為txt格式。hotel文本集中全部都是介紹酒店信息的文檔,travel文本集中全部都是介紹景點(diǎn)信息的文檔;

? Bayes_datasets/test為測(cè)試數(shù)據(jù)集,包含若干hotel類文檔和travel類文檔。

用樸素貝葉斯算法對(duì)上述兩類文檔進(jìn)行分類。要求輸出測(cè)試數(shù)據(jù)集的文檔分類結(jié)果,即每類文檔的數(shù)量。

(例:hotel:XX,travel:XX)

貝葉斯公式:

樸素貝葉斯算法的核心,貝葉斯公式如下:

web算法中樸素貝葉斯如何實(shí)現(xiàn)文檔分類

代碼實(shí)現(xiàn):

第一部分:讀取數(shù)據(jù)

f_path = os.path.abspath('.')+'/bayes_datasets/train/hotel'

f1_path = os.path.abspath('.')+'/bayes_datasets/train/travel'

f2_path = os.path.abspath('.')+'/bayes_datasets/test'

ls = os.listdir(f_path)

ls1 = os.listdir(f1_path)

ls2 = os.listdir(f2_path)

#去掉網(wǎng)址的正則表達(dá)式

pattern = r"(http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*,]|(?:%[0-9a-fA-F][0-9a-fA-F]))+)|([a-zA-Z]+.\w+\.+[a-zA-Z0-9\/_]+)"

res = []

for i in ls:

with open(str(f_path+'\\'+i),encoding='UTF-8') as f:

lines = f.readlines()

tmp = ''.join(str(i.replace('\n','')) for i in lines)

tmp = re.sub(pattern,'',tmp)

remove_digits = str.maketrans('', '', digits)

tmp = tmp.translate(remove_digits)

# print(tmp)

res.append(tmp)

print("hotel總計(jì):",len(res))

for i in ls1:

with open(str(f1_path + '\\' + i), encoding='UTF-8') as f:

lines = f.readlines()

tmp = ''.join(str(i.replace('\n', '')) for i in lines)

tmp = re.sub(pattern, '', tmp)

remove_digits = str.maketrans('', '', digits)

tmp = tmp.translate(remove_digits)

# print(tmp)

res.append(tmp)

print("travel總計(jì):",len(res)-308)

#print(ls2)

for i in ls2:

with open(str(f2_path + '\\' + i), encoding='UTF-8') as f:

lines = f.readlines()

tmp = ''.join(str(i.replace('\n', '')) for i in lines)

tmp = re.sub(pattern, '', tmp)

remove_digits = str.maketrans('', '', digits)

tmp = tmp.translate(remove_digits)

# print(tmp)

res.append(tmp)

print("test總計(jì):",len(res)-616)

print("數(shù)據(jù)總計(jì):",len(res))

這一部分的任務(wù)是將放在各個(gè)文件夾下的txt文檔讀入程序,并將數(shù)據(jù)按照需要的形式存放。數(shù)據(jù)分為訓(xùn)練集和測(cè)試集,而訓(xùn)練集又包括景點(diǎn)和酒店兩類,故數(shù)據(jù)總共分為三類,分三次分別讀取。在訓(xùn)練集的每一個(gè)txt文件中最前端都有一串網(wǎng)址信息,我用正則表達(dá)式將其過(guò)濾掉,后來(lái)發(fā)現(xiàn)此部分并不會(huì)影響最終的結(jié)果。之后將三類文檔依次讀取,將讀取的結(jié)果存放入一個(gè)結(jié)果list中。list的每一項(xiàng)為一個(gè)字符串,存放的是一個(gè)txt文件的去除掉要過(guò)濾的數(shù)據(jù)之后的全部信息。最終得到travel文件夾下共有308個(gè)文檔,hotel文件夾下也有308個(gè)文檔,測(cè)試集共有22個(gè)文檔。

第二部分:分詞,去除停用詞

stop_word = {}.fromkeys([',','。','!','這','我','非常','是','、',':',';'])

print("中文分詞后結(jié)果:")

corpus = []

for a in res:

seg_list = jieba.cut(a.strip(),cut_all=False)#精確模式

final = ''

for seg in seg_list:

if seg not in stop_word:#非停用詞,保留

final += seg

seg_list = jieba.cut(final,cut_all=False)

output = ' '.join(list(seg_list))

# print(output)

corpus.append(output)

# print('len:',len(corpus))

# print(corpus)#分詞結(jié)果

這一部分要做的是設(shè)置停用詞集,即分詞過(guò)程中過(guò)濾掉的無(wú)效詞匯,將每一個(gè)txt文件中的數(shù)據(jù)進(jìn)行中文分詞。首先stop_word存放了停用詞集,使用第三方庫(kù)jieba進(jìn)行中文分詞,將去除停用詞后的結(jié)果最后放入corpus中。

第三部分:計(jì)算詞頻

#將文本中的詞語(yǔ)轉(zhuǎn)換為詞頻矩陣

vectorizer = CountVectorizer()

#計(jì)算各詞語(yǔ)出現(xiàn)的次數(shù)

X = vectorizer.fit_transform(corpus)

#獲取詞袋中所有文本關(guān)鍵詞

word = vectorizer.get_feature_names()

#查看詞頻結(jié)果

#print(len(word))

for w in word:

print(w,end=" ")

print(" ")

#print("詞頻矩陣:")

X = X.toarray()

#print("矩陣len:",len(X))

#np.set_printoptions(threshold=np.inf)

#print(X)無(wú)錫人流多少錢 http://www.bhnnk120.com/

這一部分的任務(wù)是將文本中的詞語(yǔ)轉(zhuǎn)換為詞頻矩陣,并且計(jì)算各詞語(yǔ)出現(xiàn)的次數(shù)。詞頻矩陣是將文檔集合轉(zhuǎn)換為矩陣,每個(gè)文檔都是一行,每個(gè)單詞(標(biāo)記)是列,相應(yīng)的(行,列)值是該文檔中每個(gè)單詞或標(biāo)記的出現(xiàn)頻率。

但我們需要注意的是,本次作業(yè)的詞頻矩陣的大小太大,我曾嘗試輸出整個(gè)詞頻矩陣,直接導(dǎo)致了程序卡頓,我也嘗試了輸出矩陣的第一項(xiàng),也有近20000個(gè)元素,所以如果不是必需,可以不輸出詞頻矩陣。

第四部分:數(shù)據(jù)分析

# 使用616個(gè)txt文件夾內(nèi)容進(jìn)行預(yù)測(cè)

print ("數(shù)據(jù)分析:")

x_train = X[:616]

x_test = X[616:]

#print("x_train:",len(x_train))

#print("x_test:",len(x_test))

y_train = []

# 1表示好評(píng)0表示差評(píng)

for i in range(0,616):

if i < 308:

y_train.append(1)#1表示旅店

else:

y_train.append(0)#0表示景點(diǎn)

#print(y_train)

#print(len(y_train))

y_test= [0,0,0,1,1,1,0,0,1,0,1,0,0,1,0,0,1,1,1,0,1,1]

# 調(diào)用MultionmialNB分類器

clf = MultinomialNB().fit(x_train,y_train)

pre = clf.predict(x_test)

print("預(yù)測(cè)結(jié)果:",pre)

print("真實(shí)結(jié)果:",y_test)

print(classification_report(y_test,pre))

hotel = 0

travel = 0

for i in pre:

if i == 0:

travel += 1

else:

hotel += 1

print("Travel:",travel)

print("Hotel:",hotel)

這部分的任務(wù)是將所有的訓(xùn)練數(shù)據(jù)根據(jù)其標(biāo)簽內(nèi)容進(jìn)行訓(xùn)練,然后根據(jù)訓(xùn)練得到的結(jié)果對(duì)測(cè)試數(shù)據(jù)進(jìn)行預(yù)測(cè)分類。x_train代表所有的訓(xùn)練數(shù)據(jù),共有616組;其對(duì)應(yīng)的標(biāo)簽為y_train,也有616組,值為1代表酒店,值為0代表景點(diǎn)。x_test代表所有的測(cè)試數(shù)據(jù),共有22組;其對(duì)應(yīng)標(biāo)簽為y_test,亦22組,其值則由我自己事先根據(jù)其值手工寫在程序中。此時(shí)需要注意的是測(cè)試集文件在程序中的讀取順序可能與文件夾目錄中的順序不一致。最后將測(cè)試集數(shù)據(jù)使用訓(xùn)練集數(shù)據(jù)調(diào)用MultionmialNB分類器得到的模型進(jìn)行預(yù)測(cè),并將預(yù)測(cè)結(jié)果與真實(shí)結(jié)果進(jìn)行對(duì)比。

得出運(yùn)行結(jié)果。

到此,相信大家對(duì)“web算法中樸素貝葉斯如何實(shí)現(xiàn)文檔分類”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

文章名稱:web算法中樸素貝葉斯如何實(shí)現(xiàn)文檔分類
文章來(lái)源:http://jinyejixie.com/article32/ggehpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、電子商務(wù)、網(wǎng)站排名、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
阿巴嘎旗| 双桥区| 华安县| 太和县| 兴海县| 镇巴县| 阆中市| 德庆县| 嵊州市| 德惠市| 庆城县| 延川县| 北海市| 德兴市| 静宁县| 昌邑市| 清水县| 正蓝旗| 仙桃市| 白河县| 乌海市| 平潭县| 桃江县| 镇原县| 沁源县| 温州市| 崇仁县| 吉安市| 启东市| 繁峙县| 阿坝| 七台河市| 瑞安市| 新沂市| 治多县| 綦江县| 烟台市| 额尔古纳市| 丁青县| 涟源市| 南和县|