国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ElasticSearch的科技情報(bào)采集檢索系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2024-09-13 00:00:00王柳然石明翔劉豐碩關(guān)紫蓮陳昊東趙云
電腦知識(shí)與技術(shù) 2024年22期

摘要:文章針對(duì)科研人員在大數(shù)據(jù)時(shí)代獲取科技情報(bào)的需求,提出了一種基于ElasticSearch的情報(bào)采集檢索系統(tǒng)。該系統(tǒng)主要包括多源數(shù)據(jù)采集、大數(shù)據(jù)存儲(chǔ)和智能檢索功能。通過(guò)采用ElasticSearch、Selenium、Kafka等大數(shù)據(jù)技術(shù)構(gòu)建分布式數(shù)據(jù)采集引擎,實(shí)現(xiàn)對(duì)互聯(lián)網(wǎng)上多模態(tài)數(shù)據(jù)的高效采集、處理、融合和存儲(chǔ)。在檢索方面,系統(tǒng)采用分布式引擎實(shí)現(xiàn)快速信息檢索和響應(yīng),為科研人員提供便捷的查詢和訪問(wèn)功能。經(jīng)測(cè)試,該系統(tǒng)檢索性能相較傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)提升約32%。

關(guān)鍵詞:自動(dòng)化采集;高性能檢索;ElasticSearch;情報(bào)采集

中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2024)22-0053-04

開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID)

0 引言

隨著信息技術(shù)與經(jīng)濟(jì)全球化的蓬勃發(fā)展,目前正處于信息量爆炸的時(shí)代[1]。在這種“信息過(guò)載”的背景下,數(shù)據(jù)的增速與增量空前絕后,推動(dòng)了分布式存儲(chǔ)技術(shù)的廣泛應(yīng)用[2]。國(guó)內(nèi)學(xué)者已經(jīng)開始采用基于主題的數(shù)據(jù)采集技術(shù),成為當(dāng)前開源情報(bào)獲取的主流方式之一,這些技術(shù)在黨建領(lǐng)域、招聘網(wǎng)站職位需求變化、教育類新聞和航天領(lǐng)域競(jìng)爭(zhēng)情報(bào)等方面得到了廣泛應(yīng)用。與此同時(shí),國(guó)外學(xué)者早在數(shù)年前就開始了基于主題的數(shù)據(jù)采集技術(shù)的應(yīng)用,并將機(jī)器學(xué)習(xí)等先進(jìn)算法融入采集程序中以提高效率[3]??傮w而言,主題為基礎(chǔ)的數(shù)據(jù)收集技術(shù)在網(wǎng)絡(luò)信息收集領(lǐng)域得到了廣泛應(yīng)用,它是目前解決“信息迷航”問(wèn)題并提高開源信息準(zhǔn)確獲取能力的關(guān)鍵途徑。然而,以上學(xué)者更多地依賴于基于主題的數(shù)據(jù)采集技術(shù),只針對(duì)特定數(shù)據(jù)源,而情報(bào)需要涵蓋各種主題的數(shù)據(jù)。因此,這些并不適用于當(dāng)今海量數(shù)據(jù)的大數(shù)據(jù)時(shí)代。并且,這些學(xué)者僅僅關(guān)注于數(shù)據(jù)采集的研究,而未對(duì)海量數(shù)據(jù)的高效存儲(chǔ)、檢索以及融合處理進(jìn)行深入探討。

本文提出了一種面向海量多模態(tài)數(shù)據(jù)的情報(bào)采集與檢索系統(tǒng)。該系統(tǒng)主要包括多源數(shù)據(jù)采集、大數(shù)據(jù)存儲(chǔ)和智能檢索功能。通過(guò)采用Selenium、Kafka、Elastic Stack等大數(shù)據(jù)技術(shù)構(gòu)建分布式數(shù)據(jù)采集引擎,實(shí)現(xiàn)了對(duì)互聯(lián)網(wǎng)上各種形式數(shù)據(jù)的高效采集、處理、融合和存儲(chǔ)。

1 相關(guān)技術(shù)

1.1 分布式全文搜索引擎Elasticsearch

