python學(xué)習(xí) 一 python語(yǔ)法颈畸,及變量類型
python學(xué)習(xí) 二 爬一個(gè)圖片網(wǎng)站上
python學(xué)習(xí) 二 02 爬一個(gè)圖片網(wǎng)站,獲得主鏈接網(wǎng)址,并保存
python學(xué)習(xí) 二 03 爬一個(gè)圖片網(wǎng)站-獲得所有分頁(yè)網(wǎng)址
python學(xué)習(xí) 二 04 爬一個(gè)圖片網(wǎng)站-解析文件,獲得所有圖片鏈接
python學(xué)習(xí) 二 05 爬一個(gè)圖片網(wǎng)站-下載圖片鏈接
python學(xué)習(xí) 二 06 爬一個(gè)圖片網(wǎng)站-多線程方式下載
python學(xué)習(xí) 三 01 再爬一個(gè)網(wǎng)站,幾行代碼许饿,搞定分類類別
python學(xué)習(xí) 三 02 再爬一個(gè)網(wǎng)站,獲得所有分頁(yè)
python學(xué)習(xí) 三 03 再爬一個(gè)網(wǎng)站舵盈,根據(jù)分頁(yè)陋率,下載圖片
python學(xué)習(xí) 三 04 圖片爬蟲(chóng)工程-組織框架
python 數(shù)據(jù)挖掘篇 一 結(jié)巴分詞
python 數(shù)據(jù)挖掘篇 二 詞云統(tǒng)計(jì)
python 數(shù)據(jù)挖掘篇 三 gensim 使用
python 數(shù)據(jù)挖掘篇四 小說(shuō)數(shù)據(jù)挖掘?qū)嵗?/a>
將每一個(gè)文檔進(jìn)行分詞,形成2維列表形式秽晚,列表的每一項(xiàng)是子列表瓦糟,子列表存儲(chǔ)的文檔的分詞
到此為止,我們已經(jīng)將字符串列表赴蝇,轉(zhuǎn)換為了分詞向量的形式菩浙。
但是,這樣計(jì)算機(jī)還是不好處理句伶,而且劲蜻,也不好進(jìn)行數(shù)學(xué)運(yùn)算,如果能將他們表示成數(shù)學(xué)的方式考余,豈不是非常美妙的一件事先嬉。
3.2分詞向量轉(zhuǎn)換為數(shù)學(xué)空間整形向量(語(yǔ)料)
怎么轉(zhuǎn)換成數(shù)學(xué)表達(dá)形式呢?
其實(shí)這個(gè)肯定都用過(guò)秃殉,你沒(méi)用過(guò)坝初?不太可能吧浸剩,你肯定壓縮過(guò)文件吧
壓縮文件時(shí)钾军,就有個(gè)字典選項(xiàng)鳄袍,沒(méi)錯(cuò),就是通過(guò)字典吏恭,將文件中常用字用數(shù)字替代拗小,這樣就節(jié)省空間了。
這里的字典是什么呢樱哼?簡(jiǎn)單來(lái)說(shuō)哀九,就是字符串和數(shù)字的對(duì)應(yīng)
而gensim提供了字符串向量向字典轉(zhuǎn)換的函數(shù)
打印這個(gè)字典,可以看到搅幅,字符串與數(shù)字對(duì)應(yīng)起來(lái)了 數(shù)字11 代表的就是字符串minors
有了字典阅束,我們就可以將字符串用字典表示成數(shù)學(xué)整形向量了
Doc2bow 作用就是將字符串分詞向量,轉(zhuǎn)換為對(duì)應(yīng)的整形向量
Bow是bag of word 直譯為詞袋茄唐,為啥叫詞袋呢息裸?個(gè)人以為是將字典作為原料,編織成袋子沪编,將字典表示的各個(gè)分詞向量呼盆,裝在這個(gè)袋子里,個(gè)人理解蚁廓,不必糾結(jié)访圃。
下面將所有的文檔,轉(zhuǎn)換為詞袋形式
3.2.2 文件流的形式相嵌,分解轉(zhuǎn)換語(yǔ)料
上述轉(zhuǎn)換為詞袋語(yǔ)料用的是
corpus = [dictionary.doc2bow(text)fortextintexts]
texts 是分詞向量列表腿时,這個(gè)分詞向量列表所有的子分詞列表,都是加載到內(nèi)存中的饭宾,對(duì)于大文件來(lái)說(shuō)批糟,很吃內(nèi)存。
對(duì)此捏雌,gensim提供了流的形式跃赚,每次從硬盤上讀取一段數(shù)據(jù)流,進(jìn)行詞袋轉(zhuǎn)換性湿,比如我想將上千本古典小說(shuō)轉(zhuǎn)換為詞袋的形式纬傲,只能用這種方式一本本的轉(zhuǎn)換,不能一下子放在內(nèi)存中肤频,我的內(nèi)存才可憐的2G叹括,一下子就撐爆了。
自定義一個(gè)類宵荒,迭代的方式讀取文件數(shù)據(jù)汁雷。
這有啥作用呢净嘀?
用處就是,你可以不局限于內(nèi)存大小侠讯,可以將任意數(shù)量的文本轉(zhuǎn)換為整形向量了挖藏。比如我以后打算將1000本古典小說(shuō)轉(zhuǎn)換為整形向量,使用這種方法就可以了厢漩。
如果想構(gòu)建一個(gè)大字典,比如上千本古典小說(shuō)的大字典溜嗜,也不可能一下子將上千本書(shū)加載到內(nèi)存中宵膨,gensim也提供了流加載,逐步擴(kuò)展字典的方法炸宵。
到目前為止辟躏,已經(jīng)可以將字符串轉(zhuǎn)換成整形向量語(yǔ)料形式了。
初始的向量空間土全,是由字典生成的整形向量空間
(字典ID, 該詞在此子分詞列表中出現(xiàn)的次數(shù))
初始的向量空間捎琐,我自己稱為初始語(yǔ)料,初始語(yǔ)料可以使用模型加工成其它語(yǔ)料
MmCorpus(9 documents, 12 features, 28 non-zero entries)
最簡(jiǎn)單的就是tfidf語(yǔ)料涯曲,除此之外還有l(wèi)si野哭,lda等
這個(gè)轉(zhuǎn)換很簡(jiǎn)單,使用初始語(yǔ)料幻件,遍歷一遍拨黔,計(jì)算頻率
獲取的結(jié)果是一個(gè)對(duì)象,使用這個(gè)對(duì)象绰沥,可以對(duì)初始的語(yǔ)料空間中的向量進(jìn)行轉(zhuǎn)換篱蝇。
將初始語(yǔ)料,全部轉(zhuǎn)換為tfidf語(yǔ)料
模型是干嘛的呢徽曲,簡(jiǎn)單的說(shuō)零截,是對(duì)語(yǔ)料進(jìn)行進(jìn)一步的處理,從中利用數(shù)學(xué)關(guān)系秃臣,計(jì)算機(jī)算法涧衙,挖掘出潛在的信息。
常用的模型:tf-idf模型奥此,lsi模型弧哎,lda模型
Tfidf模型
使用舉例:
目前,只是傳入了初始語(yǔ)料參數(shù)稚虎,生成了一個(gè)新的對(duì)象撤嫩,但并沒(méi)有進(jìn)行語(yǔ)料的處理。真正的語(yǔ)料處理蠢终,還得調(diào)用如下方式實(shí)現(xiàn)
類似的還有:
LSI模型
num_topic的選項(xiàng)序攘,指的潛在主題(topic)的數(shù)目茴她,默認(rèn)是300,在真實(shí)大量語(yǔ)料情況下程奠,200-500丈牢,被認(rèn)為是黃金標(biāo)準(zhǔn)。
LDA模型
Word2Vec模型
這個(gè)模型也很有意思梦染,可以對(duì)詞的相近性做比較赡麦,還有部分推理關(guān)系
字典、詞袋的形成都是很耗費(fèi)時(shí)間的遂铡,所以要將其保存起來(lái)肮疗,下次直接加載使用就可以了。
3.5.1 語(yǔ)料與文檔 對(duì)應(yīng)關(guān)系的保存與加載
生成字典后扒接,將文檔轉(zhuǎn)換為語(yǔ)料伪货,然后利用這些語(yǔ)料進(jìn)行后期的數(shù)學(xué)運(yùn)算,最終用于相似性詢問(wèn)查找钾怔。
但是最終給出的結(jié)果碱呼,是索引的形式。
這時(shí)候,語(yǔ)料與文檔的對(duì)應(yīng)關(guān)系,需要我們自己解決
我是用來(lái)查詢小說(shuō)的抵乓,將小說(shuō)每段作為文檔來(lái)處理填渠,這時(shí)候,我就要記錄下段落在語(yǔ)料中的索引搔啊。
在此,我是用字典記錄的,不同的應(yīng)用舶斧,這個(gè)要做不同的處理,針對(duì)這個(gè)應(yīng)用察皇,我是這樣處理的茴厉。
{0:第一段,1:第二段}
保存
加載
如:
保存
加載
在相似性查詢時(shí)什荣,對(duì)語(yǔ)料進(jìn)行索引編碼矾缓,索引信息也可以保存與加載
其實(shí),就是搜索引擎溃睹,輸入文字而账,查詢與這個(gè)文字最相近的文檔。
既然要查詢哪些文檔與輸入的文字最相近因篇,首先你得有這些文檔吧泞辐,有了這些文檔笔横,還得轉(zhuǎn)換成語(yǔ)料空間吧,這樣才方便利用數(shù)學(xué)關(guān)系進(jìn)行相似度查找吧咐吼。
首先吹缔,對(duì)語(yǔ)料進(jìn)行索引編碼
這里使用lsi語(yǔ)料為例
語(yǔ)料索引編碼后,可以保存
3.6.2 對(duì)查詢字符串做語(yǔ)料轉(zhuǎn)換
如上锯茄,我們使用的lsi語(yǔ)料做的索引厢塘,所以查詢字符串也要轉(zhuǎn)換成lsi語(yǔ)料
查詢的字符串---》初始整形語(yǔ)料----》ti-idf語(yǔ)料---》lsi語(yǔ)料