李海燕 吳元業(yè) 崔一鳴
摘要:機(jī)構(gòu)學(xué)者庫(kù)受到越來(lái)越多圖書(shū)館和科研機(jī)構(gòu)的關(guān)注,文章構(gòu)建了一個(gè)基于微服務(wù)架構(gòu)的機(jī)構(gòu)學(xué)者庫(kù)平臺(tái),依托成熟的開(kāi)源框架,采用Spring Boot框架搭建后端微服務(wù),前端基于React,采用Ant Design框架,實(shí)現(xiàn)平臺(tái)的高度可擴(kuò)展及敏捷開(kāi)發(fā),并就平臺(tái)建設(shè)中的姓名消歧問(wèn)題進(jìn)行設(shè)計(jì),系統(tǒng)運(yùn)行良好,可為機(jī)構(gòu)學(xué)者庫(kù)建設(shè)提供借鑒和參考。
關(guān)鍵詞:微服務(wù);機(jī)構(gòu)學(xué)者庫(kù);姓名消歧;Spring Boot;Dubbo
中圖分類號(hào):TP311;G251? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? 文章編號(hào):2096-4706(2021)07-0010-04
Design and Implementation of the Institutional Scholar Base Platform Based on Microservice Architecture
LI Haiyan,WU Yuanye,CUI Yiming
(Shenzhen University Library,Shenzhen? 518060,China)
Abstract:The scholar base has received the attention of more and more libraries and scientific research institutions,and the article has built a institutional scholar base platform based on microservice architecture,relying on mature open source framework,using the Spring Boot framework to build back-end microservice,front-end based on React and uses Ant Design framework,and the platform can implement agile development and be highly scalable. Then,designing algorithm of name disambiguation for the platform,the system is well operating,and can provide experience and reference for the construction of institutional scholar base.
Keywords:microservice;institutional scholar base;name disambiguation;Spring Boot;Dubbo
收稿日期:2021-03-09
基金項(xiàng)目:深圳大學(xué)校級(jí)青年扶持項(xiàng)目(Q NFC1948)
0? 引? 言
機(jī)構(gòu)學(xué)者庫(kù)以機(jī)構(gòu)學(xué)者為中心,對(duì)學(xué)者的研究成果、學(xué)術(shù)活動(dòng)等結(jié)構(gòu)化數(shù)據(jù)進(jìn)行收集、存儲(chǔ)和管理,旨在以各種方式將分布在不同系統(tǒng)的數(shù)據(jù)進(jìn)行整合,并通過(guò)可視化的統(tǒng)計(jì)及分析功能滿足眾多個(gè)性化需求[1]。機(jī)構(gòu)學(xué)者庫(kù)的建立有利于高校圖書(shū)館或科研部門(mén)對(duì)學(xué)術(shù)數(shù)據(jù)進(jìn)行長(zhǎng)久存儲(chǔ),并在此基礎(chǔ)上,按學(xué)院、學(xué)者、成果類型、時(shí)間等維度進(jìn)行成果統(tǒng)計(jì),分析各學(xué)科的科研趨勢(shì),提供精準(zhǔn)的學(xué)科服務(wù),更長(zhǎng)遠(yuǎn)的目標(biāo)是通過(guò)展示學(xué)者的研究成果提升學(xué)者的影響力,進(jìn)而促進(jìn)學(xué)者間的合作。
在當(dāng)前學(xué)者庫(kù)建設(shè)過(guò)程中,學(xué)者成果數(shù)據(jù)往往由學(xué)者自主提交,學(xué)者參與感不強(qiáng),即使有政策鼓勵(lì),也難以保證時(shí)效性[2]。部分支持管理員批量導(dǎo)入,系統(tǒng)自動(dòng)或人工匹配后發(fā)給學(xué)者認(rèn)領(lǐng),但是受學(xué)者姓名歧義問(wèn)題困擾,工作量較大。特別是英文文獻(xiàn),存在同一作者對(duì)應(yīng)多個(gè)英文名,不同的學(xué)者有同樣的英文名等問(wèn)題,系統(tǒng)輔助消歧顯得尤為重要。學(xué)者成果除論文、專著外,開(kāi)始向?qū)@麅A斜,并考慮將專題講座、課程教學(xué)演示文稿等階段性成果納入學(xué)者的個(gè)人成果,故機(jī)構(gòu)學(xué)者庫(kù)平臺(tái)應(yīng)靈活可擴(kuò)展,能敏捷開(kāi)發(fā),迅速迭代,滿足邊建設(shè)、邊使用、邊完善的要求。
綜合以上問(wèn)題,筆者提出了基于微服務(wù)架構(gòu)的機(jī)構(gòu)學(xué)者庫(kù)平臺(tái)建設(shè),并針對(duì)平臺(tái)建設(shè)中的姓名消歧問(wèn)題進(jìn)行設(shè)計(jì),系統(tǒng)具有高可擴(kuò)展性、可為其他圖書(shū)館和科研機(jī)構(gòu)提供建設(shè)參考。
1? 微服務(wù)開(kāi)發(fā)框架搭建
微服務(wù)架構(gòu)是一種把單體應(yīng)用拆分成各種獨(dú)立可運(yùn)行服務(wù)的架構(gòu)方式,這些服務(wù)通過(guò)輕量級(jí)協(xié)議通信。其有以下優(yōu)點(diǎn)[3]:
(1)服務(wù)粒度小,聚焦解決具體業(yè)務(wù),業(yè)務(wù)清晰,易于開(kāi)發(fā)與維護(hù)。
(2)每個(gè)服務(wù)獨(dú)立部署,松耦合,能持續(xù)交付和優(yōu)化。對(duì)某個(gè)微服務(wù)進(jìn)行修改,只需要重新部署這個(gè)服務(wù)即可,不影響整體框架。
(3)按需收縮,可根據(jù)需要實(shí)現(xiàn)粒度擴(kuò)展,如某個(gè)服務(wù)吞吐量較大,可增加內(nèi)存或升級(jí)CPU等。
使用微服務(wù)架構(gòu),可以使平臺(tái)更加靈活,易于持續(xù)維護(hù)和擴(kuò)展。
1.1? 相關(guān)框架介紹
本平臺(tái)采用開(kāi)源框架Spring Boot、Duboo、Ant Design來(lái)搭建,各框架特點(diǎn)如下:
(1)Spring Boot。Spring Boot[4]繼承了Spring框架優(yōu)勢(shì),幫助開(kāi)發(fā)者更容易創(chuàng)建基于Spring的應(yīng)用程序和服務(wù),擁有良好的可擴(kuò)展性。Spring Boot提供spring-boot-starter-web.jar,嵌入了Tomcat,簡(jiǎn)化了項(xiàng)目的部署,同時(shí)可以支持使用Spring MVC的注解。實(shí)現(xiàn)自動(dòng)配置,不用進(jìn)行復(fù)雜的xml配置。
(2)Dubbo。Dubbo[5]是阿里巴巴公司開(kāi)源出來(lái)的一款輕量級(jí)、高性能的Java RPC框架,能與Spring框架無(wú)縫對(duì)接。
(3)Ant Design。基于React的Ant Design[6]提供的組件構(gòu)建,React使代碼呈現(xiàn)模塊化,可維護(hù)性高。Ant Design是螞蟻金服開(kāi)發(fā)和正在使用的一套服務(wù)于企業(yè)級(jí)產(chǎn)品的界面設(shè)計(jì)組件,通過(guò)模塊化的解決方案,降低生產(chǎn)成本,讓設(shè)計(jì)者專注于更好的用戶體驗(yàn)。
1.2? 基于微服務(wù)架構(gòu)的機(jī)構(gòu)學(xué)者庫(kù)平臺(tái)搭建
本平臺(tái)依托于成熟的開(kāi)源技術(shù),采用Spring Boot+Dubbo搭建微服務(wù)架構(gòu),基于React的Ant Design用于搭建界面,實(shí)現(xiàn)多層設(shè)計(jì),業(yè)務(wù)分割。邏輯架構(gòu)圖如圖1所示。系統(tǒng)的前端使用Ant Design,擁有開(kāi)箱即用的高質(zhì)量React組件,界面設(shè)計(jì)快捷,分層清晰,易學(xué)易用。與傳統(tǒng)的B/S單體架構(gòu)相比,基于微服務(wù)架構(gòu)的機(jī)構(gòu)學(xué)者庫(kù)平臺(tái),將系統(tǒng)分成應(yīng)用層、服務(wù)層、數(shù)據(jù)持久層、數(shù)據(jù)層四層。將具體的業(yè)務(wù)需求抽象成邏輯服務(wù),如學(xué)者信息管理、論文作者核對(duì)、論文地址核對(duì)等,這些業(yè)務(wù)服務(wù)基于Dubbo形成微服務(wù),注冊(cè)到Zookeeper中,應(yīng)用層借助Spring Boot開(kāi)發(fā)框架,將抽象出的服務(wù)以Rest API或WebService的方式提供給第三方系統(tǒng)對(duì)接,便于定制開(kāi)發(fā),使系統(tǒng)具有高可擴(kuò)展性。
2? 平臺(tái)建設(shè)內(nèi)容
2.1? 基本功能
經(jīng)過(guò)需求收集和分析,本平臺(tái)建設(shè)基本功能如下:
(1)登錄認(rèn)證體系。通過(guò)標(biāo)準(zhǔn)化接口,對(duì)接機(jī)構(gòu)統(tǒng)一身份認(rèn)證體系,實(shí)現(xiàn)校園卡號(hào)/工號(hào)登錄。
(2)用戶管理。增加、禁用用戶;設(shè)置角色,用于設(shè)置用戶模塊訪問(wèn)的權(quán)限;設(shè)置審校權(quán)限,用于審校其他用戶的工作等。
(3)參數(shù)設(shè)置。設(shè)置系統(tǒng)參數(shù)如服務(wù)站點(diǎn)、文件存放路徑、登錄失效鎖定次數(shù)、鎖定周期等。
(4)機(jī)構(gòu)學(xué)者庫(kù)主要業(yè)務(wù)模塊。
文件上傳模塊:分為導(dǎo)入文獻(xiàn)數(shù)據(jù)平臺(tái)下載的文件和導(dǎo)入已知的收錄號(hào)兩種導(dǎo)入模式,并設(shè)置收錄類型、收錄時(shí)間。文獻(xiàn)數(shù)據(jù)平臺(tái)文件導(dǎo)入后,可先進(jìn)行系統(tǒng)的自動(dòng)清洗、查重等,并完成系統(tǒng)的自動(dòng)消歧。導(dǎo)入已知收錄號(hào),可處理該批次的統(tǒng)計(jì)結(jié)果。
文件管理模塊:已上傳文件的查看、打標(biāo)簽、分配給其他館員處理、導(dǎo)出該批次的統(tǒng)計(jì)結(jié)果等。
核對(duì)模塊:分未核對(duì)列表、部分核對(duì)列表、核對(duì)完成列表、所有核對(duì)列表、核對(duì)存疑列表等子模塊,支持按序號(hào)、收錄號(hào)、作者名、導(dǎo)入文件名、學(xué)者核對(duì)等信息檢索;上次核對(duì)即為詳細(xì)的核對(duì)頁(yè)面,包括核對(duì)地址和核對(duì)作者,核對(duì)地址支持查相似地址、學(xué)者單位,用于輔助地址核對(duì);核對(duì)作者支持按作者模糊查詢,并支持按作者全稱和簡(jiǎn)稱查詢,大大地提高了人工核對(duì)效率。核對(duì)存疑列表用于存疑數(shù)據(jù)的備注、統(tǒng)計(jì)及導(dǎo)出。
日志服務(wù)模塊:按核對(duì)人、核對(duì)類型、時(shí)間區(qū)間,統(tǒng)計(jì)個(gè)人的完成數(shù)量及完成時(shí)間。
統(tǒng)計(jì)服務(wù)模塊:支持按導(dǎo)入的文件統(tǒng)計(jì)、按第一作者統(tǒng)計(jì)、按通訊作者統(tǒng)計(jì)、按所在引文數(shù)據(jù)庫(kù)等等,根據(jù)需要進(jìn)行篩選,并生成統(tǒng)計(jì)報(bào)告。支持按需導(dǎo)入,如學(xué)科CNCI和FWCI文件等。
2.2? 主要數(shù)據(jù)庫(kù)表設(shè)計(jì)
經(jīng)過(guò)對(duì)系統(tǒng)平臺(tái)功能進(jìn)行分析,系統(tǒng)配置及權(quán)限相關(guān)表:系統(tǒng)權(quán)限表sys_permission、系統(tǒng)配置項(xiàng)表sys_parm、菜單表sys_menu、菜單角色關(guān)聯(lián)表sys_menu_role、角色表sys_role、角色權(quán)限表sys_role_permission、用戶表sys_user、用戶角色關(guān)聯(lián)表sys_user_role等。
業(yè)務(wù)相關(guān)表:學(xué)者信息表szu_hrinfo、學(xué)者機(jī)構(gòu)表szu_org、機(jī)構(gòu)類型表szu_orgtype、學(xué)者別名表szu_hrinfo_alias、文獻(xiàn)信息表p_articleinfo、文獻(xiàn)詳情表p_articledetail、文獻(xiàn)作者表p_author、文獻(xiàn)批量文件p_file、文獻(xiàn)地址表p_org、文獻(xiàn)地址作者關(guān)聯(lián)表p_org_author、工作日志表p_work_log等,數(shù)據(jù)庫(kù)采用MySQL,主要業(yè)務(wù)數(shù)據(jù)庫(kù)表詳情見(jiàn)有表1、表2、表3。
2.3? 作者姓名消歧
針對(duì)成果里英文作者對(duì)應(yīng)的中文學(xué)者消歧困難的問(wèn)題,設(shè)計(jì)學(xué)者消歧算法,實(shí)現(xiàn)系統(tǒng)輔助消歧。本系統(tǒng)以Web of Science數(shù)據(jù)庫(kù)數(shù)據(jù)為深圳大學(xué)科研處及各學(xué)院提供數(shù)據(jù)分析。
作者姓名消歧分為先驗(yàn)數(shù)據(jù)處理、待消歧數(shù)據(jù)預(yù)處理、作者姓名消歧流程三個(gè)階段,具體如下:
(1)先驗(yàn)數(shù)據(jù)處理。對(duì)接本單位的人事接口,獲取學(xué)者的基本信息如:校園卡號(hào)、姓名、性別、單位、出生日期、入職日期、在崗狀態(tài)等存入本系統(tǒng)的學(xué)者信息表,并通過(guò)漢語(yǔ)拼音著者號(hào)碼表,將學(xué)者的姓名轉(zhuǎn)成對(duì)應(yīng)的拼音,生成“姓全拼+‘,+名全拼”格式及“姓全拼+‘,+名首字母”格式存入學(xué)者別名表,作為學(xué)者匹配的先驗(yàn)數(shù)據(jù),符合大部分期刊英文文獻(xiàn)命名規(guī)則。
(2)待消歧數(shù)據(jù)預(yù)處理。先根據(jù)文獻(xiàn)地址獲取屬于本機(jī)構(gòu)的作者姓名;然后進(jìn)行作者數(shù)據(jù)清洗,處理數(shù)據(jù)中“-”“.”空格等特殊情況,標(biāo)準(zhǔn)化后作者名存入文獻(xiàn)作者表。
(3)作者姓名消歧流程。消歧過(guò)程如圖2所示,系統(tǒng)消歧成功后,系統(tǒng)自動(dòng)填入消歧數(shù)據(jù),由人工核對(duì)確認(rèn)無(wú)誤后,修改核對(duì)狀態(tài),并將作者名補(bǔ)充到學(xué)者別名表;對(duì)于系統(tǒng)消歧失敗的,由人工核對(duì),利用地址相似性匹配單位,利用作者名進(jìn)行模糊查詢,匹配成功則修改核對(duì)狀態(tài),并將作者名補(bǔ)充到學(xué)者別名表;否則標(biāo)注存疑信息,導(dǎo)出與各單位核對(duì)。
3? 實(shí)施情況與效果
深圳大學(xué)圖書(shū)館機(jī)構(gòu)學(xué)者庫(kù)自2020年8月份上線以來(lái),運(yùn)行穩(wěn)定,效果圖如圖3所示,處理Web of Science數(shù)據(jù)庫(kù)收錄的發(fā)文單位為“Shenzhen Univ”和“Shen zhen Univ”的文獻(xiàn),共完成26 785篇論文的核對(duì)(截至2021-01-10),為學(xué)校及各學(xué)院提供了多份數(shù)據(jù)報(bào)告,大大提高了館員的工作效率。
本系統(tǒng)處理數(shù)據(jù)年份從2020年開(kāi)始處理,并陸續(xù)回溯舊數(shù)據(jù),如表4所示,按處理次序從左至右列出數(shù)據(jù),通過(guò)作者姓名消歧算法,隨著存量數(shù)據(jù)的增加,自動(dòng)消歧的成功率逐步提高,經(jīng)過(guò)相似單位及模糊學(xué)者查詢輔助人工核對(duì),作者消歧成功率在97.8%以上。
4? 結(jié)? 論
機(jī)構(gòu)學(xué)者庫(kù)的建設(shè)與應(yīng)用是循序漸進(jìn)、相輔相成的動(dòng)態(tài)過(guò)程,本平臺(tái)基于微服務(wù)的架構(gòu),可以滿足“邊建設(shè)、邊使用、邊完善”原則,實(shí)現(xiàn)機(jī)構(gòu)學(xué)者庫(kù)的構(gòu)建與應(yīng)用同步進(jìn)行。同時(shí)為姓名消歧設(shè)計(jì)切實(shí)可行的算法,實(shí)現(xiàn)自動(dòng)消歧,并輔助人工核對(duì),完成學(xué)者成果的歸屬,為其他圖書(shū)館和科研機(jī)構(gòu)提供可借鑒的方案。
未來(lái)在數(shù)據(jù)建設(shè)方面,支持多種成果類型的抓取、錄入,并開(kāi)放學(xué)者自主填報(bào)及認(rèn)領(lǐng)功能,協(xié)同實(shí)現(xiàn)數(shù)據(jù)的高質(zhì)量建設(shè)。支持與第三方對(duì)接,與查收查引平臺(tái)對(duì)接,完成學(xué)術(shù)數(shù)據(jù)的同步更新;與職稱申報(bào)平臺(tái)對(duì)接,完成學(xué)者的學(xué)術(shù)成果補(bǔ)充。
進(jìn)一步完善學(xué)者姓名消歧算法,在本算法的基礎(chǔ)上,利用二三級(jí)機(jī)構(gòu)、合著者、研究方向等特征,進(jìn)行深度的自動(dòng)消歧,進(jìn)一步提高自動(dòng)消歧的成功率。
參考文獻(xiàn):
[1] 閆偉東.學(xué)者知識(shí)庫(kù)建設(shè)探究——以深圳學(xué)者知識(shí)庫(kù)為例 [J].圖書(shū)館建設(shè),2018(12):57-62.
[2] 鄭昂,曾建勛.數(shù)字圖書(shū)館學(xué)者庫(kù)構(gòu)建方式研究 [J].圖書(shū)情報(bào)工作,2020,64(5):133-140.
[3] 林偉明,楊巍.基于微服務(wù)構(gòu)建的新一代圖書(shū)館服務(wù)平臺(tái) [J].圖書(shū)館雜志,2020,39(8):66-74.
[4] Spring. Spring Boot [EB/OL].[2021-3-26].https://spring.io/projects/spring-boot.
[5] gitee. Apache/Dubbo [EB/OL].[2021-3-25].https://gitee.com/apache/dubbo.
[6] Ant Design. Ant Design of React [EB/OL].[2021-53-28].https://ant.design/docs/react/introduce-cn.
作者簡(jiǎn)介:李海燕(1988—),女,漢族,湖北孝感人,助理館員,碩士,研究方向:計(jì)算機(jī)應(yīng)用、數(shù)據(jù)分析等;吳元業(yè)(1984 —),男,漢族,廣西合浦人,館員,碩士,研究方向:計(jì)算機(jī)應(yīng)用、圖書(shū)情報(bào);崔一鳴(1993—),男,漢族,廣東深圳人,助理館員,本科,研究方向:系統(tǒng)開(kāi)發(fā)及應(yīng)用。