新型冠狀病毒疫情加劇,讓人閑的不行。重新打開我的簡書之后,發(fā)現(xiàn)我在簡書上也寫了72篇文章了…… 想“溫故而知新”一下,但是在家總是慵懶,就算是自己寫的文章也不想看。但是又十分好奇自己在過去的一年多的時間里到底寫了啥,于是決定用python對自己的文章進(jìn)行簡單的文本分析,分析目標(biāo)是:
一、文本預(yù)處理首先先導(dǎo)出并解壓自己的文章,簡書的導(dǎo)出非常方便,這也是我喜歡用簡書編輯器的原因(包括本文也是用簡書編輯器寫的),寫出來的東西都還可以是自己的。 一共有8個文件夾,由于所有文本都是使用markdown寫的,所以文本預(yù)處理比較簡單,僅僅需要去除特殊符號(如:#、\n等)。在對具體文本進(jìn)行分析時候發(fā)現(xiàn),許多文本中均出現(xiàn)了許多代碼,并且部分文章中英文混雜。轉(zhuǎn)念一想,文章以中文為主,并且代碼部分與其他部分關(guān)聯(lián)較小,無論是用TF-IDF方法還是TextRank都不會出現(xiàn)在關(guān)鍵詞的前列,所以在預(yù)處理階段暫時不處理這個問題。核心代碼如下(其實(shí)很簡單):
二、TF-IDF模型提取關(guān)鍵詞在提取關(guān)鍵詞之前,需要先對每個文本進(jìn)行分詞,中文分詞的方法包括jieba、SnowNlp等。(引自:Jieba、NLTK等中英文分詞工具進(jìn)行分詞)本文使用jieba分詞方法。
TF-IDF模型是最簡單的提取關(guān)鍵詞的模型,學(xué)術(shù)的解釋如下。
一個詞是不是關(guān)鍵詞,在TF-IDF模型看來,僅僅在于兩個方面:1)在當(dāng)前文本出現(xiàn)的頻次高;2)在所有文本中出現(xiàn)的頻次不能太高。基于這個思想,TF-IDF的計(jì)算方法如下: 1.計(jì)算詞頻(tf),等于某個詞在文本中的詞數(shù)除以文本的總詞數(shù)。 2.計(jì)算逆向文本頻率(IDF),先計(jì)算文本總數(shù)除以包含該詞的文檔數(shù),為了防止分母等于0,在分母的位置加上1,在完成除法計(jì)算后取對數(shù)。 3.TF-IDF值是詞頻與逆向文本頻率之積。 用Python計(jì)算每篇文章每個詞的tf-idf值,需要先對每個文本進(jìn)行分詞,對每個詞需要遍歷所有的文本的所有詞,工作量比較大。硬上的話,代碼效率估計(jì)會比較低。但是!在看jieba算法的時候,驚奇的發(fā)現(xiàn)jieba算法已經(jīng)內(nèi)嵌有TF-IDF算法(當(dāng)然也有TextRank算法),不用造輪子的感覺很舒服,核心代碼如下。
為了看到分詞效果,把結(jié)果輸出到csv中。從結(jié)果看還是很不錯的,比如在《人是如何廢掉的》這篇文章中,把“手機(jī)”和“挫敗”這兩個關(guān)鍵詞找出來了,在《人是如何好起來的》中把“自律”和“計(jì)劃”找出來了。這兩篇一年前寫的文章對一年后的生活依然能夠有很好的概括,解決措施也完全適用,果然還是知易行難。 三、關(guān)鍵詞共現(xiàn)網(wǎng)絡(luò)關(guān)鍵詞共現(xiàn)網(wǎng)絡(luò)構(gòu)造的關(guān)鍵是構(gòu)造共詞矩陣。在已經(jīng)得到每一篇文章的關(guān)鍵詞后,假如不考慮每個詞的連接強(qiáng)度的計(jì)算方法,共詞矩陣的構(gòu)造非常簡單,只需要將所有關(guān)鍵詞提取出來,將每兩個關(guān)鍵詞共同出現(xiàn)的次數(shù)分別計(jì)算出來形成矩陣即可。 在完成共詞矩陣的構(gòu)造后,繪圖部分同樣使用Python實(shí)現(xiàn),所幸在Python中也有前人做好了輪子。使用的是networkx。結(jié)果如下圖。 雖然這個結(jié)果圖沒有Gephi、CiteSpace等軟件畫出的圖好看,但是也著實(shí)讓人興奮了好一陣。一個個區(qū)域放大來看,確實(shí)看出了很多東西。從整體看來,我的文章還是關(guān)聯(lián)度比較高的。從主要部分看,主要是兩個方面的內(nèi)容:學(xué)習(xí)和生活,從周圍部分來看,主要是生活的內(nèi)容。 1. “學(xué)習(xí)”部分在學(xué)習(xí)這一部分,科研是大頭,“教育”是一個關(guān)鍵的中心詞,連接了“學(xué)科”、“研究生”、“研究生”、“高?!薄ⅰ袄碚摗?、“經(jīng)濟(jì)”等方面的內(nèi)容,說明我的文章都涉足過這些內(nèi)容。另外,出現(xiàn)的“學(xué)位點(diǎn)”和“京津冀”也倍感親切,這是我曾經(jīng)參與過的課題,學(xué)位點(diǎn)項(xiàng)目涉及的招生規(guī)模、學(xué)位授予、產(chǎn)業(yè)結(jié)構(gòu),京津冀項(xiàng)目涉及的創(chuàng)新、協(xié)同、機(jī)制、區(qū)域發(fā)展等方面的內(nèi)容都出現(xiàn)在關(guān)鍵詞共現(xiàn)圖上了,愈感興奮。另外還把“北京”和“服務(wù)業(yè)”連接起來了,在圖中居然能夠反映第三產(chǎn)業(yè)對于北京的重要性,有點(diǎn)厲害。有意思的是,“經(jīng)濟(jì)”這一個連接詞不僅連接了“教育”,還連接了王者榮耀(“兵線、“裝備””)和之前看的《經(jīng)濟(jì)戰(zhàn)爭與戰(zhàn)爭經(jīng)濟(jì)》這本書的相關(guān)內(nèi)容,不說看書,看來我對游戲的態(tài)度也是認(rèn)真的(手動狗頭)。 在“京津冀”關(guān)鍵詞的右邊,出現(xiàn)了“游戲”、“小游戲”、“彈球”、“障礙物”、“控制”、“圖形化”、“代碼”等詞語,都是我在寫畢業(yè)論文的時候思考和干活的主要方面,這也能挖出來。 此外,看到“青年教師”四個字,也想起了去年讀博前看的《“青椒”的歷史印痕——大學(xué)青年教師學(xué)術(shù)與生活的社會考察》這本書,以及當(dāng)時深深的焦慮。 2. “生活”部分“生活”部分比較雜,比如有探討時間管理的。 有思考親密關(guān)系的。 也分析過原生家庭的特征與影響。 除了主要部分外,各個分支也能夠展現(xiàn)我的興趣和曾經(jīng)的思考方向,比如寫過紀(jì)念我諾退役的文章,也曾經(jīng)也研究過服裝的搭配(好像也沒什么卵用- -)。 曾經(jīng)用CiteSpace形成的知識圖譜分析過中國高等教育教育的特點(diǎn),但是倍感吃力。現(xiàn)在通過自己文章的文本數(shù)據(jù)分析自己的過去一年的思考,還真有一種弄恍然大悟的感覺。劉則淵教授曾經(jīng)說過一句話,“一圖展春秋,一覽無余;一圖勝萬言,一目了然”,今天體會到了這種感覺,酣暢淋漓。要得到知識圖譜背后的“隱喻”,對所分析的數(shù)據(jù)熟悉程度要高(比如都是你自己寫的- -),而且要對知識圖譜所涉及的領(lǐng)域足夠了解,不然也只是牽強(qiáng)附會而已。 代碼如下:
|
|