自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

李鬼見李逵,用Python“死磕”翟天臨的博士論文

開發(fā) 后端 開發(fā)工具
都說今年的瓜特別多(葫蘆娃的那種),但是過年期間最甜的我想非翟天臨的“知網(wǎng)是什么?”莫屬了吧。

都說今年的瓜特別多(葫蘆娃的那種),但是過年期間最甜的我想非翟天臨的“知網(wǎng)是什么?”莫屬了吧。

[[258097]] 

近期,翟天臨因“論文抄襲、學(xué)術(shù)造假”被推上風(fēng)口浪尖,甚至連自己參演并準(zhǔn)備播出的六部電視劇,也被央視要求全部刪減,至此人設(shè)徹底崩塌,輿論嘩然。

 

我平常不怎么關(guān)注娛樂圈,所以剛開始并沒有把這件事放在心上,直到網(wǎng)上爆出翟的論文大篇幅抄襲陳坤論文的消息,我才對(duì)這位娛樂圈博士的文章起了興趣。

 

目前北京電影學(xué)院已經(jīng)撤銷翟天臨博士學(xué)位,取消陳浥博士研究生導(dǎo)師資格。

接下來就讓我們以一個(gè) Coder 的角度來硬核分析下翟的論文吧。

實(shí)驗(yàn)環(huán)境

工欲善其事,必先利其器,在開始分析之前,我先說明此次分析所處的實(shí)驗(yàn)環(huán)境,以免出現(xiàn)異常:

  • MacOS 10.14.3
  • Python 3.6.8(Anaconda)
  • Visual Studio Code
  • 使用的包有:
  • pkuseg(分詞)
  • matplotlib(繪圖)
  • wordcloud(詞云)
  • numpy(數(shù)學(xué)計(jì)算)
  • Sklearn(機(jī)器學(xué)習(xí))

數(shù)據(jù)獲取

說實(shí)話,起初我以為就算翟不知“知網(wǎng)”為何物,“知網(wǎng)”也該收錄翟的文章吧,可我在知網(wǎng)搜了好久也沒能找到翟的論文,好在我在今日頭條上找到了他的文章,保存在 data/zhai.txt 中。

 

說到這,還真要感謝翟天臨啊,都是因?yàn)樗蠹也抛兊眠@么有學(xué)術(shù)精神,開始研究起本科碩士博士論文了。

數(shù)據(jù)清理

