• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Python的文獻(xiàn)檢索系統(tǒng)設(shè)計與實現(xiàn)

      2020-03-02 11:36:35杜蘭劉智陳琳琳
      軟件 2020年1期
      關(guān)鍵詞:爬蟲畢業(yè)設(shè)計

      杜蘭 劉智 陳琳琳

      摘 ?要: 畢業(yè)設(shè)計是大學(xué)本科教育的一個重要教學(xué)活動,既能檢驗本科階段學(xué)習(xí)成果,又能提升實踐創(chuàng)新能力。而畢業(yè)設(shè)計需要學(xué)生掌握所畢業(yè)課題的學(xué)術(shù)動態(tài),這要求學(xué)生能正確有效地進(jìn)行文獻(xiàn)檢索,獲取最新發(fā)表的文獻(xiàn)資料?,F(xiàn)如今,大多數(shù)學(xué)生采用的是手工操作的方式。而海量數(shù)據(jù)帶來的“信息過載”問題,增長了用戶檢索時間,降低了查準(zhǔn)率,嚴(yán)重影響效率。因此,為了幫助學(xué)生在浩瀚的文獻(xiàn)庫里找到滿足自己專業(yè)化、個性化需求的資料,本文系統(tǒng)首先利用Python爬蟲獲取文獻(xiàn),實現(xiàn)自動化文獻(xiàn)檢索和下載。然后基于協(xié)同過濾推薦算法,實現(xiàn)基于檢索的個性化推薦。該系統(tǒng)能為學(xué)生提供準(zhǔn)確高效的文獻(xiàn)檢索服務(wù),提升學(xué)生畢業(yè)設(shè)計質(zhì)量,是一項值得推廣的技術(shù)。

      關(guān)鍵詞: 文獻(xiàn)檢索;爬蟲;畢業(yè)設(shè)計;推薦

      中圖分類號: TP391. 41 ? ?文獻(xiàn)標(biāo)識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.01.012

      本文著錄格式:杜蘭,劉智,陳琳琳. 基于Python的文獻(xiàn)檢索系統(tǒng)設(shè)計與實現(xiàn)[J]. 軟件,2020,41(01):5559

      【Abstract】: Graduation design is an important teaching activity in undergraduate education. It can not only test the results of undergraduate study, but also improve the ability of practice and innovation. Graduation design requires students to master the academic dynamics of their graduation projects, which requires students to correctly and effectively retrieve documents and obtain the latest published documents. Nowadays, most students use manual operation. However, the problem of "information overload" caused by massive data increases the retrieval time of users, reduces the accuracy rate, and seriously affects the efficiency. Therefore, in order to help students find information to meet their professional and personalized needs in the vast literature library. Firstly, the system uses Python crawler to obtain documents and realize automatic document retrieval and download. Then, based on collaborative filtering recommendation algorithm, personalized recommendation based on retrieval is realized. The system can provide accurate and efficient literature retrieval service for students and improve the quality of graduation design. It is a technology worth promoting.

      【Key words】: Thesis retrieval; Crawler; Graduation design; Recommendation

      0 ?引言

      眾所周知,文獻(xiàn)檢索是大學(xué)生畢業(yè)設(shè)計過程中不可或缺的研究手段。它能讓學(xué)生在前人的成果上找到起點,激發(fā)潛能,拓寬思路,培養(yǎng)創(chuàng)新能力?,F(xiàn)如今,隨著圖書館數(shù)字化進(jìn)程的發(fā)展,現(xiàn)在學(xué)生普遍采用的是通過聯(lián)機(jī)檢索方式來檢索并下載文獻(xiàn)。當(dāng)前檢索方式存在如下問題:第一,目前主要的檢索關(guān)鍵字是題名、責(zé)任者、關(guān)鍵詞等,檢索到文獻(xiàn)后,還需要再次點擊鏈接進(jìn)入到詳細(xì)頁面才能下載全文,費時費力。第二,在大數(shù)據(jù)時代,學(xué)術(shù)資源急速增長,例如知網(wǎng)(CNKI)上已經(jīng)高達(dá)億萬條記錄。而學(xué)生本身對相關(guān)領(lǐng)域的詞匯量儲備少,這會導(dǎo)致學(xué)生在檢索時缺乏檢索詞,加大檢索難度。第三,文獻(xiàn)領(lǐng)域多樣性會導(dǎo)致用戶搜到大量無用信息,浪費大量時間,到最后還是搜不到需要的文獻(xiàn)。因此迫切需要實現(xiàn)一個高效精準(zhǔn)的文獻(xiàn)檢索系統(tǒng),一方面能實現(xiàn)自動化的高效檢索,減少手工操作;另一方面能提供個性化的精準(zhǔn)推薦,主動為用戶幫助學(xué)生快速高效地從文獻(xiàn)浩瀚的海洋里找到自己需要的資料。

      目前,已有部分學(xué)者展開相關(guān)研究,但楊洋等人的研究側(cè)重如何避免電子學(xué)術(shù)資源的重復(fù)下載,未見自動化下載和推薦相關(guān)的研究[1]。劉愛琴等是針對學(xué)術(shù)資源網(wǎng)站數(shù)據(jù)結(jié)構(gòu)化的特征,利用用戶輸入的爬蟲的關(guān)鍵字,進(jìn)行一次檢索數(shù)據(jù)里本體屬性的動態(tài)分析,形成關(guān)聯(lián)關(guān)鍵詞網(wǎng)絡(luò),將文獻(xiàn)資料本體的所有相關(guān)數(shù)據(jù)來源URL鏈接同時返回到一次檢索結(jié)果中。盡管該研究用關(guān)聯(lián)關(guān)鍵詞網(wǎng)絡(luò)將檢索界面與更多的文獻(xiàn)URL地址反饋到同一頁面,提升了檢索效率。但是沒有考慮用戶歷史偏好數(shù)據(jù),不能滿足用戶的個性化需求[2]。因此,本文基于用戶的歷史行為數(shù)據(jù),使用最經(jīng)典應(yīng)用最廣泛的協(xié)同過濾算法[3]從海量數(shù)據(jù)中分析出用戶感興趣的文獻(xiàn),推送給用戶個性化的推薦列表。本文做出如下工作:

      (1)設(shè)計一個文獻(xiàn)爬蟲程序[4],檢索并下載文獻(xiàn)。

      (2)應(yīng)用協(xié)同過濾算法設(shè)計文獻(xiàn)推薦方案,為用戶提供個性化推薦。

      1 ?系統(tǒng)設(shè)計

      本系統(tǒng)基于Django框架標(biāo)準(zhǔn)采用三層架構(gòu)模式,表現(xiàn)層-模板(Template)、業(yè)務(wù)邏輯層-視圖(Views)和數(shù)據(jù)存取層-模型(Model),其架構(gòu)如圖2所示。具體來說,表現(xiàn)層的功能主要是展示使用html5前端開發(fā)語言編寫的用戶的個人信息、文獻(xiàn)信息、推薦信息等頁面。業(yè)務(wù)邏輯層主要有兩個作用,一是存放數(shù)據(jù)存取模型,二是調(diào)取正確的模

      板的相關(guān)邏輯功能,比如網(wǎng)絡(luò)爬蟲、推薦引擎、文獻(xiàn)信息管理、用戶信息管理等。其中網(wǎng)絡(luò)爬蟲的主要功能是根據(jù)用戶檢索條件去實現(xiàn)自動化檢索和下載。推薦引擎的主要功能是根據(jù)訓(xùn)練好的推薦算法模型計算出每個用戶喜歡的文獻(xiàn)排名,并存儲計算結(jié)果等待推薦系統(tǒng)調(diào)用。數(shù)據(jù)存取層主要存儲、讀取和修改用戶信息、文獻(xiàn)信息、用戶評分信息等各種數(shù)據(jù)。

      文獻(xiàn)檢索系統(tǒng)的3個過程如下:

      (1)創(chuàng)建索引與檢索索引:創(chuàng)建索引與檢索索引是一切檢索的開始,不可或缺,在有了索引之后,才能根據(jù)索引建立請求。創(chuàng)建索引,從所搜索的資源網(wǎng)站的請求條件中提取有用信息并重新顯示成用戶易懂的格式,然后創(chuàng)建索引,大致分為作者,主題,引用文件等幾個部分。檢索索引,根據(jù)用戶傳輸?shù)膮?shù)形成查詢語句,結(jié)合索引轉(zhuǎn)化為網(wǎng)絡(luò)請求需要的格式,然后向網(wǎng)站發(fā)送請求。

      (2)網(wǎng)絡(luò)爬蟲:根據(jù)用戶輸入的條件開始檢索,在抓取的過程中,首先要發(fā)送請求,判斷的資源網(wǎng)站的請求參數(shù),遵循資源網(wǎng)站的請求順序和請求規(guī)則。在請求的過程中要注意不影響網(wǎng)站的正常運行,遵循資源網(wǎng)站的爬蟲規(guī)則,否則會被禁止。在爬取頁面的過程中要注意采取IP代理,適當(dāng)延長訪問間隔。獲得數(shù)據(jù)的時候,還應(yīng)該進(jìn)行篩選與分類,取出自己需要的字段,排除掉不需要的字段。

      (3)推薦引擎:根據(jù)用戶的文獻(xiàn)搜索歷史、下載記錄、評價反饋等數(shù)據(jù),使用協(xié)同過濾算法,為用戶生成個性化推薦列表。

      2 ?關(guān)鍵功能實現(xiàn)

      2.1 ?爬蟲實現(xiàn)

      (1)創(chuàng)建索引

      按(a)主題、(b)關(guān)鍵詞、(c)篇、(d)摘要、(e)全文、(f)被引文獻(xiàn)、(g)中圖分類號、(u)單位、(z)作者分出七個維度檢索索引。在用戶進(jìn)行檢索的時候,會給出該界面提示,每個提示都有一個代表字母,用戶直接輸入條件前方的字母就可以,省略去寫出具體索引的過程,極大方便了用戶的操作,而且該條件還可以填寫多個,用戶通過輸入代表字母,之間通過空格分隔開,以便區(qū)分出是幾個檢索條件。

      (2)使用request抓取網(wǎng)頁

      網(wǎng)頁抓取模塊是通過Python包封裝的requests方法對網(wǎng)頁發(fā)送請求的模擬訪問,然后直接抓取服務(wù)器數(shù)據(jù)。主要實現(xiàn)過程是把用戶輸入的條件進(jìn)行整理,結(jié)合索引,將條件轉(zhuǎn)換為請求對應(yīng)的參數(shù),通過requests方法向服務(wù)器發(fā)送一段請求,在請求正確發(fā)送之后,服務(wù)器端返回結(jié)果。

      為了以防請求超時在post方法中追加timeout字段,自定義一個請求的最大訪問等待時間。具體代碼如下:

      static_post_data = {

      'action': '',

      'NaviCode': '*',

      'ua': '1.21',

      'isinEn': '1',

      'PageName': 'ASP.brief_default_result_aspx',

      'DbPrefix': 'SCDB',

      'DbCatalog': '中國學(xué)術(shù)期刊網(wǎng)絡(luò)出版總庫',

      'ConfigFile': 'CJFQ.xml',

      'db_opt': 'CJFQ,CDFD,CMFD,CPFD,IPFD,CCND,CCJD', ?# 搜索類別(CNKI右側(cè)的)

      'db_value': '中國學(xué)術(shù)期刊網(wǎng)絡(luò)出版總庫',

      'year_type': 'echar',

      'his': '0',

      'db_cjfqview': '中國學(xué)術(shù)期刊網(wǎng)絡(luò)出版總庫, WWJD',

      'db_cflqview': '中國學(xué)術(shù)期刊網(wǎng)絡(luò)出版總庫',

      '__': time.asctime(time.localtime()) + ' GMT+0800 (中國標(biāo)準(zhǔn)時間)'

      }

      (3)使用beautifulsoup4 庫分析提取數(shù)據(jù)

      beautifulsoup4 庫對文字字段的獲取特別方便,在定位獲得字段內(nèi)容之后,從當(dāng)前頁面獲得的是通過條件檢索出來的符合用戶條件規(guī)范的文獻(xiàn)。

      以知網(wǎng)為實驗平臺,在文獻(xiàn)檢索發(fā)現(xiàn)返回的只是論文的概要信息,而訪問詳情頁需要發(fā)送三次請求。第一次請求獲取到服務(wù)器驗證響應(yīng)的參數(shù)信息。第二次請求根據(jù)第一次獲取到的參數(shù)信息,再此請求服務(wù)器,在服務(wù)器端驗證。在兩次訪問之后,訪問詳情頁才會獲得信息不被拒絕,前兩次請求在服務(wù)器驗證注冊之后就可以訪問詳情頁面獲得信息了。由此整理出詳情頁的獲取方式,部分源代碼如下:

      self.session.get(

      'http://i.shufang.cnki.net/KRS/KRSWriteHandler. ashx',

      headers=HEADER,

      params=params)

      self.session.get(

      'http://kns.cnki.net/KRS/KRSWriteHandler. ashx',

      headers=HEADER,

      params=params)

      page_url = 'http://kns.cnki.net' + page_url

      get_res=self.session.get(page_url,headers=HEADER)

      (4)處理數(shù)據(jù)

      爬蟲爬取下來的數(shù)據(jù)可以存入Excel表中,一共存儲三個文件,分別是所有文章的下載鏈接、文章的簡要介紹和文章的詳情信息。文章詳情信息按照序號、題名、作者、單位、關(guān)鍵字、摘要 、來源、發(fā)表時間等字段進(jìn)行存儲,在存儲時選擇單線程,因為多線程使用Excel會導(dǎo)致數(shù)據(jù)的丟失和錯亂。所以在存儲或者查看的時候不能對表格信息進(jìn)行改動,以防出現(xiàn)錯誤,因此需要獲得的數(shù)據(jù)先存入一個字典之中,通過sheet.write方法將文獻(xiàn)信息寫進(jìn)去,部分源代碼如下:

      for i in range(0,3):

      self.reference_list.append(self.single_refence_ list[i])

      self.reference_list.append(self.orgn)

      self.reference_list.append(self.keywords)

      self.reference_list.append(self.abstract)

      for i in range(3,6):

      self.reference_list.append(self.single_refence_ list[i])

      if config.crawl_isDownLoadLink=='1':

      self.reference_list.append(self.download_url)

      xuhao=self.single_refence_list[0]

      title=self.single_refence_list[1]

      author=self.single_refence_list[2]

      laiyuan=self.single_refence_list[3]

      fabiaoDate=self.single_refence_list[4]

      shujuku=self.single_refence_list[5]

      在導(dǎo)出表格之后,還要將爬取到的信息存儲到數(shù)據(jù)庫之中,通過導(dǎo)入pymysql包實現(xiàn)對MySQL數(shù)據(jù)庫的操作,具體的代碼如下所示:

      sql1 = "insert into detail values (NULL ,%s, %s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"

      try:

      self.cur.execute(sql1, [xuhao, title, author, self.orgn, self.keywords

      , self.abstract, laiyuan, fabiaoDate,shujuku,self.download_url,downnum])

      self.con.commit()

      except:

      pass

      2.2 ?推薦模塊

      本文采用基于用戶的協(xié)同過濾算法,它是根據(jù)用戶歷史的興趣偏好,首先找到與目標(biāo)用戶最相似的用戶(最近鄰居),然后把鄰居用戶喜歡的而目標(biāo)用戶沒有接觸過的物品推薦給目標(biāo)用戶。它主要有三步:(1)用戶評價;(2)搜尋近鄰;(3)生成推薦列表[5]。

      (1)用戶評價

      用戶在文獻(xiàn)檢索系統(tǒng)中評價打分,形成用戶歷史數(shù)據(jù)。

      (2)用余弦相似度尋找近鄰

      使用余弦相似度來計算興趣相似度,如公式1所示,其中A和B分別代表兩個目標(biāo)物品的坐標(biāo),該公式的最終式為余弦公式在N維向量中的公式推導(dǎo)結(jié)果。

      代碼實現(xiàn)如下:

      def cosine(n_x, yr, min_support):

      #初始化計算用矩陣,其中freq用以統(tǒng)計目標(biāo)出現(xiàn)交集次數(shù),prods為交集物品乘積累加矩陣,sqi與sqj分別為為兩目標(biāo)各自物品平方累加矩陣。如果有相同評價物品少于min_sprt次,則直接相似度置為0。

      denum = np.sqrt(sqi[xi, xj] * sqj[xi, xj])

      sim[xi, xj] = prods[xi, xj] / denum

      sim[xj, xi] = sim[xi, xj]

      #返回相似度矩陣

      return sim

      (3)生成推薦列表

      把相似度前N名的用戶喜歡的物品的評分加權(quán)平均,然后按評分從高到低排序給目標(biāo)用戶生成物品推薦列表。

      3 ?運行結(jié)果

      (1)爬蟲檢索與下載文獻(xiàn)

      以知網(wǎng)為實驗平臺。在選擇好主要索引信息之后,會進(jìn)行次要的索引信息提示,用戶可以選擇具體要打印的條件,在用戶選擇好條件和檢索內(nèi)容之后,系統(tǒng)就會查詢到當(dāng)前類別文獻(xiàn)的所有頁面,首先打印顯示當(dāng)前可查詢到的所有頁面數(shù)量,以及下載這些所有的文獻(xiàn)需要的大概時間,用戶可以手動選擇需要打印下載的頁數(shù)或者具體文獻(xiàn),如圖2所示。

      將爬蟲爬取的信息以列表形式記錄下來,包括所有的文獻(xiàn)的簡要信息,比如名稱、作者、來源、日期等基本信息,如圖3所示。

      用戶在選擇好頁數(shù)或者文獻(xiàn)之后,后臺則會根據(jù)所有選擇的條件進(jìn)行篩選,篩選出所有需要下載的文件數(shù)量,然后開始下載,下載的過程中控制臺會顯示出下載文章的名稱,以及具體下載文章的數(shù)量,直到所有文章終止,在開始下載的時候,會進(jìn)行下載的一個時間預(yù)判斷,給出一個下載的時間范圍,然后在下載過程中會設(shè)置一個時間讀秒,從開始下載到結(jié)束下載會設(shè)置一個時間計數(shù),統(tǒng)計下載當(dāng)前所有文章的的實際下載時間,如圖4所示。

      (2)推薦引擎

      根據(jù)用戶的檢索過“大數(shù)據(jù)”歷史,還會有相關(guān)的推薦列表,如圖5所示。

      目前本文所介紹的系統(tǒng)僅在少量用戶中使用,評分?jǐn)?shù)據(jù)集較少(20個用戶對20個文獻(xiàn)共400條評分記錄)。用均方根誤差(RMSE)來計算預(yù)測準(zhǔn)確度,RMSE為25.3%。這是由于測試數(shù)據(jù)太少引起的,在推廣使用后,訓(xùn)練集擴(kuò)大以后準(zhǔn)確率就會 ? 上升。

      4 ?結(jié)論

      本文一方面使用爬蟲技術(shù)實現(xiàn)文獻(xiàn)的智能檢索與關(guān)鍵信息抓取,按需求自動下載文獻(xiàn)資源到本地,不需要一篇一篇手工檢索下載,提高畢業(yè)設(shè)計效率。另一方面基于用戶協(xié)同過濾算法,給學(xué)生提供文獻(xiàn)推薦列表。經(jīng)過測試,基于Python的文獻(xiàn)檢索系統(tǒng)能夠為學(xué)生提供高效準(zhǔn)確的文獻(xiàn)檢索、下載、推薦服務(wù)。在下一步的研究過程中將探討如何將多種推薦算法進(jìn)行結(jié)合,探討標(biāo)簽與基于內(nèi)容的混合推薦算法[6]、基于學(xué)習(xí)風(fēng)格的自適應(yīng)推薦算法[7]、用戶畫像[8]、混合模型推薦算法[9]等提升推薦效率。此外,還要開展用戶隱私保護(hù)工作[10]。

      參考文獻(xiàn)

      [1] 楊洋, 李曉風(fēng), 趙赫, 等. 基于網(wǎng)絡(luò)爬蟲的文獻(xiàn)檢索系統(tǒng)的研究和實現(xiàn)[J]. 計算機(jī)技術(shù)與發(fā)展, 2014(11): 35-38.

      [2] 劉愛琴, 王友林, 尚珊. 基于爬蟲技術(shù)的關(guān)鍵詞關(guān)聯(lián)推薦算法優(yōu)化與實現(xiàn)[J]. 情報理論與實踐, 2018(4): 134-138.

      [3] GOLDBERG D, NICHOLS D, OKI B M, et al. Using collaborative filtering to weave an information tapestry[J]. Communications of the ACM, 1992, 35(12): 61-70.

      [4] 阮陽, 劉禹, 韓港成, 等. 基于爬蟲的定向數(shù)據(jù)檢索系統(tǒng)[J]. 軟件, 2018, 39(5): 118-120.

      [5] 項亮. 推薦系統(tǒng)實踐[M]. 京: 人民郵電出版社, 2012.

      [6] 江周峰, 楊俊, 鄂海紅. 結(jié)合社會化標(biāo)簽的基于內(nèi)容的推薦算法[J]. 軟件, 2015, 36(1): 1-5.

      [7] 許益通, 張冰雪, 趙逢禹. 基于學(xué)習(xí)風(fēng)格的自適應(yīng)學(xué)習(xí)內(nèi)容推薦研究[J]. 軟件, 2018, 39(4): 01-08.

      [8] 李大偉, 杜洪波, 周孝林, 等. 基于“用戶畫像”挖掘的圖書推薦App設(shè)計[J]. 軟件, 2018, 39(5): 35-37.

      [9] 李鵬飛, 吳為民. 基于混合模型推薦算法的優(yōu)化[J]. 計算機(jī)科學(xué), 2014, 41(2): 68-73.

      [10] 張小波, 付達(dá)杰. 網(wǎng)絡(luò)信息資源個性化推薦中隱私保護(hù)的研究[J]. 軟件, 2015, 36(4): 62-66.

      猜你喜歡
      爬蟲畢業(yè)設(shè)計
      利用網(wǎng)絡(luò)爬蟲技術(shù)驗證房地產(chǎn)灰犀牛之說
      基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
      高校畢業(yè)設(shè)計展吸引業(yè)內(nèi)眼球
      玩具世界(2021年6期)2021-04-19 12:15:18
      畢業(yè)設(shè)計優(yōu)秀作品選登
      基于FPGA的畢業(yè)設(shè)計實踐平臺實現(xiàn)
      電子制作(2018年9期)2018-08-04 03:31:14
      利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
      電子測試(2018年1期)2018-04-18 11:53:04
      大數(shù)據(jù)背景下校園輿情的爬蟲應(yīng)用研究
      電子制作(2018年2期)2018-04-18 07:13:42
      大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
      電子制作(2017年9期)2017-04-17 03:00:46
      基于項目引導(dǎo)下的本科卓越工程師畢業(yè)設(shè)計教學(xué)改革初探
      新課程研究(2016年1期)2016-12-01 05:52:16
      基于Heritrix的主題爬蟲在互聯(lián)網(wǎng)輿情系統(tǒng)中應(yīng)用
      张家港市| 石家庄市| 潞城市| 犍为县| 尼勒克县| 施甸县| 嘉义县| 阿城市| 金门县| 蕉岭县| 永靖县| 温泉县| 巍山| 皋兰县| 延安市| 聂拉木县| 五指山市| 屏山县| 方城县| 盐源县| 从化市| 上思县| 延庆县| 延安市| 大同市| 无极县| 泸水县| 孝昌县| 鄱阳县| 万全县| 墨玉县| 应城市| 崇仁县| 永春县| 布尔津县| 锡林郭勒盟| 吴堡县| 读书| 蒙阴县| 元氏县| 吕梁市|