


摘要
科研作為高校發展及提升人才培養質量一項重要工作,跟教學相輔相成,如何利用數據對學校科研成果進行評價至關重要,本文利用Python的優勢,采用其提供的Scrapy框架對學院科研成果進行分析統計,使用自動化的數據平臺對科研數據進行統計分析進而提高科研數據的統計效率并利用數據對科研成果質量作出相應評價,同時為指導下一步的科研工作有了理論數據支持。
【關鍵詞】Scrapy 科研數據 數據統計
Python語言是目前在機器學習及人工智能等領域應用比較多的一門語言,能簡單有效地實現面向對象編程,是一種功能強大面向對象的解釋型計算機程序設計語言。Python語言屬于語法簡潔清晰的開源編程語言而且具有豐富的標準庫和強大的第三方庫。本課題選擇采用Scrapy框架下設計的平臺在期刊收錄庫中獲取我院教職工發表的學術成果數據,同時將數據根據年度分類保存到科研統計數據庫中,一方面,科研統計的效率大大提高,另一方面,通過對學術成果進行分析統計能獲取到教職工科研的關注點,同時為下一步的科研工作作指導。
1 研究的主要內容
本課題研究的主要內容:
(1)設計平臺分析期刊收錄庫數據(以我院教職工發表的成果為目標),將數據例如題名、作者、來源、發表時間、數據庫形式(期刊、會議等)、被引次數、下載次數等放入相應年度數據庫中;
(2)對數據庫中各項自動進行專業性統計分析,獲取數據背后的隱形價值,可以按被引次數進行排位,了解每個成果的相對質量;
(3)根據前述結果,了解教職工的科研重點,進一步為下一步的科研工作計劃作準備,用說服力強的數據如被引次數、下載次數指導評價科研成果的質量及被關注度。
本課題的前提是對期刊收錄庫數據中涉及我院教職工發表的成果進行數據獲取,選擇數據是關鍵,有數據才能進行下一步的分析。課題主要是對獲取的內容進行統計分析,課題是基于Scrapy框架的數據分析平臺設計,該平臺使用Python的第三方庫jieba庫進行分詞統計,通過此環節要獲取科研的主題,在具體平臺應用中,需要不斷根據統計結果的客觀性來調試程序運行。
本課題對我院科研數據進行統計分析進而提高科研數據的統計效率并利用數據對科研成果質量作出相應評價,同時為指導下一步的科研工作有了理論數據支持。
2 平臺設計過程
2.1 科研成果統計
考慮到從網頁中獲取數據,對網頁進行解析,把需要的數據找到并提取出保存到相應的數據表中,需要用到的第三方庫均需導入,具體導入的庫有requests、BeautifulSoup、os、re、xlwt等。
對獲取的網頁平臺采用BeautifulSoup庫進行解析,并調用相應方法例如find all獲取標簽數據,在創建好的Excel文檔中寫入題目、作者、期刊、發表時間、被引次數、下載次數等標題信息,明確獲取數據的屬性保存到Excel表中,提取數據過程中關鍵是要能夠準確定位到數據所在標簽,并對所需數據進行如去掉前后空格或其它不需要字符等處理工作,其他過程均相似,以提取論文作者及期刊為例,代碼如下:
#提取論文作者
author_list=soup.find_all('td',class_='author flag')
i=0
for author in author list:
author=author.text.stripo
sheetl.write(i+1,1,author)
i+=1
#提取期刊名稱
name_list=soup.find_all(href=re.compile('/kns/NaviBridge.aspx'))
i=0
for name in name list:
name=name.text.strip()
sheet1.write(i+1,2,name)
i+=1
所有設計完成運行后設計教職工的科研成果己自動化保存到數據表中,快捷高效。結果截圖如圖1所示(以2017年度為例)。
2.2 科研成果分析效果圖及代碼
在前述基礎上,為了更加直觀的掌握到教職工科研工作的重點,平臺實現了對論文題目進行詞頻統計來關注研究的側重點,并可通過詞云的形式展現,平臺實現該部分功能需要用到的第三庫有BeautifulSoup、WordCloud、matplotlib、irmead、jieba等。
平臺通過導入Python中一個重要的第三方中文分詞函數庫—jieba庫完成詞頻統計功能。jieba庫支持3種分詞模式:全模式,把句子中所有可以成詞的詞語都掃描出來,速度非常快,但是不能解決歧義;精確模式,將句子最精確地切開,適合文本分析;搜索引擎模式,在精確模式基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。平臺中根據功能實現論文題目中詞頻的統計選擇使用全模式較為適宜,并且設定取排序前10的關鍵詞。詞頻統計部分關鍵代碼如下:
cut text="".joinoieba.lcut(f,cut_all=True))
cut_text1=cut_text.split("")
for word in cut_text1:
ifien(word)==1:
continue
else:
counts[word]=counts.get(word,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(25):
word,count=items[i]
print("{0:<10}{1:>5}".format(word,count))
詞頻統計結果如圖2所示。
詞云又叫文字云,通過對文本數據中出現頻率較高的“關鍵詞”在視覺上的突出呈現,進而形成關鍵詞的渲染,形成類似云一樣的彩色圖片,可以一目了然領略文本數據所要表達的主要意思。Python中wordcloud庫是專門用于根據文本生成詞云的Python第三方庫,平臺通過對科研論文題目生成的詞云直觀形象地展示研究的重點及關注點。默認輸出結果如圖3所示,生成詞云提供的mask參數可使詞云生成指定的圖片形狀,如圖4所示。
詞云實現關鍵代碼如下:
bg_pic=iniread('1.png')
wordcloud=WordCloud(mask=bg_pic,font_path='simhei',background_color="white",width=1500,height=960).generatc(cut_text)
實驗結果表明,通過該平臺統計相關科研數據,快速高效,平臺通過詞頻統計及詞云對比分析,能夠直觀形象地掌握科研工作的重點。平臺在前期有針對性的采集山西警察學院為作者單位的發表的成果,其次,即是對數據進行合理存儲,主要以表的形式存儲,主要包含字段題名、作者、來源、發表時間、數據庫形式(期刊、會議等)、被引次數、下載次數等,每一個字段都能夠反映一定的信息,能夠通過數據本身挖掘出數據背后的價值,例如被引次數可作為成果質量的評價標準之一,下載次數可反映其他人對該成果的關注度及作者選題的與時俱進特點等;最后,可將數據統計及分析結果實際應用到科研工作中。
參考文獻
[1]郭麗蓉.基于Python的網絡爬蟲程序設計[J].電子技術與軟件工程,2017(23):248-249.
[2]郭麗蓉.大數據環境下的網絡爬蟲設計[J].山西電子技術,2018(02):50-52.
[3]嵩天,禮欣,黃天羽.Python語言程序設計基礎(第2版)[M].北京:高等教育出版社,2017.
[4]陳皋.基于PageRank的在線社交網絡信息傳播模型研究[D].廣州:華南理工大學,2017.
[5]劉元冬.移動軟件評論數據分析技術研究[D].北京:北京郵電大學,2017.
[6]半吊子全棧工匠.10行python代碼的詞云[EB/OL].http://blog.csdn.net/wireless_com/article/details/60571394,2018-1-6.