20191123_python朴素贝叶斯算法实现

这个单子我对自己做一个反省,可能是因为对方怀疑我没有按照他的要求给他做,但是我真的是按要求做完了,我又不骗他,骗他就是骗自己嘛,做技术自己吧自己骗,那还有什么意思
这是做一个文本分类吧,下面是需求 1.利用爬虫爬取一些财经类或娱乐的文章
并存放在文档里面
2.在运行框中输入检索的关键词,用jieba分词打散成词汇,形成关键词
3.在建立的索引表(tf-idf)中,搜索关键词中出现的词汇
4.在所有包含关键词的文档中,计算和关键词的余弦相似度,降序排列。
5.返回窗口搜索到的内容。
参考网站
https://blog.csdn.net/xiexf189/article/details/79092629

最后可以做出来这样一个东西
20191123_python朴素贝叶斯算法实现_第1张图片

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

你可能感兴趣的:(接单)