分詞方法和移動終端的制作方法
【專利摘要】本發(fā)明公開了一種分詞方法和移動終端,其中,所述分詞方法包括:移動終端本地的分詞服務(wù)器端接收移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求;根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,并得到分詞結(jié)果。因此,本發(fā)明能夠在移動終端上使用分詞技術(shù),擴大了分詞技術(shù)的應(yīng)用領(lǐng)域。
【專利說明】分詞方法和移動終端
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù),尤其涉及一種分詞方法和移動終端。
【背景技術(shù)】
[0002]隨著計算機技術(shù)的不斷發(fā)展,分詞技術(shù)已經(jīng)廣泛應(yīng)用于搜索引擎,機器翻譯,語音合成,自動摘要等領(lǐng)域。其中,分詞(Chinese Word Segmentation)技術(shù)是指將一句或者一段中文文字切分成一個一個中文詞語的技術(shù)。同時,隨著以智能手機和平板電腦為代表的移動終端的迅速普及,在移動終端上使用分詞技術(shù)的需求也在不斷增加,比如,在移動終端上劃詞搜索,以及語音交互等。
[0003]現(xiàn)有技術(shù)中的分詞開源庫,比如,IKAnalyzer是一個開源的、基于JAVA語言開發(fā)的輕量級的分詞工具包,該分詞開源庫的詞庫文件比較大,運行時所占用的內(nèi)存比較多,主要應(yīng)用于個人電腦或服務(wù)器。
[0004]但是,上述的分詞開源庫的詞庫文件太大,運行時所占用的內(nèi)存太多,不能直接應(yīng)用到移動終端上,同時,現(xiàn)有的移動終端的操作系統(tǒng)還不支持移動終端上的分詞的開發(fā)接□。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明實施例的目的在于提出一種分詞方法和移動終端,使得能夠在移動終端上使用分詞技術(shù)。
[0006]第一方面,本發(fā)明實施例提供了一種分詞方法,所述方法包括:
[0007]移動終端本地的分詞服務(wù)器端接收所述移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求;
[0008]所述分詞服務(wù)器端根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,并得到分詞結(jié)果。
[0009]第二方面,本發(fā)明實施例提供了一種移動終端,所述移動終端包括分詞客戶端和分詞服務(wù)器端:
[0010]所述分詞客戶端包括:
[0011]收集單元,用于收集分詞請求,以及將所述分詞請求傳輸給發(fā)送單元;
[0012]發(fā)送單元,用于將收集單元收集到的分詞請求發(fā)送至分詞服務(wù)器端;
[0013]所述分詞服務(wù)器端包括:
[0014]接收單元,用于接收所述分詞客戶端發(fā)送的攜帶有目標(biāo)文件的所述分詞請求,以及將所述分詞請求傳輸給分詞單元;
[0015]分詞單元,用于從所述接收單元接收所述分詞請求,根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,并得到分詞結(jié)果,以及將所述分詞結(jié)果傳輸給發(fā)送單元;
[0016]發(fā)送單元,用于從分詞單元接收所述分詞結(jié)果,將所述分詞結(jié)果發(fā)送給所述分詞客戶端,以使所述分詞客戶端根據(jù)所述分詞結(jié)果識別所述目標(biāo)文件。
[0017]本發(fā)明實施例通過移動終端本地的分詞服務(wù)器端接收移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求,根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,并得到分詞結(jié)果,實現(xiàn)了在移動終端上進行分詞,擴大了分詞技術(shù)的應(yīng)用領(lǐng)域。
【專利附圖】
【附圖說明】
[0018]圖1是本發(fā)明第一實施例的分詞方法的流程圖;
[0019]圖2是本發(fā)明第二實施例的分詞方法的流程圖;
[0020]圖3是本發(fā)明第二實施例中適用的分詞請求的示意圖;
[0021]圖4是本發(fā)明第二實施例中適用的分詞請求的示意圖;
[0022]圖5是本發(fā)明第二實施例中適用的分詞請求的示意圖;
[0023]圖6是本發(fā)明第三實施例的分詞方法的流程圖;
[0024]圖7是本發(fā)明第四實施例的移動終端的示意圖;
[0025]圖8是本發(fā)明第四實施例的分詞客戶端的示意圖;
[0026]圖9是本發(fā)明第四實施例的分詞服務(wù)器端的示意圖。
【具體實施方式】
[0027]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖對本發(fā)明具體實施例作進一步的詳細描述??梢岳斫獾氖?,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。
[0028]圖1是本發(fā)明第一實施例的分詞方法的流程圖。該分詞方法應(yīng)用于移動終端。其中,移動終端包括智能手機、以及平板電腦等。移動終端內(nèi)可配置分詞服務(wù)器端和至少一個分詞客戶端,分詞服務(wù)器端專用于進行分詞處理,也即將分詞處理功能封裝到一個獨立的service進程中,主要原因是保證內(nèi)存中只有一份詞庫文件的拷貝,從而將運行時刻的內(nèi)存使用量降到最低。分詞客戶端主要用于提出分詞請求并獲取分詞結(jié)果,可以是任何有分詞處理需求的應(yīng)用軟件客戶端。本實施例的方案由分詞服務(wù)器端來執(zhí)行,如圖1所示,所述方法包括:
[0029]步驟110、移動終端本地的分詞服務(wù)器端接收所述移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求。
[0030]具體地,移動終端上的分詞服務(wù)器端可以接收本身的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求。其中,所述分詞請求包括下列至少一種:直接調(diào)用的分詞請求、通過C或C++接口調(diào)用的分詞請求、以及通過JAVA接口調(diào)用的分詞請求。其中,C或C++、以及JAVA皆是計算機領(lǐng)域的程序設(shè)計語言。
[0031]步驟120、分詞服務(wù)器端根據(jù)與移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對接收到目標(biāo)文件進行分詞計算,并得到分詞結(jié)果。
[0032]具體地,分詞服務(wù)器端接收分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求,會根據(jù)其加載的詞庫、與加載的詞庫對應(yīng)的算法將目標(biāo)文件,比如,一段中文文字,切分為一個一個的中文詞,從而得到分詞結(jié)果。
[0033]在本實施例的一個優(yōu)選實施方式中,在步驟110中分詞服務(wù)器端接收分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求,還包括:移動終端中的分詞服務(wù)器端,在運行時啟動分詞服務(wù)進程,以監(jiān)聽接收移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求。
[0034]具體地,移動終端啟動后,分詞服務(wù)器端接收分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求之前,分詞服務(wù)器端啟動分詞服務(wù)進程,暫時不加載與所述移動終端相對應(yīng)的詞庫,從而減少占用移動終端的內(nèi)存空間。該分詞服務(wù)進程是一個移動終端開機啟動的獨立進程,當(dāng)分詞服務(wù)進程處于運行時態(tài)時,可以接收分詞客戶端發(fā)送的分詞請求,并進行分詞計算。另外,因為分詞服務(wù)進程所占的內(nèi)存空間很小,而與所述移動終端相對應(yīng)的詞庫所占的內(nèi)存空間就要很大,所以啟用分詞服務(wù)進程后,并不立即加載與所述移動終端相對應(yīng)的詞庫,而只有接收到分詞客戶端的分詞請求后再加載所述詞庫。
[0035]在本實施例的另一個優(yōu)選實施方式中,步驟110中移動終端中的分詞服務(wù)器端接收所述移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求,具體包括:
[0036]移動終端中的分詞服務(wù)器端接收所述移動終端本地的分詞客戶端直接調(diào)用分詞服務(wù)器端的分詞請求;或者,所述移動終端中的分詞服務(wù)器端接收所述移動終端本地的分詞客戶端通過C或C++接口調(diào)用分詞服務(wù)器端的分詞請求;或者,所述移動終端中的分詞服務(wù)器端接收所述移動終端本地的分詞客戶端通過JAVA接口調(diào)用分詞服務(wù)器端的分詞請求。
[0037]在本實施例的再一個優(yōu)選實施方式中,步驟120中分詞服務(wù)器端根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算之前,還包括:分詞服務(wù)器端判斷是否已加載所述與所述移動終端相對應(yīng)的詞庫,若否,則將所述移動終端相對應(yīng)的詞庫加載到本地內(nèi)存中。
[0038]具體地,分詞服務(wù)器端判斷是否已經(jīng)加載與所述移動終端相對應(yīng)的詞庫的過程。當(dāng)沒有加載與所述移動終端相對應(yīng)的詞庫時,則加載所述詞庫,并根據(jù)所述詞庫、以及所述詞庫對應(yīng)的分詞算法進行分詞計算,從而得到分詞結(jié)果;當(dāng)已經(jīng)加載所述與所述移動終端相對應(yīng)的詞庫時,則根據(jù)所述詞庫、以及所述詞庫對應(yīng)的分詞算法進行分詞計算,從而得到分詞結(jié)果。
[0039]上述判斷過程是因為與移動終端相對應(yīng)的詞庫并不永久處于加載狀態(tài),當(dāng)在預(yù)設(shè)的時間內(nèi)未接收到所述分詞客戶端發(fā)送的分詞請求時,則卸載所述詞庫。換言之,移動終端為了將運行時刻的內(nèi)存使用量降到最低,會定期卸載已經(jīng)加載的詞庫,從而騰空其占用的內(nèi)存。
[0040]在本實施例的再一個優(yōu)選實施方式中,所述分詞方法還包括:服務(wù)器根據(jù)所述移動終端的硬件配置選取獲得所述移動終端相對應(yīng)的詞庫;所述服務(wù)器將所述詞庫推送至對應(yīng)的移動終端進行存儲。本實施方式進一步利用了網(wǎng)絡(luò)側(cè)服務(wù)器的外部資源來向移動終端提供詞庫。其中,選取詞庫的方法可以有很多種,在本發(fā)明實施例中只詳細說明其中一種方法的具體過程,其他優(yōu)選方法在這里不再詳細說明。
[0041]下面具體說明服務(wù)器根據(jù)移動終端的硬件配置選取詞庫的過程。
[0042](I)服務(wù)器對總詞庫進行劃分,得到多個不同類型的詞庫。
[0043]因為現(xiàn)有技術(shù)中使用的分詞詞庫一般占用內(nèi)存都很大,比如,200MB,因此無法將如此大的詞庫文件移植到移動終端上,比如,手機,所以需要對現(xiàn)有的詞庫進行優(yōu)化。其優(yōu)化過程可以為:
[0044]將中文詞庫分為一般詞語庫和專屬名詞庫兩大類。一般詞語庫就是我們?nèi)粘S玫降某S脻h語詞語,其大小比較小,還可以壓縮到1-2MB ;專屬名詞又可以進行分級細分,比如科技,歷史,人物,藝術(shù)等,比如藝術(shù)又可以進一步細分為電影,歌曲,文學(xué)等。對于中文分詞的具體應(yīng)用場景,挑選優(yōu)先級高的不同類型的詞庫,組成專屬名詞詞庫,在這里定義為子詞庫。
[0045]另外,由于不同移動終端的硬件配置不一樣,不同移動終端對詞庫文件有不同的需求。有一些較低端的移動終端的只讀內(nèi)存(Read-Only Memory,ROM)較小,對詞庫文件有較為嚴(yán)格的限制,需要從專屬名詞詞庫中選取最能滿足用戶需求且總大小不超過一定限制的若干個詞庫。本發(fā)明實施例中提供的選取方法如下:假如移動終端所需詞庫的總大小不能超過M,有w(l),w⑵…w(k)共k個詞庫,每個詞庫的文件大小是m(I),m⑵…m(k)。
[0046]2)計算各個詞庫的初始價值。如何詞庫在分詞中被命中的次數(shù)越多,其越有價值。假設(shè)詞庫w(i)在傳統(tǒng)網(wǎng)頁搜索分詞中被命中h次,總共進行了 H次的網(wǎng)頁搜索分詞,那么該詞庫w(i)的初始價值init_value(i)的計算公式如公式(I)所示。
[0047]init_value (i) = (h/H) X 100公式(I)
[0048]其中,init_value (i)表示詞庫w(i)在100次搜索分詞中的平均命中次數(shù)。
[0049]3)根據(jù)各個詞庫的初始值和分詞記錄計算詞庫的價值。其中,分詞記錄是通過收集所有分詞客戶端在移動終端上的分詞記錄,從而計算詞庫的價值。假設(shè)所有分詞客戶端在移動終端上進行了 N次分詞,其中詞庫w(i)命中了 n(i)次,則詞庫w(i)的價值v(i)的計算公式如公式(2)所示。
[0050]V (i) =100X [n (i) + ^ X init_value (i) ]/ (N+ ^ X 100)公式(2)``[0051]其中,0為調(diào)節(jié)參數(shù),該值越大,表明初始值的影響作用越大。當(dāng)分詞客戶端在移動終端上進行的分詞次數(shù)越多,則該P值越接近在移動終端的真實場景下該詞庫《(i)被分詞命中的統(tǒng)計數(shù)字。
[0052]4)根據(jù)各個詞庫的價值、以及所述詞庫的文件大小、以及所述移動終端的內(nèi)存大小選取與移動終端相對應(yīng)的詞庫。其中,所選取出的詞庫占用內(nèi)存量小于移動終端的總內(nèi)存量,優(yōu)先選擇詞庫的價值大,而詞庫的文件小的詞庫。另外,還可以采用貪心算法選取詞庫,即每次選取[v(i)/m(i)]值最大的詞庫,若[v(i)/m(i)]的值相近,優(yōu)先選擇m(i)小的詞庫,直到達到移動終端所需詞庫的總大小M為止。
[0053]在本實施例的再一個優(yōu)選實施方式中,加載與移動終端相對應(yīng)的詞庫之后,還包括:分詞服務(wù)器端判斷出在預(yù)設(shè)的時間內(nèi)未接收到一個或多個分詞客戶端發(fā)送的分詞請求時,則卸載所述詞庫。換言之,分詞服務(wù)器端為了將運行時刻的內(nèi)存使用量降到最低,會定期卸載已經(jīng)加載的詞庫,從而騰空其占用的內(nèi)存。
[0054]本發(fā)明實施例提供的移動終端上的分詞方法在Android平臺上的實驗結(jié)果具體為:所有可執(zhí)行動態(tài)庫詞庫文件的大小為7MB ;運行時刻占用的物理內(nèi)存為8MB ;對中文分詞的請求的響應(yīng)時間遠低于Ims;對于基礎(chǔ)分詞的正確率大于80%,專屬名詞的分詞正確率大于87%。
[0055]因此,本發(fā)明實施例提供的分詞方法,移動終端本地的分詞服務(wù)器端接收分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求,根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,并得到分詞結(jié)果,實現(xiàn)了在移動終端上進行分詞,擴大了分詞技術(shù)的應(yīng)用領(lǐng)域。
[0056]圖2是本發(fā)明第二實施例的分詞方法的流程圖。該分詞方法應(yīng)用于移動終端。其中,移動終端包括智能手機、以及平板電腦等。如圖2所示,所述方法包括:
[0057]步驟210、移動終端本地的分詞服務(wù)器端接收移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求。
[0058]具體地,移動終端本地的分詞客戶端會通過不同的接口向移動終端本地的分詞服務(wù)器端發(fā)送攜帶有目標(biāo)文件的分詞請求。
[0059]步驟220、分詞服務(wù)器端判斷是否已加載所述與所述移動終端相對應(yīng)的詞庫,若是,則執(zhí)行步驟240 ;若否,則執(zhí)行步驟230。
[0060]步驟230、分詞服務(wù)器端將移動終端相對應(yīng)的詞庫加載到本地內(nèi)存中。
[0061]步驟240、分詞服務(wù)器端根據(jù)與移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對接收到目標(biāo)文件進行分詞計算,并得到分詞結(jié)果。
[0062]具體地,分詞服務(wù)器端接收分詞服務(wù)器端發(fā)送的分詞結(jié)果,該分詞結(jié)果是分詞服務(wù)器端根據(jù)其加載的詞庫、與加載的詞庫對應(yīng)的算法將目標(biāo)文件,比如,一段中文文字,切分為一個一個的中文詞,從而得到的分詞結(jié)果。
[0063]步驟250、分詞服務(wù)器端將分詞計算得到的分詞結(jié)果發(fā)送給分詞客戶端,以使所述分詞客戶端根據(jù)所述分詞結(jié)果識別其需要識別的目標(biāo)文件。
[0064]步驟260、分詞服務(wù)器端判斷出在預(yù)設(shè)的時間內(nèi)未接收到分詞客戶端發(fā)送的分詞請求時,則卸載所述詞庫。
[0065]具體地,分詞服務(wù)器端為了將運行時刻的內(nèi)存使用量降到最低,會定期卸載已經(jīng)加載的詞庫,從而騰空其占用的內(nèi)存。
[0066]在本實施例的一個優(yōu)選實施方式中,移動終端的本地分詞客戶端會通過不同的接口向移動終端本地的分詞服務(wù)器端發(fā)送攜帶有目標(biāo)文件的分詞請求,因此,分詞服務(wù)器端可以接收到分詞客戶端通過不同的接口發(fā)送的一個或多個分詞請求。比如,通過直接調(diào)用的方式向所述方法分詞服務(wù)器端發(fā)送分詞請求、通過C或C++接口調(diào)用的方式向所述分詞服務(wù)器端發(fā)送分詞請求和通過JAVA接口調(diào)用的方式向所述分詞服務(wù)器端發(fā)送分詞請求中至少一種。
[0067]下面詳細說明分詞客戶端采用不同接口向分詞服務(wù)器端發(fā)送分詞請求并使得分詞服務(wù)器端進行分詞服務(wù)的實現(xiàn)過程,其中,在分詞客戶端中有一個分詞客戶端庫,該分詞客戶端庫是分詞客戶端提供給用戶的一個動態(tài)庫,該庫封裝了分詞客戶端調(diào)用服務(wù)端的功能。該分詞客戶端庫完成的工作是對分詞請求數(shù)據(jù)的打包封裝,并且跨進程將消息傳送給分詞服務(wù)器端的分詞服務(wù)進程,分詞客戶端需要考慮線程安全的問題。
[0068](I)通過直接調(diào)用的方式向所述分詞服務(wù)器端發(fā)送分詞請求。這種方式最直接,分詞客戶端的應(yīng)用程序可以直接調(diào)用分詞客戶端庫,從而啟動分詞服務(wù)器端的分詞服務(wù)。如圖3所示,分詞客戶端中的應(yīng)用程序31直接調(diào)用分詞客戶端庫32,該分詞客戶端庫32對應(yīng)用程序31產(chǎn)生的分詞請求數(shù)據(jù)進行打包封裝,并且跨進程將消息傳送給分詞服務(wù)器端。當(dāng)分詞服務(wù)器端的分詞服務(wù)進程接收到分詞客戶端發(fā)送的分詞請求后,判斷與移動終端相對應(yīng)的詞庫是否已經(jīng)加載,若與移動終端相對應(yīng)的詞庫沒有加載,則加載該詞庫,若與移動終端相對應(yīng)的詞庫已經(jīng)加載,則不用重復(fù)加載;根據(jù)與移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對接收到目標(biāo)文件進行分詞計算,并得到分詞結(jié)果以及將所述分詞結(jié)果返回分詞客戶端。
[0069](2)通過C或C++接口調(diào)用的方式向分詞服務(wù)器端發(fā)送分詞請求。這種方式應(yīng)用于網(wǎng)頁視圖(Webview)的場景中,分詞客戶端的應(yīng)用程序通過C或C++接口調(diào)用分詞客戶端庫,從而啟動移動終端的分詞服務(wù)。其中,Webview是一種用來顯示網(wǎng)頁頁面的視圖,并對網(wǎng)頁上的中文進行分詞,從而方便用戶進行劃詞搜索。如圖4所示,分詞客戶端中的應(yīng)用程序41通過C或C++接口 42調(diào)用分詞客戶端庫43,該分詞客戶端庫43對應(yīng)用程序41產(chǎn)生的分詞請求數(shù)據(jù)進行打包封裝,并且跨進程將消息傳送給分詞服務(wù)器端。當(dāng)分詞服務(wù)器端的分詞服務(wù)進程接收到分詞客戶端發(fā)送的分詞請求后,判斷與移動終端相對應(yīng)的詞庫是否已經(jīng)加載,若與移動終端相對應(yīng)的詞庫沒有加載,則加載該詞庫,若與移動終端相對應(yīng)的詞庫已經(jīng)加載,則不用重復(fù)加載;根據(jù)與移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對接收到目標(biāo)文件進行分詞計算,并得到分詞結(jié)果以及將所述分詞結(jié)果返回分詞客戶端。
[0070](3)通過JAVA接口調(diào)用的方式向所述分詞服務(wù)器端發(fā)送分詞請求。這種方式應(yīng)用于文本視圖(TextView)的場景中,在這種方式中,移動終端不僅提供了分詞客戶端庫,還在分詞客戶端庫的上層,提供了分詞JNI庫。該JNI庫的作用是用來提供JAVA層向C++層的調(diào)用。另外,為了方便JAVA層的調(diào)用,還提供了一個JAVA的幫助類,使JAVA層的使用者能夠直接使用JAVA的函數(shù)接口。其具體調(diào)用過程為:先調(diào)用JAVA幫助類的JAVA層接口,再JAVA幫助類會調(diào)用分詞JNI庫提供的C接口,最后通過C接口調(diào)用分詞客戶端庫,從而啟動移動終端的分詞服務(wù)。其中,TextView是一種用來顯示文本信息的視圖,也有劃詞搜索的需求。如圖5所示,分詞客戶端中的應(yīng)用程序51通過JAVA幫助類的JAVA幫助類52、JNI庫53、調(diào)用分詞客戶端庫,該分詞客戶端庫對應(yīng)用程序51產(chǎn)生的分詞請求數(shù)據(jù)進行打包封裝,并且跨進程將消息傳送給分詞服務(wù)器端。其中,JNI庫53用來提供JAVA層向C++層的調(diào)用。當(dāng)分詞服務(wù)器端的分詞服務(wù)進程接收到分詞客戶端發(fā)送的分詞請求后,判斷與移動終端相對應(yīng)的詞庫是否已經(jīng)加載,若與移動終端相對應(yīng)的詞庫沒有加載,則加載該詞庫,若與移動終端相對應(yīng)的詞庫已經(jīng)加載,則不用重復(fù)加載;根據(jù)與移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對接收到目標(biāo)文件進行分詞計算,并得到分詞結(jié)果以及將所述分詞結(jié)果返回分詞客戶端。其中,JNI庫53用來提供JAVA層向C++層的調(diào)用。
[0071]當(dāng)然,本領(lǐng)域技術(shù)人員能夠理解分詞客戶端還可以采用其他的接口向分詞服務(wù)器端發(fā)送分詞請求,在這里只是詳細說明了上述三種方式,而其他方式在這里不再一一說明。
[0072]因此,本發(fā)明實施例提供的分詞方法,分詞服務(wù)器端接收分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求,根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,并得到分詞結(jié)果,將所述分詞結(jié)果發(fā)送給所述分詞客戶端,并在預(yù)設(shè)的時間內(nèi)未接收到分詞客戶端發(fā)送的分詞請求時,則卸載詞庫,實現(xiàn)了在移動終端上進行分詞,擴大了分詞技術(shù)的應(yīng)用領(lǐng)域,還提高了移動終端的內(nèi)存的利用率。
[0073]圖6是本發(fā)明第三實施例的分詞方法的流程圖。該分詞方法應(yīng)用于移動終端。其中,移動終端包括智能手機、以及平板電腦等。如圖6所示,所述方法包括:[0074]步驟601、移動終端啟動。
[0075]步驟602、移動終端本地的分詞服務(wù)器端啟動分詞服務(wù)進程,暫時不加載與移動終端相對應(yīng)的詞庫,從而減少占用移動終端的內(nèi)存空間。
[0076]步驟603、移動終端的本地分詞客戶端等待分詞調(diào)用。
[0077]步驟604、分詞客戶端的應(yīng)用程序調(diào)用分詞,產(chǎn)生攜帶目標(biāo)文件的分詞請求,并采用不同的接口調(diào)用分詞客戶端的分詞客戶端庫。其中,分詞客戶端可以通過直接調(diào)用的方式向分詞服務(wù)器端發(fā)送分詞請求,或者通過C或C++接口調(diào)用的方式向分詞服務(wù)器端發(fā)送分詞請求,或者通過JAVA接口調(diào)用的方式向所述分詞服務(wù)器端發(fā)送分詞請求。
[0078]步驟605、分詞客戶端庫對分詞請求攜帶的數(shù)據(jù)即目標(biāo)文件進行打包封裝,并且跨進程將封裝后的分詞請求傳送給移動終端本地的分詞服務(wù)器端。
[0079]步驟606、分詞服務(wù)器端接收到分詞請求后,判斷其是否已經(jīng)加載與移動終端相對應(yīng)的詞庫。當(dāng)沒有加載移動終端相對應(yīng)的詞庫時,則執(zhí)行步驟607 ;當(dāng)已經(jīng)加載移動終端相對應(yīng)的詞庫時,則執(zhí)行步驟608。該判斷過程是因為與移動終端相對應(yīng)的詞庫并不永久處于加載狀態(tài),當(dāng)在預(yù)設(shè)的時間內(nèi)未接收到所述分詞客戶端發(fā)送的分詞請求時,則卸載所述詞庫。換言之,移動終端為了將運行時刻的內(nèi)存使用量降到最低,會定期卸載已經(jīng)加載的詞庫,從而騰空其占用的內(nèi)存。
[0080]步驟607、分詞服務(wù)器端加載移動終端相對應(yīng)的詞庫。
[0081]步驟608、分詞服務(wù)器端關(guān)閉已有定時器,啟動新定時器。其中,啟動新定時器可以實現(xiàn)定期的卸載其已經(jīng)加載的詞庫。
[0082]步驟609、分詞服務(wù)器端根據(jù)其加載的詞庫、與加載的詞庫對應(yīng)的算法將目標(biāo)文件進行分詞計算,并得到分詞結(jié)果。其中,加載的詞庫根據(jù)移動終端的硬件配置選取獲得的。
[0083]步驟610、分詞服務(wù)器端將分詞結(jié)果返回移動終端本地的分詞客戶端。
[0084]步驟611、分詞服務(wù)器端定期判斷定時器是否達到預(yù)先設(shè)定的時間值,當(dāng)達到預(yù)先設(shè)定的時間值時,執(zhí)行步驟612 ;當(dāng)未達到預(yù)先設(shè)定的時間值時,重復(fù)執(zhí)行步驟611。其目的是定期的卸載其已經(jīng)加載的詞庫,從而減少占用內(nèi)存的空間。
[0085]步驟612、分詞服務(wù)器端卸載其已經(jīng)加載的詞庫。
[0086]因此,本發(fā)明實施例提供的分詞方法,實現(xiàn)了在移動終端上進行分詞,擴大了分詞技術(shù)的應(yīng)用領(lǐng)域。
[0087]圖7是本發(fā)明第四實施例的移動終端的示意圖。該移動終端用于執(zhí)行本發(fā)明第一實施例和第三實施例的分詞方法。如圖7所示,所述移動終端70包括:分詞客戶端71和分詞服務(wù)器端72。
[0088]分詞客戶端71包括:收集單元81和發(fā)送單元82,如圖8所示。
[0089]收集單元81用于收集分詞請求,以及將所述分詞請求傳輸給發(fā)送單元82。
[0090]發(fā)送單元82用于將收集單元收集到的分詞請求發(fā)送至分詞服務(wù)器端72。
[0091]分詞服務(wù)端72包括:接收單元91、分詞單元92和發(fā)送單元93,如圖9所示。
[0092]接收單元91用于接收分詞客戶端71發(fā)送的攜帶有目標(biāo)文件的所述分詞請求,以及將所述分詞請求傳輸給分詞單元92。
[0093]具體地,接收單元91可以接收移動終端本地的多個分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求。另外,在接收單元91接收分詞客戶端71發(fā)送的攜帶有目標(biāo)文件的分詞請求之前,不加載與移動終端70相對應(yīng)的詞庫,從而減少占用移動終端的內(nèi)存空間。其中,該分詞服務(wù)進程是一個移動終端開機啟動的獨立進程,當(dāng)分詞服務(wù)進程處于運行時態(tài)時,可以接收分詞客戶端發(fā)送的分詞請求,并進行分詞計算。另外,因為分詞服務(wù)進程所占的內(nèi)存空間很小,而與所述移動終端相對應(yīng)的詞庫所占的內(nèi)存空間就要很大,所以啟用分詞服務(wù)進程后,并不立即加載與所述移動終端相對應(yīng)的詞庫,而只有接收到分詞客戶端的分詞請求后再加載所述詞庫。
[0094]分詞單元92用于從所述接收單元91接收所述分詞請求,根據(jù)所述分詞請求,利用與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,得到分詞結(jié)果,以及將所述分詞結(jié)果傳輸給發(fā)送單元93。
[0095]發(fā)送單元93用于從分詞單元92接收所述分詞結(jié)果,將所述分詞結(jié)果發(fā)送給所述分詞客戶端,以使所述分詞客戶端根據(jù)所述分詞結(jié)果識別所述目標(biāo)文件。其中,所述分詞請求包括下列至少一種:直接調(diào)用的分詞請求、通過C或C++接口調(diào)用的分詞請求、以及通過JAVA接口調(diào)用的分詞請求。
[0096]在一個實施例中,接收單元91具體用于接收所述移動終端本地的分詞客戶端直接調(diào)用分詞服務(wù)器端的分詞請求;或者,接收所述移動終端本地的分詞客戶端通過C或C++接口調(diào)用分詞服務(wù)器端的分詞請求;或者,接收所述移動終端本地的分詞客戶端通過JAVA接口調(diào)用分詞服務(wù)器端的分詞請求。
[0097]在另一個實施例中,本發(fā)明提供的分詞服務(wù)器端72還包括:加載單元94。
[0098]加載單元94用于根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算之前,判斷是否已加載所述與所述移動終端相對應(yīng)的詞庫,若否,則將所述移動終端相對應(yīng)的詞庫加載到本地內(nèi)存中。
[0099]具體地,當(dāng)沒有加載所述與所述移動終端相對應(yīng)的詞庫時,則加載所述詞庫,并根據(jù)所述詞庫、以及所述詞庫對應(yīng)的分詞算法進行分詞計算,從而得到分詞結(jié)果;當(dāng)已經(jīng)加載所述與所述移動終端相對應(yīng)的詞庫時,則根據(jù)所述詞庫、以及所述詞庫對應(yīng)的分詞算法進行分詞計算,從而得到分詞結(jié)果。該過程為判斷是否已經(jīng)加載與所述移動終端相對應(yīng)的詞庫的過程。該判斷過程是因為與移動終端相對應(yīng)的詞庫并不永久處于加載狀態(tài),當(dāng)在預(yù)設(shè)的時間內(nèi)未接收到所述分詞客戶端發(fā)送的分詞請求時,則卸載所述詞庫。換言之,移動終端為了將運行時刻的內(nèi)存使用量降到最低,會定期卸載已經(jīng)加載的詞庫,從而騰空其占用的內(nèi)存。
[0100]再一個實施例中,所述分詞服務(wù)器端72還包括:卸載單元95。
[0101]卸載單元95用于判斷出在預(yù)設(shè)的時間內(nèi)未接收到分詞客戶端發(fā)送的分詞請求時,則卸載所述詞庫。換言之,分詞服務(wù)器端為了將運行時刻的內(nèi)存使用量降到最低,會定期卸載已經(jīng)加載的詞庫,從而騰空其占用的內(nèi)存。
[0102]再一個實施例中,接收單元91具體用于在運行時啟動分詞服務(wù)進程,以監(jiān)聽接收移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求。
[0103]因此,本發(fā)明實施例提供的移動終端,通過分詞客戶端收集分詞請求,以及將所述分詞請求傳送給分詞服務(wù)器端,分詞服務(wù)器端接收分詞請求后,根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,并得到分詞結(jié)果,將所述分詞結(jié)果發(fā)送給所述分詞客戶端,以使所述分詞客戶端根據(jù)所述分詞結(jié)果識別所述目標(biāo)文件,實現(xiàn)了在移動終端上進行分詞,擴大了分詞技術(shù)的應(yīng)用領(lǐng)域,還提高了移動終端的內(nèi)存的利用率。
[0104]顯然,本領(lǐng)域技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以通過如上所述的通信終端實施??蛇x地,本發(fā)明實施例可以用計算機裝置可執(zhí)行的程序來實現(xiàn),從而可以將它們存儲在存儲裝置中由處理器來執(zhí)行,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等;或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件的結(jié)合。
[0105]以上所述僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,對于本領(lǐng)域技術(shù)人員而言,本發(fā)明可以有各種改動和變化。凡在本發(fā)明的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種分詞方法,其特征在于,所述方法包括: 移動終端本地的分詞服務(wù)器端接收所述移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求; 所述分詞服務(wù)器端根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,并得到分詞結(jié)果。
2.根據(jù)權(quán)利要求1所述的分詞方法,其特征在于,所述分詞服務(wù)器端根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算之前,還包括: 所述分詞服務(wù)器端判斷是否已加載所述與所述移動終端相對應(yīng)的詞庫,若否,則將所述移動終端相對應(yīng)的詞庫加載到本地內(nèi)存中。
3.根據(jù)權(quán)利要求1或2所述的分詞方法,其特征在于,還包括: 服務(wù)器根據(jù)所述移動終端的硬件配置選取獲得所述移動終端相對應(yīng)的詞庫; 所述服務(wù)器將所述詞庫推送至對應(yīng)的移動終端進行存儲。
4.根據(jù)權(quán)利要求3所述的分詞方法,其特征在于,所述服務(wù)器根據(jù)所述移動終端的硬件配置選取獲得所述移動終端相對應(yīng)的詞庫包括: 所述服務(wù)器對總詞庫進行劃分,得到多個不同類型的詞庫; 所述服務(wù)器計算各所述詞庫的初始值,以及根據(jù)所述詞庫的初始值和分詞記錄計算各所述詞庫的價值; 所述服務(wù)器根據(jù)各所述詞庫的價值、所述詞庫的文件大小、以及所述移動終端的內(nèi)存大小選取與所述移動終端相對應(yīng)的詞庫。
5.根據(jù)權(quán)利要求2所述的分詞方法,其特征在于,所述分詞服務(wù)器端加載所述詞庫之后,還包括: 所述分詞服務(wù)器端判斷出在預(yù)設(shè)的時間內(nèi)未接收到分詞客戶端發(fā)送的分詞請求時,則卸載所述詞庫。
6.根據(jù)權(quán)利要求1至5任一項所述的分詞方法,其特征在于,所述移動終端本地的分詞服務(wù)器端接收移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求,包括: 所述移動終端本地的分詞服務(wù)器端,在運行時啟動分詞服務(wù)進程,以監(jiān)聽接收移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求。
7.一種移動終端,其特征在于,包括分詞客戶端和分詞服務(wù)器端, 所述分詞客戶端包括: 收集單元,用于收集分詞請求,以及將所述分詞請求傳輸給發(fā)送單元; 發(fā)送單元,用于將收集單元收集到的分詞請求發(fā)送至分詞服務(wù)器端; 所述分詞服務(wù)器端包括: 接收單元,用于接收所述分詞客戶端發(fā)送的攜帶有目標(biāo)文件的所述分詞請求,以及將所述分詞請求傳輸給分詞單元; 分詞單元,用于從所述接收單元接收所述分詞請求,根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算,并得到分詞結(jié)果,以及將所述分詞結(jié)果傳輸給發(fā)送單元; 發(fā)送單元,用于從分詞單元接收所述分詞結(jié)果,將所述分詞結(jié)果發(fā)送給所述分詞客戶端,以使所述分詞客戶端根據(jù)所述分詞結(jié)果識別所述目標(biāo)文件。
8.根據(jù)權(quán)利要求7所述的移動終端,其特征在于,還包括: 加載單元,用于根據(jù)與所述移動終端相對應(yīng)的詞庫、以及所述詞庫對應(yīng)的分詞算法對所述目標(biāo)文件進行分詞計算之前,判斷是否已加載所述與所述移動終端相對應(yīng)的詞庫,若否,則將所述移動終端相對應(yīng)的詞庫加載到本地內(nèi)存中。
9.根據(jù)權(quán)利要求7或8所述的移動終端,其特征在于,還包括: 卸載單元,用于判斷出在預(yù)設(shè)的時間內(nèi)未接收到分詞客戶端發(fā)送的分詞請求時,則卸載所述詞庫。
10.根據(jù)權(quán)利要求7至9任一項所述的移動終端,其特征在于,所述接收單元具體用于在運行時啟動分詞服務(wù)進程,以監(jiān)聽接收移動終端本地的分詞客戶端發(fā)送的攜帶有目標(biāo)文件的分詞請求。`
【文檔編號】G06F17/27GK103699524SQ201310699645
【公開日】2014年4月2日 申請日期:2013年12月18日 優(yōu)先權(quán)日:2013年12月18日
【發(fā)明者】龔龍, 任大韞, 霍巖, 姜濤, 高慶 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司