20191123_python樸素貝葉斯算法實現

這個單子我對自己做一個反省,可能是因爲對方懷疑我沒有按照他的要求給他做,但是我真的是按要求做完了,我又不騙他,騙他就是騙自己嘛,做技術自己吧自己騙,那還有什麼意思
這是做一個文本分類吧,下面是需求 1.利用爬蟲爬取一些財經類或娛樂的文章
並存放在文檔裏面
2.在運行框中輸入檢索的關鍵詞,用jieba分詞打散成詞彙,形成關鍵詞
3.在建立的索引表(tf-idf)中,搜索關鍵詞中出現的詞彙
4.在所有包含關鍵詞的文檔中,計算和關鍵詞的餘弦相似度,降序排列。
5.返回窗口搜索到的內容。
參考網站
https://blog.csdn.net/xiexf189/article/details/79092629

最後可以做出來這樣一個東西
在這裏插入圖片描述

import pandas as pd
import jieba
from gensim import corpora,models,similarities
# 載入語料
raw = pd.read_csv("data/小說.txt",
                  names = ['txt'], sep ='aaa', encoding ="utf-8" ,engine='python')

# 章節判斷用變量預處理
def m_head(tmpstr):
    return tmpstr[:1]

def m_mid(tmpstr):
    return tmpstr.find("章")

raw['head'] = raw.txt.apply(m_head)
raw['mid'] = raw.txt.apply(m_mid)
raw['len'] = raw.txt.apply(len)
# 章節判斷
chapnum = 0
for i in range(len(raw)):
    if raw['head'][i] == "第" and raw['mid'][i] > 0 and raw['len'][i] < 30 :
        chapnum += 1
    if chapnum >= 40:
        chapnum = 0
    raw.loc[i, 'chap'] = chapnum
    
# 刪除臨時變量
del raw['head']
del raw['mid']
del raw['len']

rawgrp = raw.groupby('chap')
chapter = rawgrp.agg(sum) # 只有字符串列的情況下,sum函數自動轉爲合併字符串
#chapter = chapter[chapter.index != 0]
chapidx = 1
raw[raw.chap == chapidx]
tmpchap_1 = raw[raw.chap == chapidx].copy()
chapidx = 2
raw[raw.chap == chapidx]
tmpchap_2 = raw[raw.chap == chapidx].copy()
(len(tmpchap_2)+64)*0.8
94.4
chapter
txt
chap
1.0 第一章 初臨“呵呵,貌似現在我也只能呵呵了。究竟我得罪哪路大神了,這裏是哪裏?我怎麼來的啊!...
2.0 第二章 滄瀾位面“停”,在無歡正沉醉的時候,一聲停讓無歡嘎然驚醒,“什麼事?”帶着一股欲求不...
3.0 第三章 入山時間如流水一去不回頭,無歡來到這個世界已經快兩年了,自從第一次開始感應到暖流後,...
test_1=tmpchap_1.loc[52:]
test_2=tmpchap_2.loc[95:]
tmpdf = pd.read_csv('停用詞.txt',
                    names = ['w'], sep = 'aaa', encoding = 'utf-8',engine='python')
def function(a):
    word_list=[w for w in jieba.cut(a) if w not in list(tmpdf.w)]
    return word_list
test_1['txt'] = test_1.apply(lambda x: function(x['txt']), axis = 1)
test_2['txt'] = test_2.apply(lambda x: function(x['txt']), axis = 1)
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\w\AppData\Local\Temp\jieba.cache
Loading model cost 1.058 seconds.
Prefix dict has been built succesfully.
D:\anaconda\lib\site-packages\ipykernel_launcher.py:8: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  
D:\anaconda\lib\site-packages\ipykernel_launcher.py:9: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
  if __name__ == '__main__':
#將數據保存在all_doc
all_doc=[]
for i in chapter['txt']:
    all_doc.append(i)
