MongoDB在信息資源共享建設的應用實踐

本文來自獲得《2021MongoDB技術實踐與應用案例徵集活動》入圍案例獎作品
作者:張先明

1. 背景介紹

成立於上個世紀 50 年代,有 60 多年曆史的某中心(以下簡稱“中心”)所提供服務的屬性是軟科學;中心服務提供的產品是大量面向專業的,高質量的專業技術報告。如何更好的利用這些海量的文獻以促進工作發展,是一箇中心要面對的問題。

爲此,信息化部門開始着手建設“信息資源共享系統”(以下簡稱“系統”)。系統的建設目標與意義是:

在單位內部,開展不同部門之間的信息資源的共用,以便達到合理的資源配置;

提高信息流動速度,降低獲得成本;實現內部信息資源的通暢,提高信息資源利用率;

實現中心內部信息共享的積累與充分共享爲最終目標。

2. 系統使用技術

**2.1 系統建設面臨的要點 **

經過調研,中心認爲可以借鑑互聯網用戶經常使用的百度,搜狗這樣的網絡檢索系統。互聯網用戶檢索出來的是各類網頁,而本系統用戶檢索出來的是中心所擁有文獻。基於這一點,我們要考慮如下幾個要點:

1.如何把中心大量的文獻保存在一個數據平臺當中,這個平臺不僅要完好的保存文獻,還要提供高效的查詢,導出服務。

2.一個文獻往往有幾萬個漢字,如何讓用戶以最快的速度瞭解這個文獻的內容,以判斷內容是否符合用戶的要求。

用戶檢索一方面要能找到相關的文獻,另一方面檢索的速度要符合通行的標準:對用戶請求的響應時間不超過 3 秒。

從這幾個要點來看,傳統的工程建設方法(比如基於關係型數據庫)已經力不從心,所以這裏引進符合要求的大數據以及互聯網等技術。

2.2 系統建設所使用技術

系統建設所使用的技術有如下幾項:面向大數據庫存儲的文檔數據庫MongoDB;提高了檢索質量,有利於前後端分離的微服務 SpringBoot,以及對文獻進行文字處理的自然語言處理技術(NLP)。下面大致介紹一下這幾項。

2.2.1 MongoDB 數據庫

本系統部使用的數據庫版本爲3.6,部署服務器操作系統windows server 2008。由於服務器硬件和操作系統軟件性能質量都比較一般,數據庫在系統運行中的性能發揮的不是最優。

2.2.2 微服務以及 SpringBoot

微服務的最重要的特徵是由於服務較小且可獨立部署,因此不再需要繁瑣的行動才能更改應用程序小部分內容。SpringBoot 是 Java 領域微服務架構最優落地技術,Spring Boot 2.0+MongoDB 3.6 方案是在本系統所使用的服務端方案。

2.2.3 自然語言處理

自然語言處理( NLP)以語言爲對象,把計算機作爲語言研究的強大工具,在計算機的支持下對語言信息進行定量化的研究。這裏我們使用兩個重要的部分:

1.自動摘要。利用計算機按照某一規則自動地對文本信息進行提取、集合成簡短摘要的一種信息壓縮技術,旨在實現兩個目標:首先使語言的簡短,其次要保留重要信息。

2.關鍵詞提取。從文本里面把跟這篇文章意義最相關的一些詞語抽取出來。關鍵詞是爲了文獻標引工作,從報告、論文中選取出來用以表示全文主題內容信息的單詞或術語。

摘要和關鍵詞在系統建設方面有着重要的應用,它是進行工作不可或缺的基礎和前提。本系統使用 java 工具包 ansj 來執行此類工作。

另外由於中心產生的文獻保存格式基本爲:pdf,word,excel,ppt 格式。所以本系統使用相應的 tika 軟件包把文件中的文本內容抽取出來,然後再對文本內容進行自動摘要、關鍵詞提取工作。

3. 系統設計