Elasticsearch 是一個(gè)開源的分布式全文搜索引擎,基于Apache Lucene構(gòu)建,專注于實(shí)時(shí)搜索和大規(guī)模數(shù)據(jù)分析。其強(qiáng)大的搜索和分析功能使其在各種應(yīng)用場(chǎng)景中廣泛應(yīng)用,包括文檔檢索、日志分析、企業(yè)搜索等。在ElasticSearch中,索引、類型和文檔之間的關(guān)系如圖1所示。它采用了倒排索引的機(jī)制,使得文本搜索具有近實(shí)時(shí)性能。倒排索引按照指定語(yǔ)法對(duì)每個(gè)文檔進(jìn)行分詞和分析,然后維護(hù)一張表,列舉所有文檔中出現(xiàn)的單詞以及它們所屬的文檔ID和出現(xiàn)頻率。這種倒排索引的存儲(chǔ)形式實(shí)現(xiàn)了一種“單詞-文檔矩陣”,主要由單詞詞典、倒排列表和倒排文件組成。

1.2 Web自動(dòng)化技術(shù)Selenium

隨著互聯(lián)網(wǎng)的不斷發(fā)展,Web應(yīng)用程序的復(fù)雜性和多樣性不斷增加。傳統(tǒng)的手動(dòng)測(cè)試方法已經(jīng)無(wú)法滿足快速迭代的軟件開發(fā)需求,因此自動(dòng)化測(cè)試工具逐漸成為軟件開發(fā)過(guò)程中不可或缺的一部分。Selenium作為一種強(qiáng)大的自動(dòng)化測(cè)試工具,通過(guò)模擬用戶在瀏覽器中的操作,實(shí)現(xiàn)對(duì)Web應(yīng)用程序的自動(dòng)化測(cè)試,從而提高測(cè)試效率和準(zhǔn)確性。

1.3 分布式流處理消息隊(duì)列Kafka

Kafka是一種開源的分布式流處理消息隊(duì)列,最初由LinkedIn公司開發(fā),并在成為Apache項(xiàng)目后得到了廣泛應(yīng)用。作為一種高性能、可擴(kuò)展且持久性強(qiáng)的消息隊(duì)列系統(tǒng),Kafka在處理大規(guī)模數(shù)據(jù)流、消息傳遞和事件驅(qū)動(dòng)應(yīng)用方面具有卓越的優(yōu)勢(shì)。

2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

2.1 系統(tǒng)架構(gòu)

如圖2所示,本文的系統(tǒng)設(shè)計(jì)采用分層架構(gòu),包括基礎(chǔ)資源層、數(shù)據(jù)采集層、數(shù)據(jù)處理存儲(chǔ)層、數(shù)據(jù)分析層、應(yīng)用支撐層和應(yīng)用層。在基礎(chǔ)資源層,包括互聯(lián)網(wǎng)數(shù)據(jù)、語(yǔ)料庫(kù)、索引庫(kù)和元信息庫(kù)等資源,為整個(gè)系統(tǒng)提供了必要的信息基礎(chǔ)。數(shù)據(jù)采集層負(fù)責(zé)通過(guò)模塊如Flask、Selenium、Requests等進(jìn)行情報(bào)的采集工作,同時(shí)使用Bloom Filter進(jìn)行數(shù)據(jù)清洗,以確保數(shù)據(jù)的質(zhì)量和準(zhǔn)確性。采集到的數(shù)據(jù)存儲(chǔ)在MySQL數(shù)據(jù)庫(kù)和Elasticsearch中。自然語(yǔ)言處理層運(yùn)用了諸如TextRank等算法,用于提取摘要和關(guān)鍵詞,同時(shí)為爬蟲子系統(tǒng)提供了接口,以支持高級(jí)的數(shù)據(jù)分析功能。應(yīng)用支撐層依賴ElasticSearch彈性搜索引擎,構(gòu)建了高效的分布式檢索子系統(tǒng),為用戶提供快速的數(shù)據(jù)檢索服務(wù)。應(yīng)用層包括多項(xiàng)功能,如情報(bào)采集、情報(bào)管理、情報(bào)分析、情報(bào)檢索、摘要提取、關(guān)鍵詞提取和爬蟲設(shè)置等,以滿足用戶的需求。

2.2 數(shù)據(jù)采集層

為了提高數(shù)據(jù)的可用性和價(jià)值,本系統(tǒng)數(shù)據(jù)采集層使用Selenium進(jìn)行數(shù)據(jù)爬取,同時(shí)利用TextRank等算法提取摘要和關(guān)鍵詞,并將其存儲(chǔ)。通過(guò)這一步驟,為數(shù)據(jù)分析層提供了接口,實(shí)現(xiàn)對(duì)采集數(shù)據(jù)的處理和分析。