all_doc
['第一章 初臨“呵呵,貌似現在我也只能呵呵了。究竟我得罪哪路大神了,這裏是哪裏?我怎麼來的啊!”無歡很苦惱,只是在課上睡個覺之後就莫名其妙的在一個樹屋裏醒來,是真的樹屋,樹裏面的屋子,樹還是活的,窗檐邊的樹枝上還長着嫩芽。無歡失魂落魄的坐在窗邊的看着天上那一大二小的太陽,“這裏還是地球麼?”“吱---”的一聲,樹屋的門被推開,“小弟弟,你醒了啊,這是今天的午餐,吶,吃飽了才能快快長大”話音爲落,門口隨之出現一位穿着碧綠長裙的少女,十四五歲,身材纖細,衣裙下隱有輪廓。大眼睛,櫻桃嘴,翹鼻樑兩隻耳朵細又尖,說不上很漂亮,只能說是清秀。伴隨少女進來一股自然的氣息隨着門的開啓涌進這小小的樹屋內。無歡很鬱悶,自己明明已經快成年了,醒來後發現自己又回到了十二歲時的狀態,雖然自己平時很淡定,說不上泰山崩於前而面不改色,但至少可以坐過山車而心跳不變,可是看到自己現在這身體,真的很不淡定,這真的不科學啊!“阿雅,我再說一次,弟弟就弟弟,不要加個小字”,某人“咬牙切齒”正色道,“知道了,無歡小弟弟,真囉嗦,阿雅都一十四歲了,叫你聲小弟弟沒錯吧!”阿雅把一盤水果放在桌上,大眼睛對着無歡一閃一閃的道。無歡有點無語,“天啊!這世界真有精靈啊!果然長的好弱啊,一拳是不是就可以拎倒呢,要不要試試。”這是某個神經不正常傢伙的心聲。“對了,剛剛歐大叔讓我來告訴你,吃完飯讓你去找他,他有事找你。”“哦”伴隨着啃水果的一聲“卡滋”聲結束了這段沒營養的對話。歐大叔就是撿到無歡,並把他帶回村裏的人,這個村裏唯一的鐵匠。對於這位歐大叔,無歡的評價就是,這是一個有故事的滄桑老男人。說不上爲什麼,面對歐大叔,無歡感覺,就是危險,絕對的危險,沒來由的預感。對於自己的預感無歡很自信,號稱比女人的第六感還第六感,只要心血來潮有預感,絕對沒出過錯的。吃完午飯,也就是一盤水果,雖然無歡一種水果也不認識,但是這水果真的很香甜,很頂飽,很那啥的。出了樹屋,沿着石子小路往鐵匠鋪出發,無歡住村南距村西的鐵匠鋪不遠。一路看着沿途的風景,呼吸着家鄉絕對沒有清新的空氣,無歡一直以爲自己在做夢:你看見一羣精靈在小樹林裏摘水果,幾個手臂比常人大腿粗的大汗的人在砍柴,頂着個大牛角的人在種田,長着翅膀的小孩在天上飛着玩耍.......這裏不會是西方異大陸吧,翼人,獸人加精靈,差個矮人就差不都齊了。村落很小座落於大山腳下,西靠大山,四周是一片茂密的樹林。村子居民不會超過百人,所以地方也不太大,很快無歡就來到村西的鐵匠鋪。鐵匠鋪位於村西頭是入山的必經之地,周圍十丈以內是一片空地,就兩棟中世紀歐洲老式房子樹立在中間很是空曠,可能怕打鐵吵到村民,在往村裏走的方向特意種了幾排大樹做隔音。說是鐵匠鋪其實就是兩棟房子,其中稍大的那棟改建過來的小作坊,除了通紅的爐子破舊的鼓風機,掛滿牆壁的農具,外加一個打了幾十年鐵的中年鐵匠外什麼都沒有。鐵匠就是那位歐大叔,沒人知道歐大叔的名字只知道村裏的村民都叫他歐大叔或老歐。歐大叔每幾個月上山一次找材料,無歡就是他在路上撿的,說來也巧,要不是歐大叔提前幾天下山,可能無歡在昏迷中就進野獸肚子裏了。“你找我啊,歐大叔”,無歡對正蹲在門口抽菸的老鐵匠問道。“恢復的怎麼樣啊,異星人!”“還行,啊……你說什麼?”無歡愣了下顫抖道。“你的靈魂氣息不是這個位面孕育的,我第一次見你就知道了”,歐大叔平靜的回到,就好像正常打招呼一般“你中午吃了麼?”“那我還能回家麼!”無歡不淡定了,問出一直想知道的問題。“可以,不過可能會很困難,現在,你還不行。”淡然的迴應沒有讓無歡後退。“那你能幫我麼?”無歡看着歐大叔那滄桑,卻彷彿能看透世物的眼神認真的問。“可以。”“謝謝。”“現在就開始!”“好的!”******“嘿咻,嘿咻……”大大的鼓風機旁一個小小的身影正努力的鼓着風。“再快點,爐子溫度不夠。”“你沒吃飯麼,再快點。”“停停停,鼓風要均勻,你這樣時快時慢的沒法打鐵啊。”…………小小的打鐵鋪裏不斷傳出這樣或那樣的呵斥。距離上次談話已經過了一個月了,爲了回家無歡真的拼了,滿心期待歐大叔會教自己什麼本事,武技,鬥氣,魔法……可是現在,如果可以的話,無歡真想一拳將前面的這個正拼命使喚自己無良大叔送上牀,最好三天下不來。歐大叔就說了一句話“如果沒有一個合格強健的身體,你什麼都做不了。”就這樣無歡開始了一個月的高強度體力勞作,美其名曰鍛鍊。“爲了回家,我忍!”這已經是無歡第一百三十二次內心對自己做暗示了。終於在三個月後的某一天,歐大叔把無歡叫到跟前道:“這幾個月的鍛鍊,你的身體勉勉強強達到我的最低要求,嗯,明天開始打鐵!”說完轉身就走只剩無歡在火爐旁凌亂,“勉勉強強,我#%@*#...”看着自己初來時白嫩嫩現在已經變的黝黑而且粗糙的手,無語問蒼天。“拉風,砍柴,挑水乾了幾個月,你的體力已經有所增強,雖然還沒達到最理想狀態,現在可以教你打鐵了,記住這以後是你的職業,能不能回去都靠它了!”雖然無歡不知道打鐵和自己能不能回去有什麼關係,既然眼前這位不簡單的歐大叔這麼說,那自己也就只能努力學了。“敲打要有節奏,呼吸要均衡,活用腰部的力量……”“我讓你用腰部力量,不是要你擡屁股,屁股很挺是吧。”“我靠,我是讓你打鐵不是讓你跳舞,擺什麼姿勢啊!”“節奏,節奏打鐵的節奏呢,呼,吸,呼,吸,我要你呼吸不是要你狗喘氣。”這幾個月鐵匠鋪變的很熱鬧,每天時不時都傳出老鐵匠那直衝雲霄訓誡,“可憐的孩子,”這是附近村民的心聲,“這是要笨成什麼樣,才能把那麼淡定的歐大叔氣成這樣。”無歡很無辜,真的!明明照着歐大叔的要求做到了,明明看到歐大叔眼中滿意的神色,怎麼說變臉就變臉呢!“是塊打鐵的料子,照這個速度半年後就可以進下個階段了,就比他慢了一個月,”想到此,歐大叔眼中落寞一閃而過。這幾個月無歡很累也很爽,累是因爲歐大叔每天都會壓榨無歡每一份體力極限,一天下來連擡個手都在抖。這樣高強度的勞作一般人幾星期就會整個身體跨掉,但無歡卻堅持了幾個月,這其中除了前幾個月的鍛鍊成果以外歐大叔的控制起了決定作用。在無歡到極限前來個停頓,剛回一口氣就立刻開工一口氣突破這個極限,有鬆有馳恰到好處在壓榨無歡每份力量的同時又不會損傷他的根基,單單這份控制力也只能說歐大叔不簡單。隨着打鐵節奏的熟悉,運用全身能用的力氣,舉手投足間的流暢配合,每一次鐵錘和鐵塊的碰撞砸出那清脆而有質感的一聲“當…”。不知從什麼時候開始,無歡很喜歡聽打鐵的聲音純粹而厚重,“難道我天生就是打鐵的,我不是找虐麼。”看着無歡從鐵礦中提取生鐵打成熟鐵,又在熟鐵中打出鐵精,歐大叔眼中神色一天比一天炙熱,“我沒看錯吧,打鐵都能打進忘我之境,看他打鐵竟然有種享受的感覺,火烈好像達到這種境界用了多久,一年?兩年?絕對沒無歡快。”無歡很享受,度過了剛開始的煎熬,現在每錘一下都是種享受,全身肌肉骨骼關節甚至毛孔都噴勃出一種意念,就是爽,“打鐵,我喜歡!!!”',
 '第二章 滄瀾位面“停”,在無歡正沉醉的時候,一聲停讓無歡嘎然驚醒,“什麼事?”帶着一股慾求不滿的幽怨語氣中,歐大叔渾身寒毛一顫,“我靠,變態啊,知道的以爲你在打鐵,不知道以爲我把你怎麼着了。”“無歡啊,從你開始跟我學習到現在已經九個月了吧,現在基礎部分到此落一個段落,但是你要記住,即使以後成就再高也不能忘了,基礎纔是你成長的根基。”越說到後面,歐大叔語氣越凝重。“是,我不會忘記,”看着歐大叔嚴肅的語氣,無歡也正色回答。“你對這個世界的修煉體系瞭解多少。”“說實話,兩眼一抓瞎,什麼都不清楚。”“那好,修煉第一課先給你普及下知識,你想從哪方面開始?”“歷史。”“爲什麼不選別的?”“以史爲鑑,通古今。”“好吧,那就從歷史開始,首先,你要知道我們現在所處的是一個位面小世界,無數個位面小世界組成了一個廣大的小千位面世界。”“有小千,那麼是不是有更高一層的位面?”“有,但以你現在連螻蟻都算不上的實力,更高一層對你來說只是個神話。”“好吧,那你先說歷史吧!”“現在我們所在這個位面叫滄瀾大陸,存在至今有歷史記載已經有一億多年了,屬第四紀元後期了。”“第四紀元,難道還有第一二三紀元麼?”“天地有壽命,何況星球位面,每過一元,天地都有場浩劫,前面已經經歷過三次了,一元就是一億兩千萬九百六十萬年,這一紀元結束離浩劫還早着呢!”歐大叔瞪了一眼正準備中途發問好奇寶寶無歡。“這一億年間,經歷了蠻荒,神話,百族,爭霸,融合,星際等各個時代,因爲各個位面逐漸接軌,逐漸統一了語言,文字和各個修煉等級……”聽着歐大叔娓娓道來的講述,一個浩大而又有神奇的大世界在無歡面前徐徐展開。“滄瀾位面爲一塊在天地間漂浮的大陸,天圓地方東西南北縱橫近千萬裏,這個大小在小千位面中已屬高級位面,現在比滄瀾位面更高級的也就只有那十大超級位面了,因爲滄瀾位面的廣大從而誕生了無數族羣統稱百族,很早以前爲生存空間百族爭霸,各族涇渭分明,但現今百族融合所以也就沒有那麼明顯的區分了,加上生存空間的無限擴大種族戰爭在星際時代就結束了,現在更多的是這個位面的原住民聯合起來對抗其他位面的欺壓。,經過近千萬年的演變純種的百族很少了,有的也就是融合了無數族羣的滄瀾人了,這就是整個位面大概的歷史了。”如果外人在這裏肯定要震驚了,大陸通史雖然說不上什麼祕密,但有關紀元,浩劫等詞彙不到一定地位是根本不知道的,這是不管在哪個位面,只有站在巔峯的那批存在纔有資格知曉的祕密啊。“說完歷史再來聊聊現在這個世界職業吧,如果你要找到回家路那你一定要了解你要幹什麼才能更省時省力。”“比如說呢!”“比如說,你做個傭兵武士,那你要完成各種任務累計錢財還要提升等級,要知道只有高級人才纔有權利使用星際傳送陣進行星際旅行的,如果你家鄉是個鳥不拉屎,雞不生蛋的原始位面,那恭喜你,你一輩子也回不去。”“那我能做什麼啊?”無歡鬱悶的道,他自己知道自己老家連上個月球都難,何況星際旅行,自己家鄉就是個原始位面。“職業本無貴賤,但偏偏有幾門職業因爲特殊性,就比其他職業難得點,地位也就稍微高一點,比如鑄鍊師,恭喜你你現在做的就是這門職業的入門基礎訓練。”無歡無語的看着眼前這個有點陷入王婆賣瓜境界的大叔“那修煉等級有什麼區別麼?”“這個問的好啊,在以前數個時代中修煉等級是很混亂的,一個種族一個樣,現在我們沿用星際標準,稱之爲九重登天道!”“這麼霸氣的名字,有什麼講究麼?”“一個修煉等級分九重,一爲始,九爲終,現今分爲十大級,九十個小階段。”“那我要什麼等級纔有你說的星際旅行資格呢?”“這麼說吧十個等級是蛻凡-超脫-入微-靈光-天衍-顯聖-法相-唯我-徹地-通天,你至少要顯聖以上才能使用星際傳送陣並承受星際間的空間擠壓。”“好吧,那我要多久才能修煉到,不要告訴我要百八十年啊。”“我想想,據記載,最快的人好像用了十年就達到了通天的,你雖然沒他那麼逆天但幾十年時間也可以達到顯聖的。”“還好還好,我真怕等我回家了,老家都不存在了。”“現在你瞭解了沒有。”“嗯,有點了解了,那大叔我們趕快開始吧。”“不要急,現在修煉的主旋律是法則,不管你是武者,刺客,術士,騎士,煉丹,鑄造,體修等等最後終究是要走上法則這條路,所以無數先賢大能前仆後繼完善了整套修煉流程,既然是修法則,那麼你的體質是什麼,就決定了你要走那條路。”“那我是什麼體質!”“你的體質在撿到你第一天我就探查過了,火雷爲主,其他風,木,冰等相對較弱,天生適合選鑄煉,難道你沒發現普通人站火爐邊幾天就會燒傷,你就變的黑了點麼!”“是麼,沒注意啊,呵呵……”無歡乾笑道,“我這雷火體質有什麼優點麼,不會就比較耐火燒吧!”“啪”的一聲,無歡捂着頭怒視着前面的無良大叔,“別得了便宜還賣乖,雷火是天地間最狂暴的力量之一,爆發性極強,這已經是世間少有的超強力攻擊屬性了,除了空間屬性,這已經是最強的了。”“好吧,下次能不打頭麼,打傻了你負責啊。”無歡幽怨的說道。“打你是爲了讓你記得住,現在教你第一階段的修煉方式跟我出來。”說罷,歐大叔徑直往門外而去,無歡急忙跟上。走到鐵匠鋪旁的空地上,歐大叔對無歡說:“現在,你站在這裏閉上眼,全身放鬆,幻想站在火爐旁,用我教你的呼吸法呼吸,等體內有股熱氣的時候試着引導往胸口走。”說罷走到劈柴的樹墩旁坐下,無歡依法照做,呼~吸~呼~吸,一個時辰,兩個時辰……一下午過去了。無歡沮喪的回頭對歐大叔說:“大叔,我除了感覺全身暖烘烘之外,沒感覺到你說的那股熱氣啊!”“沒感覺到就對了,如果你站一個下午就感覺到那股氣,那你就是我師父了,還有以後你不要叫我大叔了沒規矩,要稱呼我爲老師,知道麼!”“哦,是,老師。”無歡沮喪的叫到。“臭小子,整個小千位面有多少人想叫我老師都沒資格,你倒好叫我老師很掉價麼,”歐大叔憤憤的想着,“臭小子,明天開始,每天上午給我打出十塊鐵精,打不完不準吃飯,下午就站這繼續感應,”說完理也不理無歡直接回屋去了。“十塊!你妹啊!打出七塊就是我現在體能極限了,你怎麼不去....”話爲說完這時從屋裏飛出一塊石子直砸無歡腦門而去。“咚~~”嗷嗚~~某人直接抱頭蹲地發出一聲悽嚦的狼嚎。“下次在這麼目無尊長,就不是石頭這麼簡單的了,還蹲着幹嘛繼續站着感應去。”無歡心裏無聲的暗罵“算你狠!!!”繼續感應去了。',
 '第三章 入山時間如流水一去不回頭,無歡來到這個世界已經快兩年了,自從第一次開始感應到暖流後,第七天無歡將那股氣引入胸口,之後他的苦日子就來了。每天歐大叔佈置的任務正好完全消耗掉了無歡體能和元氣,並且今天任務肯定比前一天重一點不會讓人絕望,如果拼命去做的肯定完成,正正好到達極限臨界點。還有累死累活一天後晚上還不能立刻睡,要按照歐大叔所傳的功法將元氣一遍又一遍行走全身,慢慢的從原來的一條經脈到每過七天增加一條,三個月後身體奇經八脈都走遍了,是爲一週天。照歐大叔的說法感應到元氣了並運行一週天說明你正式踏入蛻凡第一重了,如果一刻鐘內運行一週天是一重,二週天就是二重以此類推。哪天你如果能在一刻鐘內運行九大周天,並且將元氣提純十二次是爲十二轉達致氣化液,那你可以進入第二階段超脫了,少年繼續努力吧。“說的輕巧,我現在運行一週天都要三個時辰,一刻鐘,還要提純十二次,還全是液態元氣,靠,可能麼!我還真不信這個邪了。”無歡是個孤兒所以性格有點冷淡甚至可以說有點漠然,想回家再看看哪怕認識的人都死光也要回去,因爲那裏是他的根!哪怕落葉也要歸根,如果連這個根都沒了話,那無歡可真的是天地一棄兒了,不如死了乾淨,如果不是有這個信念撐着,他可能早就垮了吧。在無歡日後闖蕩位面時發現,歐大叔所說的蛻凡標準和現行大陸的標準不太一樣,同樣是九重,大陸甚至整個小千位面都是要求半個時辰內做到運行九周天,還有隻要同步九轉,元氣化液態,就可破入超脫境。元氣提純十二次,這也就是說如果沒有一個足夠強的肉體,無歡真的可能會把自己活活練爆了。而元氣是現今修煉初步接觸的天地靈氣中最低端的一種靈氣,最爲溫和,卻是溫養生靈體內臟器經絡最爲有效的靈氣,能用這麼溫和的元氣把自己練爆,可以想象歐大叔傳的是什麼功法。蛻凡-超脫-入微三大境界又被稱爲基礎期,日後爬多高,就看這三大階段基礎如何,蛻凡又被稱爲基礎中的基礎,據以往歷史來說,蛻凡九重,理論上可以說極限是十二轉,而能完成十二轉的,如無意外都入高深境界甚至更進一步。經過幾個月的修煉,無歡已經能夠在一刻鐘內運行五轉,也就是蛻凡五重,可提純元氣五次。每天白天除了打鐵還開始逐步學習歐大叔所傳的鍛造技巧和經驗,鑄鍊師職業本是一門大學科,裏面詳細分可爲鍛造師,鍊金師,篆刻師等等。一般人會在入門後選擇一項主業和幾項副業,可歐大叔教給無歡的卻是包羅萬象的,各個領域都有涉及,以爲鑄造服務爲目的進行大串聯,真真把各分支都囊括了。現在大陸上流行一句話“得罪了鑄鍊師,他可以讓你空手和人搏鬥。”一句很霸道卻又性命悠關話成爲整個位面金玉良言,就這一句話把鑄鍊師提到了與煉丹師,銘文師並稱最不能惹的職業。每次聽到這句話,無歡兩眼都會放光“太牛了,簡直比我爸是李剛還牛。”這一天,歐大叔把無歡叫過來說:“明天你和我上山,學再多知識沒實踐過,你是不會正確使用的。”“好!”第二天一大早,無歡收拾了一下東西放入空間袋裏就和歐大叔出門了,沿着一條小路出村,踏入山腳的樹林,一轉身就已失去了兩人的身影。空間設備在大陸上已極爲普及就好像現在我們隨手買個錢包一樣,價值的差別就是容量的大小,其中可裝載活物空間袋極爲稀少甚至堪稱極品。落日山脈地處大陸中西部,因太陽落下的最後一縷夕陽而聞名,佔地橫跨南北百萬裏是周邊幾百個大小國家的邊防線,也是大陸第一山脈,其內珍寶無數,兇獸密佈,即可使你一夜暴富,也可讓你悄無聲息的消失在世間。在羣山密林深處遠遠走來兩個身影,一高大,一瘦小,高大的那人是個中年大叔,滿臉歲月的痕跡,飽經滄桑,瘦小的那個是個少年最多隻有十三四歲,臥蠶眉丹鳳眼,一張還算秀氣的臉透着股稚氣,偏瘦卻精幹,皮膚透着健康的古銅色,一臉淡然的跟在中年大叔背後。這正是歐大叔和無歡,他們已經進山三天了,一路上歐大叔不斷向無歡介紹在野外生活要注意什麼,吃的果子和野菜哪些不能吃的,晚上露營最好在帳篷周圍一圈撒下藥粉避免被蚊蟲叮咬,也可防野獸等等。落日山脈多兇獸,無歡也只遠遠見過兩次,最後還是跟着大叔繞過它們的領地,“兇獸也是以前百族之一,其中大能者一樣可通天徹地,它們不是野獸可它們的始祖有一部分是野獸,它們也有智慧也可修煉,雖然渾身是材料但在沒有實力以前切莫招惹,因爲其他族羣對兇獸來說也是一堆材料。”這是歐大叔的原話。“有智慧,會修煉,這不是妖麼,”無歡想着問“兇獸體內不會有內丹吧?如果有人大舉捕殺兇獸,那他不發了啊”“有,但要看你有沒有這個命去拿,”歐大叔嚴肅道,“落日山脈有十大凶獸坐鎮,所以其他族羣也不敢太過於捕殺兇獸,這是雙方高層的締結的盟約,把這裏當成試煉場磨礪後裔們用的,如果一方違約大肆殺戮的話,那就是一羣通天境的怪物在大戰了,大陸不知道要被移平多少地方。”“這麼恐怖,修煉到後面真的可以移山填海麼?”無歡無限嚮往着道。“可以,法相初期全力出手就可移平一座山,何況高法相三個境界的通天境,須知越到後面幾個境界,一重天的差距就是天地,一步一重天啊!”無歡和歐大叔在山上待了近半個月,無歡也從一開始的手忙腳亂到現在的泰然自若。兩人一直往山裏走直到目的地:一個矮人族經營的礦場。矮人一如傳說中的一樣,矮小,粗壯,滿臉鬍子,矮人對於歐大叔的到來表示熱烈歡迎,歐大叔顯然也是常客,和幾個明顯是長者的矮人低頭聊幾句就跑沒影了,剩下個無歡面對一羣高度只到他腰部的“大爺”。“你就是歐大師的弟子?”某矮人質疑道“你長的好瘦啊,年輕人要吃飽啊,別挑食啊!”某矮人關心道“歐大師有沒有教你打造靈器啊?”想交流的某矮人道........無歡突然感覺自己像是進動物園了,只不過這次他是被參觀的對象,被一羣矮人圍着。正當無歡感覺有點尷尬時遠處傳來的一道聲音,蒼老卻又中氣十足:“好了,你們沒看到小夥子被你們問的不好意思麼。”很快周圍圍着的矮人自覺在無歡前面分開了可供一個人行走的通道,從對面走來了一個比普通矮人高一個頭的老年矮人。如果無歡沒記錯的話,剛剛他就是和歐大叔一起消失的幾個長者之一。“孩子,你好我是矮人族的長老,我叫雷洪,歐大師和我們族的其他長老有事,他託我照顧一下你。”雷洪長老說道。“你好雷洪長老,我叫無歡,給你添麻煩了。”無歡客氣回道。“這是小事,歐大師是我們的貴客,照顧下他弟子是應該的,”話未完雷洪長老對着礦洞發現大吼,“雷濤,你個臭小子在哪,還不過來.....”不一會兒,遠遠傳來一陣略顯稚氣的聲音“來了,來了,再喊耳朵都聾了,您老這麼大年紀了這麼大聲不怕腦充血啊......”人未到聲先至,漸漸地從洞中走來一年輕矮人,也說不上是矮人,他身高明顯比無歡還高一個頭,濃眉大眼,國字臉,臉上有一圈絨毛,赤裸上身,體格十分雄壯。“無歡,這是我孫子雷濤十五歲你們年齡彷彿,以後就由他招待你了,你在礦場有什麼事找他就行了,嗯,我有事先走了!”話沒說完雷洪長老已瞬間消失在礦洞之中,只聽見從洞中隱隱傳來“雷濤,無歡就歸你照顧了,如果照顧不好,我就拔了你的皮.....”看着突然出現又很快消失的長老,無歡感覺自己真像個球,又被踢了。“你就是老頭要我照顧人?”雷濤上下打量無歡道。“應該是我。”無歡鬱悶道。“好吧,那你有什麼需要可以和我說,這一帶我還比較熟。”“好,謝謝!”看着眼前明顯像人類多過像矮人的矮人族少年,突然想起歐大叔說過的百族融合,看來雷濤不是純種矮人。']