上一節(jié)我們已經(jīng)將他的論文保存到一個(gè) txt 中了,所以我們需要先將文章加載到內(nèi)存中:

  1. # 數(shù)據(jù)獲取(從文件中讀?。?nbsp;
  2. def readFile(file_path): 
  3.     content = [] 
  4.     with open(file_path, encoding="utf-8"as f: 
  5.         content = f.read() 
  6.     return content 

我統(tǒng)計(jì)了下,除去開頭的標(biāo)題和末尾的致謝,總共 25005 個(gè)字。接下來我們來進(jìn)行數(shù)據(jù)清理,在這里我用了 pkuseg 對(duì)內(nèi)容進(jìn)行分詞處理,同時(shí)去掉停用詞后輸出分詞的結(jié)果。

所謂停用詞就是在語境中沒有具體含義的文字,例如這個(gè)、那個(gè),你我他,的得地,以及標(biāo)點(diǎn)符合等等。

因?yàn)闆]人在搜索的時(shí)候去用這些沒意義的停用詞搜索,為了使得分詞效果更好,我就要把這些停用詞過濾掉。

  1. # 數(shù)據(jù)清理(分詞和去掉停用詞) 
  2. def cleanWord(content): 
  3.     # 分詞 
  4.     seg = pkuseg.pkuseg() 
  5.     text = seg.cut(content) 
  6.  
  7.     # 讀取停用詞 
  8.     stopwords = [] 
  9.     with open("stopwords/哈工大停用詞表.txt", encoding="utf-8"as f: 
  10.         stopwords = f.read() 
  11.  
  12.     new_text = [] 
  13.     # 去掉停用詞 
  14.     for w in text: 
  15.         if w not in stopwords: 
  16.             new_text.append(w) 
  17.  
  18.     return new_text 

執(zhí)行結(jié)果如下:

這里我提兩點(diǎn),為什么分詞工具用的是 pkuseg 而不是 jieba?pkuseg 是北大推出的一個(gè)分詞工具。官方地址是:

  1. https://github.com/lancopku/pkuseg-python 

它的 README 中說它是目前中文分詞工具中效果***的。

為什么用哈工大的停用詞表?停用詞表的下載地址在:

  1. https://github.com/YueYongDev/stopwords 

以下是幾個(gè)常用停用詞表的對(duì)比:

 

參考文獻(xiàn):官琴, 鄧三鴻, 王昊. 中文文本聚類常用停用詞表對(duì)比研究[J]. 數(shù)據(jù)分析與知識(shí)發(fā)現(xiàn), 2006, 1(3).

停用詞表對(duì)比研究:

  1. https://github.com/YueYongDev/stopwords 

數(shù)據(jù)統(tǒng)計(jì)

說是數(shù)據(jù)統(tǒng)計(jì),其實(shí)也沒什么好統(tǒng)計(jì)的,這里簡(jiǎn)單化一下,就是統(tǒng)計(jì)下各個(gè)詞出現(xiàn)的頻率,然后輸出詞頻***的 15 個(gè)詞:

  1. # 數(shù)據(jù)整理(統(tǒng)計(jì)詞頻) 
  2. def statisticalData(text): 
  3.     # 統(tǒng)計(jì)每個(gè)詞的詞頻 
  4.     counter = Counter(text) 
  5.     # 輸出詞頻***的15個(gè)單詞 
  6.     pprint.pprint(counter.most_common(15)) 

打印的結(jié)果如下:

 

真的是個(gè)***的“好演員”啊,能將角色帶入生活,即使肚中無貨卻仍用自己的表演能力為自己設(shè)立一個(gè)“學(xué)霸”人設(shè),人物形象如此飽滿,興許這就是創(chuàng)作的藝術(shù)吧!

文章中說的最多的就是生活、角色、人物、性格這些詞,這些正是一個(gè)好演員的精神所在,如果我們將這些詞做成詞云的話,可能效果會(huì)更好。

生成詞云

詞云生成這個(gè)部分我采用的是 wordcloud 庫(kù),使用起來非常簡(jiǎn)單,網(wǎng)上教程也有很多。

這里需要提一點(diǎn)的就是:為了防止中文亂碼情況的發(fā)生,需要配置 font_path 這個(gè)參數(shù)。

中文字體可以選用系統(tǒng)的,也可以網(wǎng)上找,這里我推薦一個(gè)免費(fèi)的中文字體下載的網(wǎng)址:

  1. http://www.lvdoutang.com/zh/0/0/1/1.html 

下面是生成詞云的代碼:

  1. # 數(shù)據(jù)可視化(生成詞云) 
  2. def drawWordCloud(text, file_name): 
  3.     wl_space_split = " ".join(text) 
  4.  
  5.     # 設(shè)置詞云背景圖 
  6.     b_mask = plt.imread('assets/img/bg.jpg'
  7.     # 設(shè)置詞云字體(若不設(shè)置則無法顯示中文) 
  8.     font_path = 'assets/font/FZZhuoYTJ.ttf' 
  9.     # 進(jìn)行詞云的基本設(shè)置(背景色,字體路徑,背景圖片,詞間距) 
  10.     wc = WordCloud(background_color="white",font_path=font_path, mask=b_mask, margin=5) 
  11.     # 生成詞云 
  12.     wc.generate(wl_space_split) 
  13.     # 顯示詞云 
  14.     plt.imshow(wc) 
  15.     plt.axis("off"
  16.     plt.show() 
  17.     # 將詞云圖保存到本地 
  18.     path = os.getcwd()+'/output/' 
  19.     wc.to_file(path+file_name) 

真假李逵(文章對(duì)比)

分析完了“李鬼”,我們有必要請(qǐng)出他的真身“李逵”兄弟了,同樣還是和之前一樣的套路,先找到數(shù)據(jù),然后分詞統(tǒng)計(jì)詞頻,這里就不重復(fù)操作了,直接放出詞云圖。

看到這圖是不是覺得和翟的詞云圖異常相似,那么,這“真假李逵”之間到底有多像呢?接下來我們來計(jì)算下兩篇文章的相似度吧。

TF-IDF

文章相似度的比較有很多種方法,使用的模型也有很多類別,包括 TF-IDF、LDA、LSI 等,這里方便起見,就只使用 TF-IDF 來進(jìn)行比較了。

TF-IDF 實(shí)際上就是在詞頻 TF 的基礎(chǔ)上再加入 IDF 的信息,IDF 稱為逆文檔頻率。

不了解的可以看下阮一峰老師的講解,里面對(duì) TFIDF 的講解也是十分透徹的。

  1. https://www.ruanyifeng.com/blog/2013/03/tf-idf.html 

Sklearn

Scikit-Learn 也簡(jiǎn)稱 Sklearn,是機(jī)器學(xué)習(xí)領(lǐng)域當(dāng)中最知名的 Python 模塊之一,官方地址為:

  1. https://github.com/scikit-learn/scikit-learn 

其包含了很多種機(jī)器學(xué)習(xí)的方式,下面我們借助于 Sklearn 中的模塊 TfidfVectorizer 來計(jì)算兩篇文章之間的相似度。

代碼如下:

  1. # 計(jì)算文本相似度 
  2. def calculateSimilarity(s1, s2): 
  3.     def add_space(s): 
  4.             return ' '.join(cleanWord(s)) 
  5.  
  6.     # 將字中間加入空格 
  7.     s1, s2 = add_space(s1), add_space(s2) 
  8.     # 轉(zhuǎn)化為TF矩陣 
  9.     cv = TfidfVectorizer(tokenizer=lambda s: s.split()) 
  10.     corpus = [s1, s2] 
  11.     vectors = cv.fit_transform(corpus).toarray() 
  12.     # 計(jì)算TF系數(shù) 
  13.     return np.dot(vectors[0], vectors[1]) / (norm(vectors[0]) * norm(vectors[1])) 

除了 Sklearn,我們還可以使用 gensim 調(diào)用一些模型進(jìn)行計(jì)算,考慮到文章篇幅,就由讀者自己去搜集資料實(shí)現(xiàn)吧。

我們將翟的論文和陳的論文分別傳入該函數(shù)后,輸出結(jié)果為:

  1. 兩篇文章的相似度為: 
  2. 0.7074857881770839 

其實(shí)這個(gè)結(jié)果我還是挺意外的,只知道這“李鬼”長(zhǎng)得像,卻沒想到相似度竟然高達(dá) 70.7%。

[[258099]]

當(dāng)然,作為弟弟,翟的這個(gè)事和吳秀波的事比起來,那都不是個(gè)事。

 

責(zé)任編輯:武曉燕 來源: 01二進(jìn)制
相關(guān)推薦

2023-06-05 14:11:14

論文

2021-10-18 17:54:13

論文博士數(shù)據(jù)

2023-12-25 15:11:16

AI模型

2021-06-01 09:29:43

ArthasJVM內(nèi)存

2021-03-01 08:02:55

算法排序操作

2021-08-03 14:00:06

數(shù)據(jù)研究論文

2024-01-03 13:05:00

數(shù)據(jù)訓(xùn)練

2024-08-28 14:30:00

論文AI

2021-07-15 16:05:29

編程Rust開發(fā)

2024-07-01 12:50:10

2021-10-28 09:23:17

論文學(xué)術(shù)數(shù)據(jù)

2021-06-03 08:32:18

JVM調(diào)優(yōu)虛擬機(jī)

2020-11-25 20:03:41

AI 機(jī)器人工智能

2012-12-27 11:11:54

華為任正非

2022-10-09 14:53:35

機(jī)器學(xué)習(xí)

2009-03-02 16:11:56

2021-02-24 10:03:17

Java8日期API

2013-06-05 09:38:27

Intel功耗酷睿

2025-04-08 09:15:00

AI論文實(shí)測(cè)

2021-02-25 07:21:00

JVMJavaava虛擬機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)