系統主體功能模塊有以下兩個模塊組成:信息採集、信息檢索。

中心使用“信息採集”模塊對移交過來的大量文獻進行批量的採集處理,將處理結果保存在數據存儲當中。用戶使用“信息檢索”功能對採集結果進行檢索,並對檢索出的結果進行詳情閱讀等操作。這裏要注意的是,本文所用的樣例文獻都來源於公開的新聞網站。

3.1 信息採集

3.1.0 工作過程

一個文獻被採集進入系統的過程步驟如下所示:

1.文件採集

文獻從硬盤中讀取,解析生成元數據

文獻本身和元數據保存在數據庫

2.全文抽取

把全部文本從文獻抽取出來

保存在 MongoDB 當中

3.自動摘要和關鍵詞提取

分析上一步得到的全文,提取摘要和關鍵詞

保存到數據庫當中

4.文獻間相關度計算

把文獻的關鍵詞和其它文獻的關鍵詞進行計量

把符合條件的結果保存到數據庫當中

該模塊內容如下:文件採集、全文抽取、自動摘要與關鍵詞提取、文獻間相關度計算。文章不僅介紹了各個子模塊的工作內容,還用圖例顯示工作效果。

3.1.1 文件採集

文件採集是在後臺服務器上實現的。對準備好的大批量文獻進行批處理,逐一進行讀取,生成元數據(年份、作者、部門等)。將文獻本身和生成的元數據保存到數據庫當中。

圖 1. 服務器上準備好的待採集的文件。可以看到要做實例文獻的“溫潤如玉的長榮航空皇璽桂冠艙.docx”,該文獻大小爲 9MB。

圖 2.採集後文獻保存在 MongoDB 數據庫(GridFS)當中。從圖中可以看到保存在數據庫當中的“溫潤如玉的長榮航空皇璽桂冠艙.docx”文獻,數據庫管理員可以完整地把文獻下載到本地。

圖 3.顯示了該文獻生成的元數據(部門:管理所,年份:2019,種類:報告…..)。要注意的是,這些文獻是作爲 pdf/doc/ppt 等格式文件整體保存在數據庫中的,用戶並不能查看其內容以及進行內容檢索。

3.1.2 全文抽取

對上一步保存好的文獻進行讀取,讀取出全部文本內容,然後把這些內容保存(MongoTemplate 技術)數據庫中。

圖 1.保存在數據庫中的全文。由於文獻內容比較多,讀者只可以看到部分內容。實際上的全文字數已經超過了一萬多字。

3.1.3 自動摘要與關鍵詞提取

使用 NLP 處理軟件包對從“溫潤如玉的長榮航空皇璽桂冠艙.docx”抽取的全文,進行摘要的自動生成和關鍵詞抽取.並保存到數據庫(MongoTemplate 技術)當中。

圖 1. “溫潤如玉的長榮航空皇璽桂冠艙.doc”的自動摘要生成內容。

圖 2. 提取出來的關鍵詞。本文獻提取出來的關鍵詞爲: 長榮,航空,商務艙,休息室,座位,桂冠艙,臺北等。

3.1.4 文獻間相關度計算

當一個用戶對發現了一篇對他工作有用的文獻之後,想必還想進一步瞭解一些相關的文獻。系統在後臺在對每一篇文獻進行相關度計算,得到一批與這篇文獻相關的文獻,並保存下來,供用戶使用。

該功能背後的數據科學原理就是可信度計算:同時出現在文獻 1 和文獻 2 的關鍵詞個數佔文獻 1 關鍵詞個數的比例大小,取值爲(0,1],數值越大,相關度就越高。“溫潤如玉的長榮航空皇璽桂冠艙.docx”相關的文獻集合如下, 可以看出來,這些文獻都是關於民航飛行的。

加拿大航空國際商務艙體驗.docx 相關度 0.5

長榮航空創始人.docx, 相關度 0.4