len(all_doc)
3
#對目標文檔進行分詞,並且保存在列表all_doc_list中
all_doc_list = []
for doc in all_doc:
    doc_list = [word for word in jieba.cut(doc)]
    all_doc_list.append(doc_list)
data=pd.DataFrame([all_doc_list])
data.to_csv('all_doc_list.txt')

2.在運行框中輸入檢索的關鍵詞,用jieba分詞打散成詞彙,形成關鍵詞

#把測試文檔也進行分詞,並保存在列表doc_test_list中
doc_test=input('請輸入')
doc_test_list = [word for word in jieba.cut(doc_test)]
請輸入看着眼前明顯像人類多過像矮人的矮人族少年,突然想起歐大叔說過的百族融合,看來雷濤不是純種矮人。']
print('關鍵字{0}'.format(doc_test_list))
關鍵字['看着', '眼前', '明顯', '像', '人類', '多過', '像', '矮', '人', '的', '矮人族', '少年', ',', '突然', '想起', '歐', '大叔', '說', '過', '的', '百族', '融合', ',', '看來', '雷濤', '不是', '純種', '矮人', '。', "'", ']']
#用dictionary方法獲取詞袋(bag-of-words)
dictionary = corpora.Dictionary(all_doc_list)
#詞袋中用數字對所有詞進行了編號
dictionary.keys()
data=pd.DataFrame([dictionary.keys()])
data.to_csv('keys.txt')
#編號與詞之間的對應關係
dictionary.token2id
data=pd.DataFrame([dictionary.token2id])
data.to_csv('token2id.txt')
#使用doc2bow製作語料庫
corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]

