如何用VOSviewer分析CNKI關鍵詞共現?

用VOSviewer嘗試CNKI中文文獻關鍵詞共現(keyword co-occurence)分析時,你可能會踩到一個大坑。本文幫助你繞開這個坑,或是從坑里爬出來。

疑惑

在《如何用VOSviewer分析CNKI數據?》一文中,我們提到了如何用VOSviewer可視化分析CNKI文獻。

依照文中的步驟,我們從CNKI下載并導出《圖書情報知識》期刊2016年全年文獻數據,通過Endnote作為中轉,最終導出了VOSviewer可以讀取的RIS文件。

我把這個幾經輾轉得來的RIS文件存放到了這里,你可以直接下載使用。

利用該數據文件,我們用VOSviewer分析合作者(Co-authorship),做出了這張圖。

有的讀者很興奮,立即打算用同樣的方法,做CNKI中文文獻的關鍵詞共現分析(keyword co-occurence)。

很快,他們就遇到了問題。因為用樣例數據,雖然可以做出分析結果圖,卻是這個樣子的:

圖里面只有關鍵詞,沒有任何關鍵詞之間的連接。這叫什么共現分析?!

有讀者很沮喪地把這幅圖發給了我。問我這是否意味著,VOSviewer不能勝任中文文獻的關鍵詞共現分析?

當然不是。

VOSviewer做的是統計和可視化。對于它來說,中文和英文關鍵詞沒有本質區別。只要來源數據處理得當,分析的結果都應該是正確的。

那么問題究竟出在哪里呢?

原因

我們用樣例數據,重新走一遍流程。復現讀者遇到的困境。

VOSviewer主界面里,我們選擇File -> map -> create,新建一個分析圖。

第一個對話框問我們映射方式。

我們從中選擇第二項。

然后新彈出的對話框會詢問分析源文件的格式。

我們選擇RIS。

下面的對話框,詢問分析類型。默認是合作者分析(Co-authorship)。

我們選擇關鍵詞共現分析(Co-occurence)。

然后VOSviewer詢問我們閾值的選擇。

注意默認的閾值為3,可是這樣只有3個關鍵詞滿足閾值。最終的圖上如果只有3個節點,就太稀疏了。于是我們降低閾值到1。

VOSviewer提示我們,通過閾值過濾的關鍵詞有83個。

我們選擇下一步。這時可以看到全部關鍵詞列表。

我們可以從中選擇或者反選關鍵詞做分析。

但是此處別著急進行下一步。我們看到了非常奇異的現象。

注意圖中列表的最后一列,是連接強度,也就是這一行的關鍵詞與其他關鍵詞共同出現的總次數。默認從大到小排列,可是所有的關鍵詞共現次數居然都是0次

難怪我們點擊下一步的時候,會出現關鍵詞節點間,全無鏈接。

為什么關鍵詞同時出現次數分析值都是0呢?難道每篇論文只有1個關鍵詞?關鍵詞之間從來沒有同時出現過?

這不符合常識。

我們發表期刊論文或者寫畢業論文時,一般情況關鍵詞至少也要列出3個吧。

帶著這樣的疑惑,我們就要檢查一下RIS源文件了。

以其中的第一篇《信息素養的歷史與實踐之旅》為例,我們看到關鍵詞一共有3個,分別為“信息素養”、“行動素養”和“行動素養聯盟”。

如何識別它們是關鍵詞呢?

因為前面有個KW -前綴作為標志。

然而問題來了,我們看到作者信息部分,每個作者名字前,都有AU -前綴。

AU - G.Zurkowski, Paul
AU - V.Kelly, Jeffrey
AU - 劉千卉
AU - 程璐

可是關鍵詞這里,除了第一個有KW -前綴,其他都沒有。

KW - 信息素養
行動素養
行動素養聯盟

會不會是因為這個緣故,導致合作者分析鏈接正常,而關鍵詞共現分析鏈接消失呢?

我們做個實驗,驗證一下咱們的猜測。

實驗的方法很簡單。我們把第一篇文獻的另外兩個關鍵詞之前,都加上KW -前綴。其他文獻的關鍵詞不做任何處理。

修改后的RIS文件,就成了這樣子:

我們回到VOSviewer,重新分析。前面的步驟和上一節完全一致。直至最后一步。

我們非常明顯地對比出,關鍵詞總鏈接強度(Total Link Strength)一項發生了變化,有幾個關鍵詞,不再是0了。

發生改變的這幾個關鍵詞,恰恰是剛才添加過前綴的那幾個。

這個簡單的實驗,驗證了我們的猜測。

并不是VOSviewr的處理能力有缺失,而是中文文獻元數據,經由Endnote導出為RIS格式的時候有紕漏,導致多關鍵詞的前綴沒有全部正確添加。

效率

問題找到了。

下面我們該怎么辦?

很簡單,把所有關鍵詞的前綴都添上就好了啊。

你可能立即覺得天旋地轉。

把前綴都添上?說得輕巧!

樣例數據里,文獻有數十篇。一篇篇找關鍵詞,添加前綴,雖然會做個頭暈腦漲,但畢竟還有個盼頭兒。

問題是,要分析的文獻有好幾千篇。都添完的時候,是不是下學期都該開學了?

也沒那么夸張了。