追尋瑞士航空曾經的風花雪月.docx, 相關度 0.5

家常溫馨的韓亞航空長途商務艙.docx 相關度 0.35

香港航空即將開通首條新西蘭奧克蘭航線.doc 相關度 0.3

日本航空 JL009 芝加哥-東京成田.docx 相關度 0.3

又見風擋破裂.docx, 相關度 0.3

航空安全榜.docx, 相關度 0.29

當你在飛機上睡着時.docx 相關度 0.37

3.2 信息檢索

3.2.0 工作過程該功能是面向中心廣大用戶的,用戶可以使用這個功能模塊在網頁上進行相關檢索,系統對每一次操作的工作過程大體用下圖可以說明:

該功能涉及到系統的三層結構:網頁前端、運行在服務器 JAVA EE 平臺的微服務架構,還有文檔數據庫 MongoDB。

服務器部署的微服務概覽所下圖所示:

該功能模塊可以分爲以下幾個子模塊: 關鍵詞檢索、文獻信息瀏覽。

3.2.1 關鍵詞檢索

信息檢索模塊主要是面向中心廣大用戶的,它提供了一種類似於百度檢索的功能:用戶在文本查詢框中輸入關鍵詞後,頁面返回一批相關的文獻數據,用戶可以查看詳細內容。系統提供了文件名檢索、目錄(摘要和關鍵詞)檢索、全文檢索。

圖 1. 用戶檢索文件名稱包含“發動機”的文獻。用戶提交了關鍵詞“發動機”後,網頁就顯示出相關的文獻集合。如果文獻數量太多,用戶可以點擊分頁查看更多的內容。本次檢索出72個相關的文獻內容,左側顯示了對這72條記錄進行了相應的分類彙總(密級、年度、作者、部門等)

圖 2. 顯示了每一條記錄(文獻)展示給用戶的內容。包括了文件名稱、摘要(如果字數太多則截取前幾十字)、關鍵詞、密級、年度等。

3.2.2 文獻信息瀏覽

如果用戶想對其中一條查詢結果進行進一步的瞭解,用戶可以打開新的頁面查看。

圖 1. 顯示了用例“普惠推出新的航空發動機 MRO 服務品牌 EngineWise”

本功能不僅顯示了一條文獻的詳細信息,而且還顯示了與這個文獻有一定相關度(推薦閱讀)的其它文獻簡要信息。

圖 2. 顯示了“普惠推出新的航空發動機 MRO 服務品牌 EngineWise”相關的其它文獻,可以看出來本文獻和相關文獻都是關於發動機維修(MRO)的。

世界知名航空維修 MRO 企業:將如何前行,關聯度:0.6

MRO 最大影響:大批新一代發動機迎來首次大修,關聯度:0.5

國外航空發動機維修模式及其競爭關係,關聯度:0.55

普惠最新財務表現,關聯度:0.5

普惠公司售後市場供應鏈與渦輪控制簽署全新 MRO 交易,關聯度:0.5

看 GE 公司是如何進行航空發動機維修和維護工作,關聯度:0.5

阿提哈德航空工程公司爲肯尼亞 787 提供檢修,關聯度:0.45

航空維修,是好生意嗎,關聯度:0.45

有多少是使用國產發動機的,關聯度:0.42143

數據如何改變飛機維修,關聯度:0.4

4.系統運營情況

系統當前收錄文獻近 42 萬件(360GB),可供中心人員進行查詢和下載。系統運行性能良好,平均用戶請求響應時間低於 2.5 秒。

5.將來的工作

將來的工作可以分爲兩個部分:事務性工作、系統功能擴展。事務性工作。

信息採集的擴大:力爭 2022 年數據量達到 70 萬篇(500GB)。

系統功能擴展:仿製百度,搜狗之類的互聯網檢索系統部分有益的功能:智能檢索,以提高用戶使用體驗,更重要的是在使用過程中不斷髮現新的知識點。

作者:張先明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章