3.在建立的索引表(tf-idf)中,搜索關鍵詞中出現的詞彙

#把測試文檔也轉換爲二元組的向量
doc_test_vec = dictionary.doc2bow(doc_test_list)
doc_test_vec
[(12, 1),
 (56, 1),
 (89, 1),
 (247, 1),
 (452, 1),
 (513, 2),
 (518, 1),
 (526, 1),
 (532, 1),
 (619, 1),
 (645, 1),
 (734, 2),
 (974, 1),
 (1049, 1),
 (1085, 1),
 (1110, 1),
 (1251, 1),
 (1271, 2),
 (1361, 1),
 (1398, 1),
 (1436, 1),
 (1552, 1),
 (1559, 1),
 (1560, 1),
 (1573, 1),
 (1688, 1)]

相似度分析

#使用TF-IDF模型對語料庫建模
tfidf = models.TfidfModel(corpus)
#獲取測試文檔中,每個詞的TF-IDF值
tfidf[doc_test_vec]
[(532, 0.09978128529332557),
 (974, 0.09978128529332557),
 (1049, 0.09978128529332557),
 (1085, 0.09978128529332557),
 (1110, 0.09978128529332557),
 (1251, 0.2703585191678265),
 (1271, 0.540717038335653),
 (1361, 0.2703585191678265),
 (1398, 0.2703585191678265),
 (1436, 0.2703585191678265),
 (1552, 0.2703585191678265),
 (1559, 0.2703585191678265),
 (1560, 0.2703585191678265),
 (1573, 0.2703585191678265),
 (1688, 0.2703585191678265)]