想想愚公移山,精衛填?!荣t的精神力量還不夠給你以感召嗎?

精神固然要有,但效率也是要追求的。

我們當然不能一條條手動查找關鍵詞并添加前綴,那樣效率太低。我們要用工具來自動化解決這個問題。

好消息是,工具我已經幫你編寫好了。

下面我詳細告訴你,該怎么使用。

工具

我幫你編寫的工具,是個Python腳本。

我們需要安裝Python運行環境Anaconda,來使用這個腳本。

請到這個網址 下載最新版的Anaconda。下拉頁面,找到下載位置。根據你目前使用的系統,網站會自動推薦給你適合的版本下載。我使用的是macOS,下載文件格式為pkg。

下載頁面區左側是Python 3.6版,右側是2.7版。請選擇2.7版本。

雙擊下載后的pkg文件,根據中文提示一步步安裝即可。

安裝好Anaconda后,我們來下載腳本。

我把腳本存儲在了Github項目里。請從這個位置下載壓縮包。

下載后解壓到本地,這個目錄就是咱們的演示目錄。

請進入終端(macOS或者Linux),用cd命令進入到這個目錄。如果你用的是Windows,請運行Anaconda Prompt程序,并進入該目錄。

下面,請執行以下命令。

python ris-add-kw-prefix.py tsqbzs.ris

如果你要嘗試處理自己的RIS文件,請把它拷貝到這個演示目錄里面,然后把上面命令語句中最后部分(文件名)改成你自己的RIS文件。

執行后,你會發現目錄下多了一個文件,叫做output.ris。

我們打開這個新生成的RIS文件。

可以看到,所有的未加前綴的關鍵詞,都已經自動添加了前綴。

我們嘗試將這個output.ris輸入到VOSviewer,這次的分析結果列表如下:

這時候再看關鍵詞鏈接數量,就合理多了。

利用這個分析結果來可視化,你會看到以下生成的圖形:

在這個樣例中,我們只有幾十篇文獻。利用腳本處理前綴,顯得有些大炮轟蚊子。

但如果你需要處理幾千、幾萬篇文獻的記錄信息,用這個腳本也一樣可以瞬間完成操作。效率的差別就體現得淋漓盡致了。

好了,到這里為止,你已經了解如何利用咱們編寫的工具,對Endnote導出的中文文獻做關鍵詞處理,在VOSviewer中正確分析關鍵詞共現了。

目標達成。

如果你對原理和技術細節不感興趣,下面就可以跳到小結部分了。

如果你還沒走,我來猜猜你在想什么。

這么高效的處理方法,是不是令你感覺不可思議?

老師你的工具至少有300行語句吧?

沒有。

其實程序從頭到尾,只有20多行。

而其中的核心部分,只有3行。

老師動用了什么黑魔法?!

魔法

我當然不會魔法。

我們使用的,是計算機最簡單的能力——根據指令,重復執行枯燥勞動。

從第一行開始,依次檢查每一行的文字。如果該行不是空行,而且其中不包含前綴連接符號“-”,那么我們就將其當成未加前綴的關鍵詞。

我們讓計算機在這行文字的最前面,加上KW -前綴。

就是這么簡單,一點也不炫酷。

但是計算機怎么理解“不是空行”、“不包含符號‘-’”呢?

請看我們Python文件中的核心函數代碼。

def add_kw_prefix(data):
    regex = r"^([^\-\s]+?)\s+$"
    subst = "KW  - \\1"
    newdata = re.sub(regex, subst, data, 0, re.MULTILINE)
    return newdata

我們用到的工具,叫做正則表達式(regular expression),簡稱re。

它是計算機處理文本模式的一種經典工具。

我們之前談到機器學習的時候,曾經說過。機器學習模型,是人不知道怎么描述規則的時候,讓計算機自己學。

而正則表達式,則恰恰相反,是人類可以很準確地描述規則時,為機器定義的模式。

正確定義模式后,計算機就會檢查文本中是否包含這種模式,并且做出對應的處理。

正則表達式的功能非常強大,不過學起來需要花一番功夫。

如果你對正則表達式感興趣,希望自己也能操縱計算機程序,對文本精確地做出模式識別與處理,可以參考DataCamp上的這篇教程來學習。

小結

通過本文,希望你已經了解了以下內容:

  1. VOSviewer可以正確處理中文文獻的關鍵詞共現分析;
  2. CNKI文獻元數據經由Endnote導出成RIS時,關鍵詞處理有瑕疵,需要添加對應前綴;
  3. 你可以利用我提供的Python腳本,來快速完成前綴添加工作;
  4. 正則表達式的使用,可以有效提升大規模文本模式匹配與處理操作的效率。

討論

用本文的方法,你做出了正確的CNKI文獻關鍵詞共現分析了嗎?在此之前,你是如何處理關鍵詞共現分析的?有沒有什么更加簡便高效的方法?歡迎留言,把你的經驗和思考分享給大家,我們一起交流討論。

如果你對我的文章感興趣,歡迎點贊,并且關注我的專欄,以便收到后續作品更新通知。

如果本文可能對你身邊的親友有幫助,也歡迎你把本文通過微博或朋友圈分享給他們。讓他們一起參與到我們的討論中來。

延伸閱讀

數據科學相關文章合集(玉樹芝蘭)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容