首先,Python爬蟲服務(wù)器監(jiān)聽Kafka消息隊(duì)列,一旦有新消息(即情報(bào)任務(wù)),即開始消費(fèi)。對(duì)于每個(gè)任務(wù),爬蟲服務(wù)器收到任務(wù)消息后,即開始相應(yīng)的數(shù)據(jù)采集工作。如圖3所示,這包括根據(jù)任務(wù)中指定的采集源,利用Selenium工具模擬人類行為進(jìn)行數(shù)據(jù)采集,以規(guī)避網(wǎng)站的反爬措施。采集到的原始數(shù)據(jù)經(jīng)過(guò)清洗,去除噪音和冗余信息,并進(jìn)行網(wǎng)頁(yè)正文提取。

1) 步驟1:初始化Selenium Client通過(guò)Web Driver操控瀏覽器模擬人為操作。

2) 步驟2:采集程序首先針對(duì)用戶輸入的關(guān)鍵詞在搜索引擎上進(jìn)行檢索,以百度為例。如果檢索結(jié)果中包含百度推廣或廣告,則將其過(guò)濾,否則程序?qū)⑦M(jìn)入網(wǎng)頁(yè)。

3) 步驟3:在進(jìn)入網(wǎng)頁(yè)后,程序會(huì)獲取當(dāng)前網(wǎng)頁(yè)的URL,并與數(shù)據(jù)庫(kù)中已存儲(chǔ)的數(shù)據(jù)進(jìn)行比對(duì)。如果發(fā)現(xiàn)重復(fù),則會(huì)跳過(guò)該條數(shù)據(jù),這一步驟旨在進(jìn)行初步的去重處理。

4) 步驟4:如果頁(yè)面不重復(fù),則程序?qū)⑴廊≡擁?yè)面的HTML代碼部分,以獲取情報(bào)內(nèi)容。

5) 步驟5:爬取到的HTML代碼將通過(guò)數(shù)據(jù)處理模塊進(jìn)行清洗,去除噪音和冗余信息。隨后進(jìn)行網(wǎng)頁(yè)正文提取,并將提取的內(nèi)容存入數(shù)據(jù)庫(kù),以備檢索之用。

2.3 數(shù)據(jù)處理層

數(shù)據(jù)處理層的主要任務(wù)是清洗爬取到的HTML代碼并提取其中的關(guān)鍵詞和摘要等信息。由于爬取到的數(shù)據(jù)中包含大量HTML標(biāo)簽,這些標(biāo)簽會(huì)影響后續(xù)關(guān)鍵詞和摘要提取的質(zhì)量。因此,本文首先采用基于文本及標(biāo)點(diǎn)符號(hào)密度的網(wǎng)頁(yè)正文提取算法進(jìn)行正文提取。網(wǎng)頁(yè)正文提取即從HTML網(wǎng)頁(yè)中提取核心文本信息。鑒于搜索引擎采集的數(shù)據(jù)種類繁多,包含大量無(wú)關(guān)信息,如導(dǎo)航欄、頁(yè)眉、頁(yè)腳等元素,并非正文內(nèi)容。這些元素的存在會(huì)降低后續(xù)關(guān)鍵詞和摘要提取的質(zhì)量。因此,通過(guò)采用基于文本及符號(hào)密度的網(wǎng)頁(yè)正文提取算法,可以有效解決這一問(wèn)題,精準(zhǔn)提取出頁(yè)面的核心文本,從而提高后續(xù)處理的效果。

如圖4所示,首先將網(wǎng)頁(yè)源碼進(jìn)行預(yù)處理,之后進(jìn)行Dom樹構(gòu)建,計(jì)算每個(gè)節(jié)點(diǎn)變量的分?jǐn)?shù)提取出網(wǎng)頁(yè)正文進(jìn)行輸出。

提取到正文之后,將利用TF-IDF、TextRank等算法進(jìn)行關(guān)鍵詞提取和摘要提取。利用TF-IDF等算法從文本中自動(dòng)識(shí)別和提取最具代表性和重要性的關(guān)鍵詞或短語(yǔ)。根據(jù)單詞在文本中的頻率(TF) 和在整個(gè)語(yǔ)料庫(kù)中的逆文檔頻率(IDF) 來(lái)計(jì)算關(guān)鍵詞的重要性。被認(rèn)為是關(guān)鍵詞的單詞具有較高的TF-IDF值,因?yàn)槠湓谖谋局蓄l繁出現(xiàn)且在整個(gè)語(yǔ)料庫(kù)中占據(jù)重要位置。雖然詞頻是確定關(guān)鍵詞重要性的一個(gè)因素,但并非唯一因素。因此,TF-IDF算法會(huì)綜合考慮詞頻以及詞在整個(gè)文本集中的頻率。如公式(1) 所示為詞頻計(jì)算公式。

