一種自然語(yǔ)言處理系統(tǒng)化服務(wù)平臺(tái)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及語(yǔ)言處理技術(shù)領(lǐng)域,特別是涉及一種自然語(yǔ)言處理系統(tǒng)化服務(wù)平臺(tái)。
【背景技術(shù)】
[0002]非實(shí)時(shí)計(jì)算幾乎都基于MapReduce計(jì)算框架,但MapReduce并不是萬(wàn)能的。對(duì)于搜索應(yīng)用環(huán)境中的某些現(xiàn)實(shí)問(wèn)題,MapReduce并不能很好地解決。特別是Twitter推出的storm在取得巨大成功之后,各大互聯(lián)網(wǎng)公司,尤其是基于數(shù)據(jù)挖掘,搜索引擎開(kāi)發(fā)的互聯(lián)網(wǎng)公司都爭(zhēng)先進(jìn)入這一領(lǐng)域,各個(gè)公司都推出自己的流式計(jì)算系統(tǒng),其中著名的公司有Google,Twitter, Facebook 等公司。
[0003]穩(wěn)定的流式處理系統(tǒng)流式計(jì)算平臺(tái),面向大數(shù)據(jù)實(shí)時(shí)處理領(lǐng)域、實(shí)現(xiàn)拓?fù)涫降牧魇接?jì)算模型,率先支持dprc等高級(jí)應(yīng)用,并預(yù)期支持迭代式計(jì)算。系統(tǒng)采用RP自主研發(fā)的分布式消息隊(duì)列spinal系統(tǒng),實(shí)現(xiàn)數(shù)據(jù)的分布式擁塞控制與數(shù)據(jù)傳輸,以用戶(hù)需求為核心,支持多語(yǔ)言調(diào)用,多實(shí)例并發(fā),并作為獨(dú)立的計(jì)算單元,滿(mǎn)足多模式的運(yùn)維層系統(tǒng)調(diào)度。從系統(tǒng)資源利用率的角度出發(fā),其在滿(mǎn)足系統(tǒng)運(yùn)行的前提下,提升資源利用率,降低系統(tǒng)成本。對(duì)于海量數(shù)據(jù)運(yùn)算,可完美結(jié)合公司非穩(wěn)定的集群系統(tǒng),實(shí)現(xiàn)量級(jí)部署與調(diào)度。該系統(tǒng)大膽進(jìn)行創(chuàng)新工作,與公司nip等部門(mén)進(jìn)行基礎(chǔ)架構(gòu)合作,推出nlpc平臺(tái),支撐公司內(nèi)基礎(chǔ)算法的平臺(tái)化工作。
[0004]現(xiàn)有調(diào)用NLP的方法主要是本身已經(jīng)實(shí)現(xiàn)好的動(dòng)態(tài)鏈接庫(kù),或者函數(shù)庫(kù)之類(lèi)的,可以進(jìn)行調(diào)用,但是事實(shí)上這種做法存在如下缺點(diǎn),一方面算法調(diào)用者需要添加和維護(hù)這個(gè)算法本身的文件,使用門(mén)檻比較高;另一方面算法升級(jí)比較麻煩。
[0005]而一個(gè)平臺(tái)化的自然語(yǔ)言平臺(tái),算法的開(kāi)發(fā)者本身只需要開(kāi)發(fā)一個(gè)版本的動(dòng)態(tài)鏈接庫(kù),不需要管算法調(diào)用實(shí)現(xiàn),算法調(diào)用者只需要發(fā)送算法的名稱(chēng)和參數(shù),則可以在低延時(shí)的情況下得到正確的結(jié)果。在擴(kuò)展性和穩(wěn)定性方面有更好的表現(xiàn)。采用插件式的設(shè)計(jì)方案,增強(qiáng)系統(tǒng)的可擴(kuò)展性。經(jīng)調(diào)研,目前適用于大規(guī)模集群,支持自然語(yǔ)言平臺(tái)化的軟件還沒(méi)有。然而,paas (Platform-as-a-Service,平臺(tái)即服務(wù))已經(jīng)是軟件發(fā)展的必然趨勢(shì),因此,自然語(yǔ)言的平臺(tái)化作為一個(gè)基礎(chǔ)平臺(tái)的服務(wù)已是必然趨勢(shì)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明主要解決的技術(shù)問(wèn)題是提供一種自然語(yǔ)言處理系統(tǒng)化服務(wù)平臺(tái),能夠解決現(xiàn)有自然語(yǔ)言處理存在的上述問(wèn)題。
[0007]為解決上述技術(shù)問(wèn)題,本發(fā)明采用的一個(gè)技術(shù)方案是:提供一種自然語(yǔ)言處理系統(tǒng)化服務(wù)平臺(tái),包括:
接入平臺(tái)后臺(tái)的穩(wěn)定的流式處理系統(tǒng)、非穩(wěn)定的機(jī)器集群系統(tǒng)和分布式多副本下載系統(tǒng);
供用戶(hù)訪(fǎng)問(wèn)的C-API接口、Python接口和http服務(wù)端接口 ;
多語(yǔ)言服務(wù)框架,用于在本地客戶(hù)端提供統(tǒng)一的接口,將遠(yuǎn)程訪(fǎng)問(wèn)和本地訪(fǎng)問(wèn)切換; 分布式遠(yuǎn)程調(diào)用服務(wù)器,用于邏輯服務(wù)并通過(guò)異步回調(diào)將結(jié)果返回給客戶(hù)端;
所述流式處理系統(tǒng)采用消息隊(duì)列的設(shè)計(jì)方式,所述消息隊(duì)列分為隊(duì)頭和隊(duì)尾兩個(gè)組件,所述隊(duì)頭組件為數(shù)據(jù)的接受端,所述隊(duì)尾組件為數(shù)據(jù)的發(fā)送端,算子從隊(duì)尾組件中接收數(shù)據(jù)進(jìn)行并行并消費(fèi),實(shí)現(xiàn)數(shù)據(jù)的傳遞。
[0008]在本發(fā)明一個(gè)較佳實(shí)施例中,所述平臺(tái)還包括一個(gè)數(shù)據(jù)轉(zhuǎn)存接口,用于將收集到的數(shù)據(jù)傳輸?shù)狡渌麘?yīng)用程序進(jìn)行再次處理,或是交給另一個(gè)程序作為輸入。
[0009]在本發(fā)明一個(gè)較佳實(shí)施例中,所述其他應(yīng)用程序包括monoDB或reddies。
[0010]在本發(fā)明一個(gè)較佳實(shí)施例中,所述多語(yǔ)言服務(wù)框架通過(guò)開(kāi)源框架thrift和protobuf兩個(gè)軟件進(jìn)行代碼編輯,并在服務(wù)器端對(duì)多種語(yǔ)言統(tǒng)一處理。
[0011]在本發(fā)明一個(gè)較佳實(shí)施例中,所述流式處理系統(tǒng)包括消息隊(duì)列的負(fù)載均衡和從消息隊(duì)列消費(fèi)消息的算子的負(fù)載均衡。
[0012]在本發(fā)明一個(gè)較佳實(shí)施例中,所述平臺(tái)的通信方式為異步通信,發(fā)送消息的線(xiàn)程和消息處理的線(xiàn)程同時(shí)工作。
[0013]在本發(fā)明一個(gè)較佳實(shí)施例中,所述發(fā)送消息的線(xiàn)程和消息處理的線(xiàn)程的總數(shù)是core線(xiàn)程數(shù)的2倍。
[0014]自然語(yǔ)言處理系統(tǒng)化服務(wù)平臺(tái)將自然語(yǔ)言處理中的多個(gè)算法統(tǒng)一到算法平臺(tái)上來(lái),用戶(hù)只需要方法名和待處理的數(shù)據(jù),就可以方便的獲取結(jié)果。針對(duì)目前流式系統(tǒng)都是靜態(tài)固定路由,本發(fā)明的流式系統(tǒng)采用動(dòng)態(tài)路由的方式,根據(jù)算子的DAG路由表動(dòng)態(tài)地選擇路由表信息。數(shù)據(jù)收集常用的單服務(wù)器架構(gòu),采用多服務(wù)器自動(dòng)加入的方式來(lái)增強(qiáng)系統(tǒng)的負(fù)載能力,并消除單節(jié)點(diǎn)故障,讓系統(tǒng)做到負(fù)載均衡。
[0015]本發(fā)明主要是提供各種自然語(yǔ)言處理的算法,可以直接在平臺(tái)上使用,可以開(kāi)發(fā)算子專(zhuān)注于算子本身的開(kāi)發(fā),不必關(guān)心算子的部署,而這些對(duì)于算子的使用方也是透明的,可以直接進(jìn)行算子的使用。
[0016]本發(fā)明對(duì)大規(guī)模集群自然語(yǔ)言平臺(tái)化的問(wèn)題,如算子、算法的添加,集群在線(xiàn)和離線(xiàn)節(jié)點(diǎn)的應(yīng)用進(jìn)行研究并設(shè)計(jì)相應(yīng)的解決方案,最終實(shí)現(xiàn)可擴(kuò)展性強(qiáng),可靠性高,部署靈活的自然語(yǔ)言平臺(tái)化的系統(tǒng)。該系統(tǒng)將用于公司內(nèi)部的基礎(chǔ)平臺(tái)架構(gòu),對(duì)于NLP部門(mén)以及向所有需要用到自然語(yǔ)言處理算法的同學(xué)提供服務(wù)。其可定制化,高可擴(kuò)展性和高可靠性的自然語(yǔ)言算法服務(wù),作為集群或云計(jì)算平臺(tái)管理和監(jiān)控的一部分,將大大提高集群的可管理性。
[0017]本發(fā)明的有益效果是:本發(fā)明一種自然語(yǔ)言處理系統(tǒng)化服務(wù)平臺(tái),利用了計(jì)算機(jī)多核并行計(jì)算的優(yōu)勢(shì),充分均衡的利用高性能計(jì)算機(jī)的計(jì)算資源,構(gòu)架出高效高可靠性的自然語(yǔ)言平臺(tái),本發(fā)明對(duì)于特定情況下實(shí)現(xiàn)HTTP的接口,方便跨平臺(tái)的調(diào)用,對(duì)于常用的接口數(shù)據(jù)C++語(yǔ)言和python的接口,也直接提供方便在接口方面的調(diào)用,支持多平臺(tái)的調(diào)用,具有很好的工程應(yīng)用價(jià)值。
【附圖說(shuō)明】
[0018]圖1是本發(fā)明一種自然語(yǔ)言處理系統(tǒng)化服務(wù)平臺(tái)的架構(gòu)示意圖;
圖2是本發(fā)明一種自然語(yǔ)言處理系統(tǒng)化服務(wù)平臺(tái)的整個(gè)系統(tǒng)示意圖;
圖3是本發(fā)明的穩(wěn)定流式處理系統(tǒng)的設(shè)計(jì)流程圖; 圖4是所示日志收集體系的架構(gòu)示意圖。
【具體實(shí)施方式】
[0019]下面結(jié)合附圖對(duì)本發(fā)明的較佳實(shí)施例進(jìn)行詳細(xì)闡述,以使本發(fā)明的優(yōu)點(diǎn)和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對(duì)本發(fā)明的保護(hù)范圍做出更為清楚明確的界定。
[0020]請(qǐng)參閱附圖,本發(fā)明實(shí)施例包括:
本發(fā)明揭示了一種自然語(yǔ)言處理系統(tǒng)化服務(wù)平臺(tái),包括:接入平臺(tái)后臺(tái)的穩(wěn)定的流式處理系統(tǒng)、非穩(wěn)定的機(jī)器集群系統(tǒng)和分布式多副本下載系統(tǒng);
供用戶(hù)訪(fǎng)問(wèn)的C-API接口、Python接口和http服務(wù)端接口 ;
多語(yǔ)言服務(wù)框架,用于在本地客戶(hù)端提供統(tǒng)一的接口,將遠(yuǎn)程訪(fǎng)問(wèn)和本地訪(fǎng)問(wèn)切換;
分布式遠(yuǎn)程調(diào)用服務(wù)器,用于邏輯服務(wù)并通過(guò)異步回調(diào)將結(jié)果返回給客戶(hù)端;
一個(gè)數(shù)據(jù)轉(zhuǎn)存接口,用于將收集到的數(shù)據(jù)傳輸?shù)狡渌麘?yīng)用程序,如monoDB或reddies進(jìn)行再次處理,或是交給另一個(gè)程序作為輸入。如圖1和2所示,圖2中,c++ client:c++客戶(hù)端,其中c++是一種靜態(tài)數(shù)據(jù)類(lèi)型檢查的、支持多重編程范式的通用程序設(shè)計(jì)語(yǔ)言;python client:python客戶(hù)端,其中,python是一種面向?qū)ο?、解釋型?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言;other client:其他語(yǔ)言的客戶(hù)端(除了 c++和python之外的);Communat1nFramefork:通信框架,包括傳輸過(guò)程中得通訊協(xié)議,這里包括遠(yuǎn)程通訊和本地加載兩部分;Http Server:超文本傳輸協(xié)議服務(wù)器,負(fù)責(zé)解析client請(qǐng)求成為c++的請(qǐng)求后臺(tái)的服務(wù);Local client:加載本地服務(wù)的客戶(hù)端;RPC (Remote Procedure Call ProtocoDclient:遠(yuǎn)程過(guò)程調(diào)用協(xié)議客戶(hù)端,負(fù)責(zé)遠(yuǎn)程通訊協(xié)議;Local arch:本地計(jì)算架構(gòu),包括收到請(qǐng)求后服務(wù)的初始化、下載以及服務(wù)計(jì)算的工作;Qw(queue workers)arch:消息隊(duì)列、消費(fèi)者的流逝計(jì)算架構(gòu);0nline arch:在線(xiàn)穩(wěn)定實(shí)時(shí)處理消息的在線(xiàn)計(jì)算架構(gòu);Large scale arch:大規(guī)模離線(xiàn)計(jì)算架構(gòu),專(zhuān)門(mén)針對(duì)于離線(xiàn)處理超大吞吐量。
[0021]所述穩(wěn)定的流式處理系統(tǒng),主要用于向穩(wěn)定機(jī)器發(fā)送各種請(qǐng)求,獲取穩(wěn)定的自然語(yǔ)言處理的低延遲、高可用性的服務(wù);該系統(tǒng)采用消息隊(duì)列的設(shè)計(jì)方式,并通過(guò)消息隊(duì)列負(fù)責(zé)接收和保存未被消費(fèi)的消息。所述消息隊(duì)列分為隊(duì)頭linker和隊(duì)尾subber兩個(gè)組件,其中,linker為數(shù)據(jù)的接受端,subber為數(shù)據(jù)的發(fā)送端,算子從隊(duì)尾組件中接收數(shù)據(jù)進(jìn)行并行并消費(fèi),實(shí)現(xiàn)數(shù)據(jù)的傳遞。由于每個(gè)算子可能會(huì)有多個(gè)實(shí)例分布式的情況,這樣每一個(gè)實(shí)例算子都應(yīng)該從對(duì)應(yīng)某隊(duì)尾用來(lái)取數(shù)據(jù)。如果這些算子都要從一個(gè)隊(duì)列取數(shù)據(jù),勢(shì)必導(dǎo)致并行度和處理速度不夠高,因此,為了提高處理速度,應(yīng)分布式部署多個(gè)算子,即在設(shè)計(jì)隊(duì)列的時(shí)候,將多個(gè)隊(duì)尾打散,使每個(gè)算子從某一個(gè)隊(duì)尾中取出數(shù)據(jù)。
[0022]Operator就是算子開(kāi)發(fā)者開(kāi)發(fā)的在單機(jī)上跑的算子,實(shí)際上就是自然語(yǔ)言處理的算法,之所以會(huì)出現(xiàn)這樣的流式系統(tǒng),是存在某些算法,比如詞性標(biāo)注必須建立在分詞之后的基礎(chǔ)之上,然后才可以進(jìn)行的一種算法,所以在計(jì)算的整體上是,首先進(jìn)行分詞處理,然后進(jìn)行詞性標(biāo)注本身的處理,這兩個(gè)整體的處理就是詞性標(biāo)注算法。
[0023]如圖3是流式系統(tǒng)對(duì)整個(gè)軟件的使用,本質(zhì)上就是一種可擴(kuò)展的網(wǎng)絡(luò)模型。每個(gè)operator就是一個(gè)具體的自然語(yǔ)言處理算子,比如分詞和詞性標(biāo)注算子。每個(gè)算子都有部署的多個(gè)實(shí)例,每個(gè)算子的運(yùn)行過(guò)程都是從上游的消息隊(duì)列中取出數(shù)據(jù),然后處理數(shù)據(jù),檢查數(shù)據(jù)是否結(jié)束,如果沒(méi)有結(jié)束,將數(shù)據(jù)傳輸?shù)綄?duì)應(yīng)算子的消息隊(duì)列中,如果算子結(jié)束了,那么就將算子的運(yùn)行結(jié)果直接返回給客戶(hù)端。在圖3中,各部件的中文名稱(chēng)及解釋?zhuān)珻lient:客戶(hù)端;Zookeeper:簡(jiǎn)稱(chēng)ZK,是hadoop的一個(gè)組件,是一個(gè)分布式的開(kāi)源的分布式應(yīng)用程序協(xié)調(diào)服Drpc server:分布式遠(yuǎn)程過(guò)程調(diào)用服務(wù)器;Queuel:消息隊(duì)列1,是分布式的;Workerl:消息隊(duì)列I的消費(fèi)者,也是分布式的;Queue2:消息隊(duì)列2,是分布式的;Worker3:消息隊(duì)列3的消費(fèi)者,也是分布式的。
[0024]在分布式處理的過(guò)程中,operator其實(shí)是給算子開(kāi)發(fā)者開(kāi)發(fā)的動(dòng)態(tài)鏈接庫(kù)包裝的一個(gè)殼,這個(gè)殼的操作很簡(jiǎn)單,在這里可以輸出一些必要的統(tǒng)計(jì)信息,調(diào)用算子開(kāi)發(fā)者開(kāi)發(fā)的動(dòng)態(tài)鏈接庫(kù)。Operator是從上游的消息隊(duì)列中取出數(shù)據(jù),并且插入到下游的消息隊(duì)列中去,整個(gè)過(guò)程中,消息隊(duì)列保證數(shù)據(jù)的可靠性,完整性和高效傳輸。
[0025]多個(gè)operator算子的實(shí)例,就是從