#對每個目標文檔,分析測試文檔的相似度
index = similarities.SparseMatrixSimilarity(tfidf[corpus], num_features=len(dictionary.keys()))
sim = index[tfidf[doc_test_vec]]
sim
array([0.00113948, 0.01178729, 0.21904808], dtype=float32)

在所有包含關鍵詞的文檔中,計算和關鍵詞的餘弦相似度,降序排列。

#根據相似度排序
a=sorted(enumerate(sim), key=lambda item: -item[1])
print(a)
[(2, 0.21904808), (1, 0.01178729), (0, 0.0011394771)]

窗口搜索到的內容。

print('與第{0}章最匹配'.format(a[0][0]+1))
與第3章最匹配
test_1
txt chap
52 [節奏, 節奏, 打鐵, 節奏, 呼, 吸, 呼, 吸, 我要, 呼吸, 狗, 喘氣] 1.0
53 [幾個, 月, 鐵匠鋪, 變, 熱鬧, 時不時, 傳出, 老, 鐵匠, 直衝, 雲霄, 訓誡... 1.0
54 [無歡, 無辜, 真的] 1.0
55 [明明, 歐, 大叔, 明明, 歐, 大叔, 眼中, 滿意, 神色, 說, 變臉, 變臉] 1.0
56 [塊, 打鐵, 料子, 速度, 半年, 進下個, 階段, 慢, 一個月, 想到, 歐, 大叔... 1.0
57 [幾個, 月, 無歡, 累, 很爽, 累, 是因爲, 歐, 大叔, 壓榨, 無歡, 一份, ... 1.0
58 [高強度, 勞作, 幾星期, 身體, 跨掉, 無歡, 幾個, 月, 前, 幾個, 月, 鍛鍊... 1.0
59 [無歡, 極限, 前來, 停頓, 剛回, 一口氣, 開工, 一口氣, 突破, 極限, 有鬆,... 1.0
60 [打鐵, 節奏, 熟悉, 全身, 能用, 力氣, 舉手投足, 間, 流暢, 配合, 鐵錘, ... 1.0
61 [不知, 無歡, 喜歡, 聽, 打鐵, 聲音, 厚重, 天生, 打鐵, 找虐] 1.0
62 [看着, 無歡, 鐵礦, 中, 提取, 生鐵, 成熟, 鐵, 熟鐵, 中, 打出, 鐵精, ... 1.0
63 [無歡, 享受, 度過, 剛, 煎熬, 每錘, 種, 享受, 全身, 肌肉, 骨骼, 關節,... 1.0
test_2
txt chap
95 [說, 十個, 等級, 蛻, -, 超脫, -, 入微, -, 靈光, -, 天衍, -, ... 2.0
96 [多久, 修煉, 告訴, 我要, 百八十, 年] 2.0
97 [想想, 記載, 最快, 好像, 十年, 通天, 沒, 逆天, 幾十年, 時間, 顯聖] 2.0
98 [還好, 還好, 真怕, 回家, 老家] 2.0
99 [] 2.0
100 [大叔] 2.0
101 [急, 修煉, 主旋律, 法則, 武者, 刺客, 術士, 騎士, 煉丹, 鑄造, 體修, 終... 2.0
102 [體質] 2.0
103 [體質, 撿, 第一天, 探查, 火雷, 風, 木, 冰等, 較弱, 天生, 適合, 選鑄煉... 2.0
104 [沒, …, …, 無歡, 乾笑, 道, 雷火, 體質, 優點, 耐, 火燒] 2.0
105 [啪, 一聲, 無歡, 捂着, 頭, 怒視, 無良, 大叔, 別得, 便宜, 賣乖, 雷火,... 2.0
106 [下次, 打頭, 傻, 負責, 無歡, 幽怨, 說道] 2.0
107 [記得住, 教, 第一階段, 修煉, 方式, 說, 罷, 歐, 大叔, 徑直, 門外, 無歡... 2.0
108 [走, 鐵匠鋪, 旁, 空地, 歐, 大叔, 對無歡, 說, 站, 閉上眼, 全身, 放鬆,... 2.0
109 [說, 罷, 走, 劈柴, 樹墩, 旁, 坐下, 無歡, 依法, 做, 呼, ~, 吸, ~... 2.0
110 [無歡, 沮喪, 回頭, 對歐, 大叔, 說, 大叔, 感覺, 全身, 暖烘烘, 之外, 沒... 2.0
111 [沒, 感覺, 站, 一個, 下午, 感覺, 股氣, 師父, 大叔, 沒規矩, 稱呼, 老師] 2.0
112 [老師, 無歡, 沮喪] 2.0
113 [臭小子, 千位, 面, 人想, 老師, 沒, 資格, 倒好, 老師, 掉價, 歐, 大叔,... 2.0
114 [十塊, 你妹, 打出, 七塊, 體能, 極限, 不去, ...., 話, 說完, 屋裏, ... 2.0
115 [~, ~, 嗷, ~, ~, 某人, 抱頭, 蹲, 發出, 一聲, 悽嚦, 狼嚎] 2.0
116 [下次, 目無尊長, 石頭, 簡單, 蹲, 幹嘛, 站, 感應] 2.0
117 [歡心, 裏, 無聲, 暗罵, 算你狠, 感應] 2.0
result=[]
for i in range(len(test_1['txt'])):
    testEntry = test_1['txt'][int(52+i)]
    doc_test_vec = dictionary.doc2bow(testEntry)
    tfidf[doc_test_vec]
    sim = index[tfidf[doc_test_vec]]
    #根據相似度排序
    a=sorted(enumerate(sim), key=lambda item: -item[1])
#     print(a[0][0])
    result.append(a[0][0])
for i in range(len(test_2['txt'])):
    testEntry = test_2['txt'][int(95+i)]
    doc_test_vec = dictionary.doc2bow(testEntry)
    tfidf[doc_test_vec]
    sim = index[tfidf[doc_test_vec]]
    #根據相似度排序
    a=sorted(enumerate(sim), key=lambda item: -item[1])
#     print(a[0][0])
    result.append(a[0][0])
final=[]
for i in range(len(test_1['txt'])):
    final.append(0)
for i in range(len(test_2['txt'])):
    final.append(1)
from sklearn.metrics import classification_report
class_true = final #正確的分類結果
class_pred = result #實際的分類結果'
print('-------------測試結果-------------------')
target_names = ['第一章','第二章']
print(classification_report(class_true, class_pred, target_names=target_names))
-------------測試結果-------------------
             precision    recall  f1-score   support

        第一章       0.86      1.00      0.92        12
        第二章       1.00      0.91      0.95        23

avg / total       0.95      0.94      0.94        35
發佈了78 篇原創文章 · 獲贊 27 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章