[TFij=ni,jΣknk,j] (1)

式中,分子[ni,j]為目標(biāo)詞的個(gè)數(shù),TF值由目標(biāo)詞在文本中出現(xiàn)的次數(shù)除以文本總詞數(shù)得出,其中文本的長(zhǎng)度對(duì)TF值具有一定影響,一般會(huì)在計(jì)算時(shí)對(duì)詞頻進(jìn)行歸一化處理[4]。通過(guò)關(guān)鍵詞的提取,系統(tǒng)可以為后續(xù)的分類、聚類和數(shù)據(jù)分析提供重要的數(shù)據(jù)支持。提取的關(guān)鍵詞或短語(yǔ)可以作為特征向量,用于文本分類或聚類算法的輸入,幫助系統(tǒng)更好地理解和組織文本數(shù)據(jù)。

為了方便用戶更直觀地了解采集內(nèi)容,因此將網(wǎng)頁(yè)正文進(jìn)行摘要提取,從而抽取出包含主要信息的簡(jiǎn)潔概括。TextRank算法是一種基于圖的排序算法,用于文本摘要和關(guān)鍵詞提取。它首先構(gòu)建文本中句子或詞語(yǔ)的加權(quán)無(wú)向圖,然后通過(guò)迭代計(jì)算每個(gè)節(jié)點(diǎn)的重要性得分,最終根據(jù)節(jié)點(diǎn)得分進(jìn)行排序,選取得分高的節(jié)點(diǎn)作為文本摘要的關(guān)鍵句子或關(guān)鍵詞。這一算法簡(jiǎn)單有效,不需要依賴領(lǐng)域特定的語(yǔ)料庫(kù)或訓(xùn)練數(shù)據(jù),因此在文本處理、信息檢索和自然語(yǔ)言處理領(lǐng)域得到廣泛應(yīng)用。在基于TextRank算法的自動(dòng)文摘實(shí)現(xiàn)中,一般模型可表示為以句子為圖中的文本單元頂點(diǎn),句子相似度為邊的圖模型。具體實(shí)現(xiàn)上,模型由頂點(diǎn)集和邊集組成,頂點(diǎn)權(quán)重的計(jì)算以及頂點(diǎn)間的聯(lián)系可表示如式(2) 所示。

[WSVi=(1-d)+d×∑Vj∈In Vi ωji∑Vk∈OutVj ωjkWSVj] (2)

2.4 應(yīng)用支撐層

基于Lucene構(gòu)建的開源分布式搜索引擎Elasticsearch,具備高可靠性,并支持多種企業(yè)級(jí)搜索應(yīng)用場(chǎng)景。利用其彈性搜索技術(shù),本文構(gòu)建了高效的分布式檢索子系統(tǒng),以提供對(duì)采集數(shù)據(jù)的快速檢索和查詢功能。該系統(tǒng)支持多維篩選、相關(guān)性排序和聚類分析等功能,旨在提升用戶的檢索效率和準(zhǔn)確性。

在ElasticSearch中,單詞詞典記錄了單詞與倒排列表之間的映射關(guān)系,通?;贐+樹或Hash拉鏈法實(shí)現(xiàn),以保證在查詢、插入和刪除等操作時(shí)的高性能。倒排列表由倒排索引項(xiàng)組成,主要記錄了單詞對(duì)應(yīng)的文檔ID列表、單詞頻率、單詞位置和單詞偏移等信息。這些倒排列表通常按順序存儲(chǔ)在倒排文件中,倒排文件是倒排索引的物理文件,存儲(chǔ)在磁盤中[5]。ElasticSearch中的數(shù)據(jù)倒排索引存儲(chǔ)示例如表1所示。流程如圖5所示。

由于本系統(tǒng)需要進(jìn)行高性能檢索,因此將數(shù)據(jù)進(jìn)行以上倒排索引存儲(chǔ)在ES中。以提供對(duì)采集數(shù)據(jù)的快速檢索和查詢功能ES存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)如下:

各字段含義:

data = {

'url':,網(wǎng)址

'content': "",正文

'user_id': []所歸屬用戶id

}

2.5 應(yīng)用服務(wù)層

應(yīng)用層直接與用戶進(jìn)行交互,提供情報(bào)采集、情報(bào)管理、情報(bào)分析、情報(bào)檢索、摘要提取、關(guān)鍵詞提取、爬蟲設(shè)置等功能,方便用戶進(jìn)行知識(shí)情報(bào)工作。用戶可以通過(guò)界面操作進(jìn)行數(shù)據(jù)采集、查詢、分析和導(dǎo)出,提高工作效率和決策能力。

3 實(shí)驗(yàn)驗(yàn)證

為了驗(yàn)證系統(tǒng)的執(zhí)行效率,本文環(huán)境采用3臺(tái)服務(wù)器,一臺(tái)為Winserver爬蟲服務(wù)器,兩臺(tái)Ubuntu系統(tǒng)應(yīng)用服務(wù)器,配置均為2核8G內(nèi)存。實(shí)驗(yàn)通過(guò)對(duì)不同數(shù)據(jù)量,長(zhǎng)文本全文進(jìn)行關(guān)鍵詞檢索,并將MySQL與ES執(zhí)行效果進(jìn)行對(duì)比,結(jié)果如圖6所示。

實(shí)驗(yàn)結(jié)果表明,在數(shù)據(jù)量較少時(shí),傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)反而顯示出性能優(yōu)勢(shì)。然而,數(shù)據(jù)量達(dá)到約2 000條時(shí),在長(zhǎng)文本全文檢索方面,Elasticsearch(ES) 的效率有所提高。在數(shù)據(jù)量達(dá)到5 000條時(shí),平均處理時(shí)間相比傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)減少了約32%左右。實(shí)驗(yàn)結(jié)果證明在大數(shù)據(jù)量長(zhǎng)文本全文檢索中,隨著數(shù)據(jù)量增大,本系統(tǒng)能夠做到快速響應(yīng),表現(xiàn)出本系統(tǒng)良好的性能。

4 結(jié)束語(yǔ)

本文基于Elasticsearch高性能檢索引擎,結(jié)合了Selenium自動(dòng)化技術(shù)、Kafka消息隊(duì)列,以及TextRank和TF-IDF等自然語(yǔ)言處理相關(guān)算法,實(shí)現(xiàn)了基于ElasticSearch的科技情報(bào)采集檢索系統(tǒng)。通過(guò)Selenium模擬人工操作,有效規(guī)避了網(wǎng)站的反爬機(jī)制,并利用正文提取算法從復(fù)雜的HTML代碼中提取有用信息,使用Elasticsearch實(shí)現(xiàn)了高性能的檢索。經(jīng)過(guò)對(duì)比測(cè)試,在處理大數(shù)據(jù)量時(shí),相較于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),系統(tǒng)的全文檢索性能提升了約32%,充分證明了該系統(tǒng)在檢索效率方面的出色表現(xiàn)。

參考文獻(xiàn):

[1] 王勇.基于大數(shù)據(jù)平臺(tái)的企業(yè)競(jìng)爭(zhēng)情報(bào)系統(tǒng)設(shè)計(jì)及應(yīng)用研究[D].昆明:昆明理工大學(xué),2018.

[2] 秦宗和.基于數(shù)據(jù)挖掘的圖書館智庫(kù)情報(bào)服務(wù)構(gòu)建研究[J].圖書館學(xué)刊,2018,40(6):43-47.

[3] 張林.民航信息情報(bào)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].上海:上海交通大學(xué),2016.

[4] 張洋.基于TextRank算法的自動(dòng)文摘系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2021.

[5] 李峰,宋宴,魏廣澤,等.基于ElasticSearch的海量遙感數(shù)據(jù)檢索技術(shù)研究[J].計(jì)算機(jī)與網(wǎng)絡(luò),2021,47(5):57-61.

【通聯(lián)編輯:謝媛媛】

湘乡市| 冷水江市| 托克逊县| 格尔木市| 普格县| 井研县| 无为县| 云南省| 灵丘县| 沂水县| 增城市| 罗江县| 绵竹市| 温泉县| 普洱| 蒙自县| 达日县| 华池县| 彩票| 时尚| 葵青区| 疏附县| 沅江市| 临安市| 秦安县| 周至县| 宁远县| 利津县| 环江| 三门峡市| 包头市| 禄劝| 肇东市| 黄大仙区| 德清县| 铜梁县| 元朗区| 云林县| 灵寿县| 临洮县| 曲靖市|