本申請涉及計算機軟件技術(shù)領(lǐng)域,特別涉及一種拼寫檢查方法及裝置。
背景技術(shù):
隨著計算機等終端設(shè)備的普及,越來越多的用戶采用電子化辦公方式,這樣極大方便了用戶的工作。然而,用戶要瀏覽的文檔中難免會存在輸入錯誤等問題,為方便用戶工作,現(xiàn)有技術(shù)中,用戶所使用終端設(shè)備接收到文件打開指令,加載文檔時,對整個文檔進行拼寫檢查,然后,在進行文檔顯示時,根據(jù)拼寫檢查結(jié)果向用戶展示拼寫錯誤提示信息,這樣可以使得用戶能夠直觀的了解文檔中存在的拼寫錯誤。
例如中國專利申請第201510319466.2號《文本文檔拼寫及語法校對方法》提到微軟公司的word2013提供的校對功能,對于作家、編輯、秘書等群體,編輯處理校對較長篇幅如百頁以上的文本,效率較低,因為需要逐頁的檢查每頁文本,避免遺漏標識出來的拼寫語法錯誤。還提到該專利申請的技術(shù)方案是系統(tǒng)自動將文本文檔全部內(nèi)容與詞典單元內(nèi)容進行對比,并將拼寫及語法錯誤之處進行標記,同時標記及排序單元將文本文檔中含有拼寫及語法錯誤的“行”進行標記并編號,系統(tǒng)將所有含有拼寫及語法錯誤的“行”按順序幾種排列顯示,用戶在文檔處理界面對拼寫及語法錯誤進行處理,另外用戶對拼寫及語法錯誤進行處理完成后,在操作界面選擇恢復文本文檔排序選項,標記及排序單元將處理完成的“行”,按照前述標記,替換原有的“行”并重新進行排版,這種方法也是對整個文檔進行拼寫檢查,效率依然很低。
實際應用中應用上述方式雖然可以獲得拼寫檢查結(jié)果,然而由于在加載文檔的過程中要對整個文檔進行拼寫檢查,所以會使得文檔加載速度變慢,進而文檔展示速度也會變慢,用戶體驗差。
技術(shù)實現(xiàn)要素:
本申請實施例公開了一種拼寫檢查方法及裝置,以提高文檔加載速度以及文檔展示速度,進而提高用戶體驗。
為達到上述目的,本申請實施例公開了一種拼寫檢查方法,應用于客戶端,所述方法包括:
按照預設(shè)的字符段劃分規(guī)則,確定待展示頁面所包含字符對應的字符段;
獲得所確定的各個字符段中錯詞的字符位置;
展示所確定的各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應字符段中的錯詞進行標記。
為達到上述目的,本申請實施例公開了一種拼寫檢查方法,應用于服務(wù)器,所述方法包括:
接收客戶端發(fā)送的待展示頁面所包含字符對應的字符段,其中,所述字符段為所述客戶端根據(jù)預設(shè)的字符段劃分規(guī)則對所述待展示頁面進行劃分得到的;
獲得所接收的字符段中錯詞的字符位置;
將各個字符段的字符位置發(fā)送至所述客戶端,以使得所述客戶端展示各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應對字符段中的錯詞進行標記。
為達到上述目的,本申請實施例公開了一種拼寫檢查裝置,應用于客戶端,所述裝置包括:
字符段確定模塊,用于按照預設(shè)的字符段劃分規(guī)則,確定待展示頁面所包含字符對應的字符段;
字符位置獲得模塊,用于獲得所確定的各個字符段中錯詞的字符位置;
錯詞標記模塊,用于展示所確定的各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應字符段中的錯詞進行標記。
為達到上述目的,本申請實施例公開了一種拼寫檢查裝置,應用于服務(wù)器,所述裝置包括:
字符段接收模塊,用于接收客戶端發(fā)送的待展示頁面所包含字符對應的字符段,其中,所述字符段為所述客戶端根據(jù)預設(shè)的字符段劃分規(guī)則對所述待展示頁面進行劃分得到的;
字符位置獲得模塊,用于獲得所接收的字符段中錯詞的字符位置;
字符位置發(fā)送模塊,用于將各個字符段的字符位置發(fā)送至所述客戶端,以使得所述客戶端展示各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應對字符段中的錯詞進行標記。
由以上可見,本申請實施例中,對于待展示頁面而言,獲得待展示頁面所包含字符對應的字符段中錯詞的字符位置,然后展示各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應字符段中的錯詞進行標記。與現(xiàn)有技術(shù)相比,本申請實施例提供的方案中,是在要展示待展示頁面之前對該頁面進行拼寫檢查,與現(xiàn)有技術(shù)中在加載文檔時對整個文檔進行拼寫檢查相比,加載文檔過程中拼寫檢查占用的時間變短,因此,能夠提高文檔加載速度,進而提高文檔展示速度,提高了用戶體驗。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請實施例提供的第一種拼寫檢查方法的流程示意圖;
圖2為本申請實施例提供的一種獲得字符段中錯詞的字符位置的方法的流程示意圖;
圖3為本申請實施例提供的第二種拼寫檢查方法的流程示意圖;
圖4為本申請實施例提供的第三種拼寫檢查方法的流程示意圖;
圖5為本申請實施例提供的第四種拼寫檢查方法的流程示意圖;
圖6為本申請實施例提供的第一種拼寫檢查裝置的結(jié)構(gòu)示意圖;
圖7為本申請實施例提供的第二種拼寫檢查裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是 全部的實施例?;诒旧暾堉械膶嵤├绢I(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
下面先對本申請具體實例中涉及到的幾個概念進行介紹:
文本流系統(tǒng):由映射規(guī)則和數(shù)據(jù)池組成的系統(tǒng)。文本流技術(shù),解決了添加和刪除文字帶來的后面文字的位置地址信息都需要調(diào)整的問題。數(shù)據(jù)池是在文本流系統(tǒng)中,在物理磁盤上存放的所有文本內(nèi)容的統(tǒng)稱。映射規(guī)則是一種索引,是數(shù)據(jù)的物理位置和邏輯位置的關(guān)系規(guī)則,可以采用樹型結(jié)構(gòu)來表示,將每個文本內(nèi)容與該文本內(nèi)容的物理地址、邏輯位置地址進行一一對應,以便計算機可以從物理地址下獲取該文本內(nèi)容。需要說明的是,映射規(guī)則也可以是map結(jié)構(gòu)、鏈表結(jié)構(gòu),或者樹型結(jié)構(gòu),本申請并不對此進行限定,優(yōu)選樹型結(jié)構(gòu)。
errorworldlist列表:錯詞表,用于存儲錯詞的range,但不存放物料,目的是記錄下哪個是錯詞。該錯詞的起點位置地址,是一種邏輯位置地址,并不是上述映射規(guī)則中物理地址。
validrange列表:記錄了已進行過拼寫檢查的字符段的range,但不存放物料。建立該表的目的是提高效率,處理過的錯詞,不再重復處理了,具體實現(xiàn)方法是進行過拼寫檢查并確認放入或不放入errorworldlist列表的字符段range,并且這些字符段是沒有發(fā)生變化的字符段,發(fā)生過變化后的字符段又需要進行拼寫檢查了,因此會從validrange列表中刪除。
marks列表:需要進行標記的錯詞表,用于存儲以預設(shè)標記方式進行標記的錯詞的range,但不存放物料。設(shè)置該表的目的是調(diào)用marks表來完成繪制工作。
errors列表:用來輔助完成右鍵菜單實現(xiàn)的列表,用于存儲可能在右鍵菜單中展示建議詞的所有可能錯詞的range,但不存放物料。這些所有可能的錯詞中,最終會有一個錯詞被采納。
ignore列表:能夠忽略拼寫檢查的錯詞列表,用于存儲能夠忽略拼寫檢查的錯詞的range,但不存放物料。ignore列表記錄了因為應用軟件的系統(tǒng)自身設(shè)置的需要,而要求被忽略的錯詞的range,比如應用軟件對于在修訂功能中被刪除的內(nèi)容不再進行拼寫檢查,在批注中的文字不進行拼寫檢查等;還可能記錄了用戶根據(jù)自己的需求設(shè)置為被忽略的錯詞的range;還可能記錄了用戶手動添加的,用戶認為需要被忽略的錯詞的range。
range:是指起點位置地址(gcp)和區(qū)間長度(ccp)。起點位置地址,可以是從整個文本首位置開始編號,依次得到的邏輯位置地址。range并不是上述文本流系統(tǒng)的映射規(guī)則中提到的物理地址。需要說明的是,上述各個表中存儲的range,可以是以起點位置和區(qū)間長度相結(jié)合表示的,還可以是以起點位置和結(jié)束位置相結(jié)合表示的,本申請并不對此進行限定,優(yōu)選采用起點位置地址(gcp)和區(qū)間長度(ccp)相結(jié)合。
具體的,上述起點位置地址可以理解為:起點位置索引,上述結(jié)束位置地址可以理解為:結(jié)束位置索引。
下面對本申請實施例提供的拼寫檢查方法及裝置進行詳細介紹。
圖1為本申請實施例提供的第一種拼寫檢查方法的流程示意圖,該方法應用于客戶端,包括:
s101:按照預設(shè)的字符段劃分規(guī)則,確定待展示頁面所包含字符對應的字符段。
對于一個文檔或者網(wǎng)頁而言,可以對應一個或者多個展示頁面,本申請所提供的實施例僅僅對其中的一個展示頁面進行拼寫檢查,其他頁面對應的拼寫檢查方法均與此方法相同。
上述展示頁面中包含多個字符,這些字符可以是中文字符、英文字符、法文字符、德文字符等等,本申請并不對此進行限定。
舉例而言,中文字符可以理解為一個漢字,例如,我、你、她等等;
英文字符可以理解為一個英文字母或者一個英文單詞,例如,a、we、you等等。
另外,不管是哪種字符,其中還可以包含標點符號、數(shù)字等等,例如,“,”、“、”、1、5、10等。
上述字符段可以簡單的理解為:由一個或者多個字符形成的段。
例如,字符段可以是:
“解決了添加和刪除”、“解決了,添加和刪除……”、“解決了,添加和刪除1、2、3”、“payattentiontoyourspelling”、“payattentiontoyourspelling!”、“payattentiontoyourspelling,1、2、3”等等。
具體的,按照預設(shè)的字符劃分規(guī)則,確定待展示頁面所包含字符對應的字符段時,可以先按照預設(shè)的字符劃分規(guī)則得到一個字符段,然后對該字符段進行后續(xù)的拼寫檢查、展示該字符段等等操作,對該字符段處理完畢后,再按照預設(shè)的字符段劃分規(guī)則獲得下一字符段,并進行與上述相同的后續(xù)操作,如此循環(huán)直至完成對待展示頁面的最后一個字符段的處理。
具體的,隨著用戶終端設(shè)備性能的不斷提高,大多數(shù)設(shè)備均支持多任務(wù)并行處理,鑒于此,在按照預設(shè)的字符劃分規(guī)則,確定待展示頁面所包含字符對應的字符段時,還可以一次按照預設(shè)的字符劃分規(guī)則獲得多個字符段,然后對所獲得的多個字符段進行上述后續(xù)操作,如此循環(huán)直至處理完畢待展示頁面的最后一個字符段。
上述預設(shè)的字符段劃分規(guī)則可以對應多種情況,具體如下:
第一種情況:將待展示頁面所包含的所有字符確定為一個字符段,這樣在展示一個字符段時,完成了整個待展示頁面的展示;
例如,假設(shè)待展示頁面所包含的所有字符為“將待展示頁面所包含的所有字符確定為一個字符段”,則該待展示頁面僅僅對應一個字符段,該字符段的內(nèi)容為:“將待展示頁面所包含的所有字符確定為一個字符段”。
第二種情況:將展示待展示頁面時,每一展示行所包含的字符確定為一個字符段,這樣在展示一個字符段時,僅僅完成了待展示頁面中一行的展示;
例如,展示待展示頁面時,第一展示行所包含的字符為“第一種情況是:”,第二展示行所包含的字符為“第二種情況是:”,第三展示行所包含的字符為“第三種情況是:”,則該待展示頁面對應三個字符段,這三個字符段分別為:“第一種情況是:”、“第二種情況是:”、“第三種情況是:”。
第三種情況:按照預設(shè)的字符長度將待展示頁面所包含的字符劃分為字符段,這樣在展示一個字符段時,僅僅完成待展示頁面中一部分區(qū)域的展示,例如,上述預設(shè)的字符長度可以為90等等;
例如,假設(shè)待展示頁面的一段字符內(nèi)容為“解決了添加和刪除文字帶來的所有位置都需要調(diào)整的問題”,上述預設(shè)的長度為5,則待展示頁面對應的字符段為:“解決了添加”、“和刪除文字”、“帶來的所有”、“位置都需要”、“調(diào)整的問題”。
第四種情況:按照預設(shè)的字符長度獲得待展示頁面所包含的字符對應的一個字符段后,檢查該字符段末尾的字符是否與下一字符段的起始若干字符構(gòu)成詞,然后根據(jù)檢查結(jié)果調(diào)整所獲得的字符段,這樣在展示一個字符段時,也僅僅完成待展示頁面中一部分區(qū)域的展示。
例如,假設(shè)待展示頁面的一段字符內(nèi)容為“解決了添加和刪除文字帶來的所有位置都需要調(diào)整的問題”,按照預設(shè)的字符長度獲得的一個字符段為:“解決了添加和刪”,該字符段的最后一個字符為“刪”,而下一字符段的起始第一個字符為“除”,顯然“刪除”為一個詞,因此可以將上述字符段調(diào)整為“解決了添加和刪除”,當然也可以調(diào)整為“解決了添加和”。
需要說明的是,本申請只是以上述為例進行說明,實際應用中預設(shè)的字符段劃分規(guī)則并不僅限于上述幾種情況。
在本申請的一種可選實現(xiàn)方式中,上述待展示頁面所包含的字符可以是從文本流系統(tǒng)獲得的,當然也可以是從其他文字保存系統(tǒng)獲得的,本申請并不對此進行限定。
s102:獲得所確定的各個字符段中錯詞的字符位置。
獲得字符段中的錯詞的字符位置時可以借助詞庫進行,具體的,以一個字符段為例,可以先對該字符段進行分詞處理,獲得該字符段對應的詞,然后采用預設(shè)的詞庫對上述字符段對應的詞進行檢測,確定其中的錯詞,進而獲得該字符段中錯詞的字符位置。
其中,對上述字符段進行分詞處理時,可以采用分詞器對上述字符段進行分詞處理,本領(lǐng)域內(nèi)的技術(shù)人員可以根據(jù)現(xiàn)有技術(shù)獲得分詞器所采用的具體算法,這里不再詳述。
由前面的描述得知,待展示頁面中可以包含多種語言對應的字符,這里以中文和英文為例,對上述“詞”進行介紹。
中文中的“詞”可以理解為:中文中最小的能夠獨立運用的語言單位,可以是由一個中文字符組成的,也可以是由多個中文字符組成的,例如,“我”、“刪除”、“實施例”等等。
英文中的詞可以理解為:英文中最小的能夠獨立運用的語言單位,可以是由一個英文字符組成的,也可以是由多個英文字符組成的,例如,“a”、“we”、 “happen”、“takeplace”等等。
需要說明的是,不管字符段中的字符是哪一種語言對應的字符,這些字符中均有可能包含標點符號、數(shù)字等等,利用分詞器進行分詞處理時,一般會將標點符號、數(shù)字等也分離出來,這樣我們也可以將分離得到的標點符號、數(shù)字等稱之為字符段對應的詞。
上述預設(shè)的詞庫可以是客戶端的默認詞庫,還可以是用戶安裝的第三方詞庫,還可以是用戶根據(jù)自己的使用習慣,通過添加詞等方式生成的自定義詞庫等等。
采用預設(shè)的詞庫對字符段對應的詞進行檢測,確定錯詞時,若采用預設(shè)的詞庫檢測到字符段對應的詞,則認為這樣的詞屬于正確的詞,而未檢測到的詞,則可以認為是錯誤的詞,即錯詞。
具體的,上述錯詞的字符位置可以是以錯詞起點位置地址和錯詞字符長度相結(jié)合的形式表示的,還可以是以錯詞起點位置地址和錯詞終點位置地址相結(jié)合表示的,本申請并不對此進行限定。
s103:展示所確定的各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應字符段中的錯詞進行標記。
上述預設(shè)的標記形式可以是以“波浪線型下劃線”形式進行標記、可以是以“雙下劃線”形式進行標記、可以是以加粗形式進行標記等等,本申請并不對預設(shè)的標記形式的具體表現(xiàn)形式進行限定。
本領(lǐng)域內(nèi)的技術(shù)人員可以理解的是,用戶在瀏覽文檔或者網(wǎng)頁的過程中可能會反復瀏覽已瀏覽過的內(nèi)容,由于在用戶第一次瀏覽一個展示頁面的時候已經(jīng)對其中的內(nèi)容進行過拼寫檢查,為保證這種反復進行頁面瀏覽的情況下,不會反復進行拼寫檢查,進而影響頁面展示速度,本申請的一種較佳實現(xiàn)方式中,在獲得所確定的各個字符段中錯詞的字符位置之后,還可以緩存所確定的各個字符段中錯詞的字符位置。
具體的,上述字符位置可以緩存在一個表中,例如,緩存在前述的errorworldlist列表中。
在獲得所確定的各個字符段中錯詞的字符位置時,可以按照一定的規(guī)則分別獲得各個字符段中錯詞的字符位置,在本申請的一種具體實現(xiàn)方式中,參見 圖2,提供了一種獲得字符段中錯詞的字符位置的方法的流程示意圖,該方法包括:
s102a:根據(jù)目標字符段的范圍,判斷是否已對目標字符段進行過拼寫檢查,若為否,執(zhí)行s102b,若為是,執(zhí)行s102d。
其中,上述目標字符段為所確定的各個字符段中的任一字符段。
上述目標字符段的范圍可以是以起點位置地址和字符長度相結(jié)合表示的,也可以是以起點地址位置和終點地址位置相結(jié)合表示的。結(jié)合前面給出的定義,目標字符段的范圍可以理解為目標字符段的range。
在本申請的一種具體實現(xiàn)方式中,可以記錄已進行過拼寫檢查的字符段的范圍,例如,可以記錄在前述的表validrange列表中。根據(jù)目標字符段的范圍,判斷是否已對目標字符段進行過拼寫檢查時,只需檢查上述validrange列表中是否記錄有目標字符段的范圍,若記錄有該范圍,則認為已對目標字符段進行過拼寫檢查,若未記錄有該范圍,則認為沒有對目標字符段進行過拼寫檢查。
s102b:對目標字符段進行分詞處理,獲得目標字符段對應的詞。
例如,假設(shè),目標字符段為“解決了添加和刪除”,則對目標字符段進行分詞處理,得到目標字符段對應的詞可以包括:“解決”、“了”、“添加”、“和”、“刪除”;
假設(shè),目標字符段為“payattentiontoyourspelling”,則對目標字符段進行分詞處理,得到目標字符段對應的詞可以包括:“pay”、“attention”、“to”、“your”、“spelling”。
可以理解的,目標字符段中可能會包含標點符號、用戶根據(jù)實際需要設(shè)置的不需要參與分詞處理的字符等等,鑒于此,為保證準確獲得目標字符段對應的詞,在本申請的一種具體實現(xiàn)方式中,可以先對目標字符段進行分詞處理,然后按照預設(shè)的詞過濾規(guī)則對分詞處理結(jié)果進行過濾處理,并根據(jù)過濾處理結(jié)果獲得目標字符段對應的詞。
假設(shè),目標字符段為“s102b:對目標字符段進行分詞處理,”,對目標字符段進行分詞處理后得到的詞為:“s”、“102”、“b”、“:”、“對”、“目標”、“字符段”、“進行”、“分詞”、“處理”、“,”,預設(shè)的詞過濾規(guī)則中規(guī)定過濾掉大寫字母、數(shù)字和標點符號,則目標字符段對應的詞為:“對”、“目標”、“字符段”、“進 行”、“分詞”、“處理”。
與上述情況類似,在本申請的另一種具體實現(xiàn)方式中,還可以先對目標字符段中滿足預設(shè)字符過濾規(guī)則的字符進行過濾處理,然后再對經(jīng)過濾處理后的目標字符段進行分詞處理,獲得目標字符段對應的詞。
假設(shè),目標字符段為“s102b:對目標字符段進行分詞處理,”,預設(shè)的字符過濾規(guī)則中規(guī)定過濾掉大寫字母、數(shù)字和標點符號,則過濾處理后的目標字符段為:“對目標字符段進行分詞處理”,對過濾處理后的目標字符段進行分詞處理得到目標字符段的詞為:“對”、“目標”、“字符段”、“進行”、“分詞”、“處理”。
s102c:根據(jù)預設(shè)的拼寫檢查規(guī)則,對目標字符段對應的詞進行拼寫檢查,確定目標字符段中的錯詞,進而獲得目標字符段中錯詞的字符位置。
可以理解的,在進行拼寫檢查時可以忽略字符段中的一些詞,而只對其中的部分詞進行拼寫檢查,例如,可以忽略網(wǎng)址、可以忽略數(shù)字、可以忽略數(shù)字和字母混合的詞、可以忽略大寫字符組成的詞等等。
鑒于上述情況,在本申請的一種可選實現(xiàn)方式中,根據(jù)預設(shè)的拼寫檢查規(guī)則,對目標字符段對應的詞進行拼寫檢查,確定目標字符段中的錯詞,進而獲得目標字符段中錯詞的字符位置時,可以先根據(jù)預設(shè)的詞庫對目標字符段對應的詞進行拼寫檢查,獲得目標字符段中的錯詞,然后將目標字符段的錯詞中不能忽略拼寫檢查的錯詞的字符位置確定為目標字符段中錯詞的字符位置。
在本申請的另一種可選實現(xiàn)方式中,還可以先確定目標字符段對應的詞中不能忽略拼寫檢查的詞,然后對所確定的詞進行拼寫檢查,獲得錯詞,進而獲得目標字符段中錯詞的字符位置。
s102d:根據(jù)已緩存的字符位置中針對目標字符段的信息,獲得目標字符段中錯詞的字符位置。
由于在獲得字符段中錯詞的字符位置后,還可以緩存錯詞的字符位置,所以,若已對目標字符段進行過拼寫檢查,則已緩存錯詞的字符位置中包含針對目標字符段中錯詞的字符位置等相關(guān)信息,基于此,在本申請的一種可選實現(xiàn)方式中,根據(jù)已緩存的字符位置中針對目標字符段的信息,獲得目標字符段中錯詞的字符位置時,可以根據(jù)已緩存的字符位置中針對目標字符段的信息,獲得目標字符段中的錯詞,然后將目標字符段的錯詞中不能忽略拼寫檢查的錯詞 的字符位置確定為目標字符段中錯詞的字符位置。
值得一提的是,獲得字符段中錯詞的字符位置后,緩存錯詞的字符位置時,可以僅僅緩存不能忽略拼寫檢查的錯詞的字符位置,這種情況下,根據(jù)已緩存的字符位置中針對目標字符段的信息,獲得目標字符段中的錯詞后,可以直接將所獲得的錯詞的字符位置確定為目標字符段中錯詞的字符位置。
由以上可見,本實施例中,對于待展示頁面而言,獲得待展示頁面所包含字符對應的字符段中錯詞的字符位置,然后展示各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應字符段中的錯詞進行標記。與現(xiàn)有技術(shù)相比,本實施例提供的方案中,是在要展示待展示頁面之前對該頁面進行拼寫檢查,與現(xiàn)有技術(shù)中在加載文檔時對整個文檔進行拼寫檢查相比,加載文檔過程中拼寫檢查占用的時間變短,因此,能夠提高文檔加載速度,進而提高文檔展示速度,提高了用戶體驗。
下面結(jié)合文本流系統(tǒng)和上述各種列表對圖1和圖2對應的實施例進行進一步說明。
待展示頁面是由文本流系統(tǒng)提供的,一個字符段對應待展示頁面的一行。
從文本流系統(tǒng)中獲得待展示頁面第一行字符的范圍,假設(shè)為:0-90,在validrange列表中查找是否存在該范圍,若查找到了該范圍,則從errorworldlist列表中獲得上述范圍內(nèi)所有錯詞的范圍,并將這些錯詞中不屬于ignore列表的錯詞添加至marks列表中;
若在validrange列表中未查找到上述范圍,則從文本流系統(tǒng)中獲得上述范圍對應的文本內(nèi)容,也就是字符段,對上述文本內(nèi)容進行分詞處理,每獲得一個詞即進行如下拼寫檢查,直至對上述文本內(nèi)容中的最后一個詞進行拼寫檢查完畢:
檢查預設(shè)的詞庫中是否存在所獲得的詞,若不存在,則認為該詞屬于錯詞,然后查看該詞是否屬于ignore列表,若不屬于ignore列表,將該詞添加至marks列表中;
至此完成針對待展示頁面第一行文本內(nèi)容的拼寫檢查,這時可以展示上述文本內(nèi)容,并以波浪線形式標記上述marks列表中的詞。
重復上述過程直至完成對待展示頁面中所有行的展示。
需要說明的是,為防止影響對后續(xù)詞的標記,可以在以波浪線形式標記marks列表中的詞后,對該表中的內(nèi)容進行清空處理。
由前面的描述可以得知,可以根據(jù)預設(shè)的詞庫確定字符段中的錯詞,實際應用中,為保證能夠正確使用預設(shè)的詞庫,在第一次使用詞庫時,可以對詞庫的相關(guān)信息進行初始化,具體如下:
獲得當前所使用語言對應的主詞庫路徑、默認自定義詞庫的路徑,并通過掃描戶注冊表的形式獲得注冊表中記錄的詞庫路徑,根據(jù)所獲得詞庫路徑信息分別找到各個路徑下的main.dic文件、main.aff文件,然后根據(jù)上述文件生成各個詞庫對應的標識,并將所生成的標識以及詞庫的相關(guān)信息添加至預設(shè)的詞庫列表中,在后續(xù)需要使用詞庫進行錯詞檢查時,根據(jù)詞庫的標識從預設(shè)的詞庫列表中找到所需要使用的是哪一個詞庫,然后通過找到的詞庫進行錯詞檢查。
在本申請的一種具體實現(xiàn)方式中,參見圖3,提供了第二種拼寫檢查方法的流程示意圖,與前述實施例相比,本實施例中,上述拼寫檢查方法還包括:
s104:接收建議詞展示指令。
其中,上述建議詞展示指令中攜帶待校正字符段的范圍,該待校正字符段的范圍,可以是以待校正字符段的起點位置地址和待校正字符段的字符長度相結(jié)合表示的,還可以是以待校正字符段的起點位置地址和待校正字符段的結(jié)束位置相結(jié)合表示的,本申請并不對此進行限定。
具體的,上述建議詞展示指令可以是通過用戶在以預設(shè)的標記形式標記的錯詞上點擊鼠標右鍵獲得的;還可以是用戶選定詞后通過點擊鼠標右鍵獲得的;還可以是用戶將光標調(diào)整至以預設(shè)的標記形式標記的錯詞范圍內(nèi)后,通過點擊預設(shè)按鈕獲得的;還可以是用戶選定詞后通過點擊預設(shè)按鈕獲得的。
需要說明的是,上述僅僅為獲得建議詞展示指令的幾種實現(xiàn)方式而已,本申請并不對此進行限定。
在本申請的一種可選實現(xiàn)方式中,上述待校正字段的范圍可以通過以下方式獲得:
獲得用戶點擊鼠標右鍵的位置或者獲得光標的當前位置后,根據(jù)所獲得的位置,在已緩存的錯詞字符位置中進行匹配獲得該位置對應的錯詞的字符位置,所獲得的字符位置作為上述待校正字段的范圍。
在本申請的另一種可選實現(xiàn)方式中,上述待校正字段的范圍還可以通過以下方式獲得:
將用戶選定詞的范圍確定為上述待校正字段的范圍。
s105:根據(jù)待校正字符段的范圍,確定待校正字符段中的錯詞。
具體的,根據(jù)待校正字符段的范圍,確定待校正字符段內(nèi)的錯詞時,可以對待校正字符段的范圍和已緩存的字符位置進行匹配,然后根據(jù)匹配結(jié)果,確定待校正字符段中的錯詞。
對待校正字符段的范圍和已緩存的字符位置進行匹配時,查找已緩存的字符位置中位于待校正字符段的范圍內(nèi)的字符位置,將查找到的字符位置作為匹配結(jié)果的內(nèi)容。
由于根據(jù)匹配結(jié)果確定的錯詞中可能會包含可以忽略拼寫檢查的錯詞,所以根據(jù)匹配結(jié)果,確定待校正字符段內(nèi)的錯詞時,可以根據(jù)匹配結(jié)果中不能忽略拼寫檢查的錯詞,確定待校正字符段中的錯詞。
值得一提的是,上述待校正字符段中的錯詞可以是一個錯詞,也可以是多個錯詞,本申請并不對此進行限定。
s106:獲得待校正字符段中錯詞對應的建議詞。
獲得錯詞對應的建議詞時,可以通過預設(shè)的詞庫查找與該錯詞相似的詞作為其建議詞,另外,獲得錯詞的建議詞時,還可以考慮字符段中該錯詞前后的詞。
具體的,在獲得待校正字符段內(nèi)的錯詞對應的建議詞之后,還可以緩存待校正字符段中錯詞的字符位置以及待校正字符段中錯詞對應的建議詞。
在每次獲得了字符段中錯詞對應的建議詞后均進行緩存的情況下,獲得待校正字符段中錯詞對應的建議詞時,可以根據(jù)待校正字符段中錯詞的字符位置,判斷是否已緩存待校正字符段中錯詞對應的建議詞,若為是,從已緩存的錯詞對應的建議詞中獲得待校正字符段中錯詞對應的建議詞;若為否,根據(jù)預設(shè)的詞庫獲得待校正字符段中錯詞對應的建議詞。
s107:展示所獲得的建議詞。
由s104的描述可以得知,上述建議詞展示指令可以是通過多種方式獲得的, 因此,相應的展示所獲得的建議詞時,可以以右鍵菜單的形式展示所獲得的建議詞,也可以以單一展示框的形式展示所獲得的建議詞。
本申請的一種可選實現(xiàn)方式中,在根據(jù)待校正字符段的范圍,確定待校正字符段中的錯詞之后,還可以判斷待校正字符段中錯詞的長度是否位于預設(shè)范圍內(nèi),若為是,執(zhí)行s106,這樣可以保證不對過長或者過短的字符段進行建議詞展示。
由以上可見,本實施例提供的方案中,接收到建議詞展示指令后,展示錯詞的建議詞,這樣為用戶提供了消除錯詞的更進一步提示信息,方便了用戶消息待展示頁面中的錯詞,進一步提高了用戶體驗。
下面結(jié)合文本流系統(tǒng)和上述列表對圖3對應的實施例進行進一步說明。
用戶在以波浪線標注的錯詞上面點擊鼠標右鍵,根據(jù)用戶點擊鼠標右鍵的位置,從errorworldlist列表獲得錯詞的起點位置地址和錯詞的長度,在該錯詞不屬于ignore列表的情況下,將該錯詞的范圍添加至errors列表中,若監(jiān)測到errors列表中錯詞的范圍不為空,則設(shè)置右鍵菜單項中包含與拼寫檢查相關(guān)的操作項,例如,錯詞的建議詞,以使得后續(xù)顯示的右鍵菜單中包含與拼寫檢查相關(guān)的操作項,根據(jù)errors列表中錯詞的范圍從文本流系統(tǒng)中獲得錯詞,并獲得錯詞的建議詞,生成右鍵菜單,右鍵菜單中包含上述錯詞的建議詞。
在本申請的另一種具體實現(xiàn)方式中,參見圖4,提供了第三種拼寫檢查方法的流程示意圖,與圖3所示實施例相比,本實施例中,上述拼寫檢查方法還包括:
s108:接收建議詞選擇指令。
其中,上述建議詞選擇指令中攜帶目標建議詞。
s109:以目標建議詞替換目標建議詞對應的源詞,并展示目標建議詞。
上述目標建議詞對應的源詞為待校正字符段中的一個錯詞。
由前面的描述可以得知,在獲得字符段中錯詞的字符位置后,可以緩存字符段中錯詞的字符位置,又由于進行上述建議詞替換后,緩存的錯詞的字符位置已不再準確,所以,在本申請的一種可選實現(xiàn)方式中,可以根據(jù)目標建議詞對應的源詞對已緩存的信息進行更新。
可以理解的,在用戶瀏覽頁面的過程中,還可以會對該頁面中的內(nèi)容進行 編輯,基于此,在本申請的一種具體實現(xiàn)方式中,上述拼寫檢查方法還可以包括:
獲得改動字符段的范圍,獲得改動字符段中錯詞的字符位置,以預設(shè)的標記形式對改動字符段中的錯詞進行標記,并根據(jù)改動字符段的范圍以及改動字符段中錯詞的字符位置,更新已緩存的錯詞的字符位置。
具體的,獲得改動字符段的范圍后,可以先判斷errorworldlist列表中是否存在改動字符段的范圍,若存在,從errorworldlist列表中刪除上述范圍,然后,判斷是否存在以下情況中的任一種:
第一種情況:validrange列表中存在改動字符段的范圍,這種情況下,從validrange列表刪除該范圍;
第二種情況:validrange列表包含改動字符段的部分范圍或者全部范圍的范圍,這種情況下,從validrange列表中刪除與改動字符段的范圍相關(guān)的部分。
然后根據(jù)前述的方法獲得改動字符段中錯詞的字符位置,并進行標記。
由以上可見,本實施例中,接收到建議詞選擇指令后,根據(jù)所選擇的建議詞進行替換,不需要用戶自行輸入替換詞,方便了用戶操作,進一步提高了用戶體驗。
為了減輕客戶端的工作壓力,拼寫檢查除了可以在客戶端進行外,還可以在服務(wù)器側(cè)進行,鑒于此本申請還提供了一種應用于服務(wù)器的拼寫檢查方法。
具體的,參見圖5,提供了第四種拼寫檢查方法的流程示意圖,該方法應用于服務(wù)器,包括:
s501:接收客戶端發(fā)送的待展示頁面所包含字符對應的字符段。
其中,上述字符段為客戶端根據(jù)預設(shè)的字符段劃分規(guī)則對待展示頁面進行劃分得到的。
s502:獲得所接收的字符段中錯詞的字符位置。
s503:將各個字符段的字符位置發(fā)送至客戶端,以使得客戶端展示各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應對字符段中的錯詞進行標記。
在本申請的一種具體實現(xiàn)方式中,上述拼寫檢查方法還可以包括:
接收客戶端發(fā)送的建議詞展示指令,其中,建議詞展示指令中攜帶待校正字符段的范圍,根據(jù)待校正字段段的范圍,確定待校正字符段中的錯詞,獲得待校正字符段中錯詞對應的建議詞,將所獲得的建議詞發(fā)送至客戶端,以使得客戶端展示所獲得的建議詞。
在本申請的另一種具體實現(xiàn)方式中,上述拼寫檢查方法還可以包括:
接收針對改動字符段的檢查指令,其中,檢查指令中攜帶改動字符段的范圍,獲得改動字符段中錯詞的字符位置,將改動字符段中錯詞的字符位置發(fā)送至客戶端,以使得客戶端根據(jù)改動字符段中錯詞的字符位置以預設(shè)的標記形式對錯詞進行標記。
需要說明的是,服務(wù)器獲得所接收的字符段中錯詞的字符位置時,可以采用前述客戶端獲得字符段中錯詞的字符位置相同的方法,這里不再贅述。
由以上可見,本實施例提供的方案中,服務(wù)器獲得待展示頁面對應的字符段后,以字符段為單位獲得各個字符段中錯詞的字符位置,并發(fā)送給客戶端,這樣不僅可以減輕客戶端的工作壓力,而且相對于現(xiàn)有技術(shù)中在加載文檔時對整個文檔進行拼寫檢查相比,加載文檔過程中拼寫檢查占用的時間變短,因此,還能夠提高文檔加載速度,進而提高文檔展示速度,提高了用戶體驗。
為更清楚的解釋本申請實施例所提供的拼寫檢查方法,下面以wps軟件中的wps文字應用軟件為例,對拼寫檢查功能進行解釋,但是如下具體實施例不構(gòu)成對本申請的限定。
在圖1所示實施例前面所介紹概念的基礎(chǔ)上,進一步對前面所介紹的幾個概念進行介紹。
文本流系統(tǒng):由映射規(guī)則和數(shù)據(jù)池組成的系統(tǒng)。原有的線性存儲技術(shù)在處理文檔插入刪除操作時,需要對修改點之后的數(shù)據(jù)逐一移位,文本流技術(shù)解決了由此導致的效率問題。數(shù)據(jù)池可以是存儲在內(nèi)存中的數(shù)據(jù)集合,存儲了文本流中所有的實際文本數(shù)據(jù),每個字符均擁有唯一的物理地址。映射規(guī)則是數(shù)據(jù)的物理位置和邏輯索引間的關(guān)系規(guī)則,可以采用樹型結(jié)構(gòu)來表示,將每個文本內(nèi)容的邏輯索引與該文本內(nèi)容實際的物理地址進行一一對應,以便計算機根據(jù)某邏輯索引位置查詢到其實際物理地址,并從該物理地址下獲取實際文本內(nèi)容。 需要說明的是,映射規(guī)則也可以是圖形(map)結(jié)構(gòu)、鏈表結(jié)構(gòu),或者樹型(tree)結(jié)構(gòu),本申請并不對此進行限定,優(yōu)選樹型結(jié)構(gòu)。
errorwordlist列表:錯詞表,用于記錄文本流中某個范圍內(nèi)的所有錯詞的range。錯詞的range可以使用其在文本流中的邏輯索引表示,例如[起點索引位置,區(qū)間長度],與其在內(nèi)存中的實際物理地址無關(guān),后文提到的range均是如此。
validrange列表:已處理區(qū)間表,用于記錄已進行過拼寫檢查的文本范圍range,在此列表中記錄的range保證自己范圍內(nèi)所有的錯詞均已加入errorwordlist中。使用此表避免了對文本范圍的重復拼寫檢查處理,提高了效率。當文本流產(chǎn)生變化,如用戶輸入或刪除文本時,validrange中包含變化區(qū)域的所有range也可以同時更新,需要重新進行拼寫檢查的區(qū)域會從validrange列表中截斷或刪除。
marks列表:需要進行標記的錯詞表,用于存儲以預設(shè)標記方式進行標記的錯詞的range。系統(tǒng)會為所有存儲在此表中的區(qū)間繪制預設(shè)標記,如下劃線、波浪線,以提示用戶這些區(qū)間內(nèi)為錯詞。
errors列表:用來輔助完成右鍵菜單實現(xiàn)的列表,用于存儲可能在右鍵菜單中展示建議詞的所有可能錯詞的range。這些所有可能的錯詞中,最終會有一個錯詞被采納。
ignore列表:當次拼寫檢查過程中需要被忽略的錯詞range的列表。在當次軟件運行期間,存在于此列表中的range將在拼寫檢查時被忽略,視為無錯詞。
range:由起點位置索引(gcp)和區(qū)間長度(ccp)組成的表示一個區(qū)間的數(shù)據(jù)結(jié)構(gòu)。起點位置索引,可以是從整個文本流首位置開始編號,依次得到的邏輯位置索引。range并不是上述文本流系統(tǒng)的映射規(guī)則中提到的物理地址。需要說明的是,上述各個表中存儲的range,可以是以起點位置索引和區(qū)間長度相結(jié)合表示的,還可以是以起點位置索引和結(jié)束位置索引相結(jié)合表示的,本申請并不對此進行限定,優(yōu)選采用起點位置索引(gcp)和區(qū)間長度(ccp)相結(jié)合的表示法。
需要說明的是,下述各個實施例中提起的起點位置地址可以理解為上述rang解釋中提及的起點位置索引。
應用wps軟件中的wps文字應用軟件的拼寫檢查功能進行拼寫檢查的過程 如下:
步驟一:當檢測到文本流系統(tǒng)發(fā)生變化時,獲得改動的文本位置的起點位置地址(gcpa)。
步驟二:由于文本流變化,errorwordlist中該處所存儲的錯詞也已失效,通過上述改動的文本位置的起點位置地址gcpa,在errorwordlist找到包含該gcp的range并刪除。errorwordlist會在之后的步驟中更新。
步驟三:確定gcpa所在行,獲取所在行和該行后面每行的range,從文本流系統(tǒng)中獲取該行range的文本內(nèi)容,將該文本內(nèi)容進行分詞處理,對分詞處理結(jié)果進行篩選,刪除掉特殊符號,獲得每個干凈詞。
步驟四:每獲得一個干凈詞后,就將這個干凈詞與詞典庫中的正確詞進行比對,搜索該干凈詞是否在詞典庫中存在。如果不存在,則認為是一個錯詞。
步驟五:將錯詞的range放入errorwordlist,如果該詞不應被忽略,也放入marks列表中。
步驟六:啟動繪制每一頁,啟動繪制該頁的每行,當要繪制一行時,依次獲取該行的每個range,如果該range在marks列表中,則將該range的位置繪制為波浪線。
作為一個具體的實施方式,在繪制一行時,對該行做拼寫檢查,繪制第二行時,再對第二行進行拼寫檢查,分流了任務(wù),提高了效率。
步驟七:當用戶點擊右鍵希望調(diào)出右鍵菜單時,獲得用戶右鍵點擊位置的起點位置地址gcp。
步驟八:根據(jù)起點位置索引gcp,從errorwordlist中獲得錯詞range。
步驟九:根據(jù)錯詞的range,獲得該錯詞文本內(nèi)容,在詞典庫中查詢,獲得與錯詞相對應的可行列表。
步驟十:制備右鍵菜單時加載可行列表,并通過界面顯示給用戶查看。
作為一個具體的實施方式,只有在請求右鍵菜單時,才會對錯詞有哪些建議詞進行查詢和確定,提高了工作效率,和顯示效率。事實上,用戶修改頻繁,如果拼寫檢查的所有功能都提前做的話,很多檢查和建議的修改詞還沒有開始利用,就被丟棄了。
下面通過更加詳細的實施例對上述拼寫檢查過程進行介紹。
1、繪制標記的過程,即為錯詞標記紅色波浪線。
用戶輸入了新內(nèi)容或者進行了修改、刪除,或者將文本移動到其他位置,導致了文本流系統(tǒng)的數(shù)據(jù)池或者是映射規(guī)則發(fā)生了變化。當監(jiān)測到文本流系統(tǒng)有變化時,獲取改動的文本位置的起點位置地址gcp,然后取改動過位置的行,逐行進行分詞,檢查各個分詞是否有錯詞,如果有錯詞,就將錯詞放入mark表中,然后一頁一頁地,每頁的一行一行地將錯詞進行繪制,例如為錯詞加上波浪線。具體步驟如下。
步驟一:當檢測到文本流系統(tǒng)發(fā)生變化時,獲得改動的文本位置的起點位置地址(gcpa)。
即,用戶輸入了新內(nèi)容或者進行了修改、刪除,或者將文本移動到其他位置,導致了文本流系統(tǒng)的數(shù)據(jù)池或者是映射規(guī)則發(fā)生了變化,這時候開始獲得改動過的文本位置的起點位置地址,假設(shè)起點位置地址gcpa的值是20。
步驟二:通過上述改動的文本位置的起點位置地址(gcpa),在errorwordlist列表中查找各個range,確定該起點位置地址(gcpa)在不在任何一個range區(qū)間里。
假設(shè)errorwordlist列表中有一個rangea的值是[15,50],即rangea的起點位置地址(gcpb)是15,區(qū)間長度(ccpb)是50,那么確定gcpa就在該rangea的區(qū)間里。
如果起點位置地址(gcpa)在某個range區(qū)間里,則將起點位置地址(gcpa)變成該range的起點位置地址(gcpb)的值,即gcpa的值由20變?yōu)?5,然后刪除errorwordlist列表中對應的該range,即刪除rangea;如果有多個range中都找到了gcpa,那么這些range都做上述這種操作。如果起點位置地址(gcpa)不在任何一個range區(qū)間里,則不用對gcpa的值做修改。這么做的目的是修改過的字符段,需要重新進行拼寫檢查。此時errorwordlist中對該位置做的記錄已經(jīng)失效,因此從errorwordlist列表中刪除。如果拼寫檢查后仍然被認為是錯詞,那么再加入errorwordlist列表中即可。更新gcpa為gcpb的目的是為了步驟三的操作,因為如果gcpa已處在errorwordlist的一個區(qū)間中,則說明該區(qū)間是一個完整的詞,那么在更新validrange時該詞所在的整個范圍都應被更新,所以將起點 位置gcpa修改為gcpb,即它所在詞的詞首,的值。
步驟三:從validrange列表中的各個range中查找,確定是否有g(shù)cpa,如果有,那么就從此處截斷該range;如果沒有,則進入下一步。
假設(shè)gcpa的值是15,validrange列表中有一個rangeb的值是[0,16],那么確定validrange列表中找到了gcpa,然后將rangeb的值變?yōu)閇0,15]。就是validrange列表中的這個rangeb中,該rangeb位于該gcpa之后的那一小段就不要了,就像壁虎把尾巴切斷了一樣,只要前面那一截。如果有多個range中都找到了gcpa,那么這些range都做上述這種操作。
步驟四:取文檔中的一行內(nèi)容,放入分詞器進行分詞。
例如,文檔中的第一行的位置地址區(qū)間為[0,90],然后我們將[0,90]區(qū)間的文字內(nèi)容通過文本流系統(tǒng)獲得,然后一個一個進行分詞。分出一個詞來,就進入下一步,對這個詞檢查是否是錯詞;再分出來一個詞,將這個詞送入下一步流程。如果是并行系統(tǒng),可以同時處理,如果是串行的系統(tǒng),則一個分詞處理完畢后再繼續(xù)分下一個。
分詞的步驟為:
(1)分詞器會從當前剩余內(nèi)容的起始拆分出一個range,從文本流系統(tǒng)中獲取該range里的文本內(nèi)容;
(2)將該文本內(nèi)容,進行篩選,刪除掉特殊符號,獲得一個干凈詞,執(zhí)行步驟五;其中,特殊符號包括:空格、問號等不具拼寫檢查意義的符號們,干凈詞就是一個從形式上而非語義上合法的詞,比如是英文單詞或者是中文詞。
(3)在當前range下執(zhí)行步驟五、六、七。
(4)循環(huán)進行步驟(1),直到放入分詞器的每個文本內(nèi)容都被分完了。
步驟五:將干凈詞與詞典庫中的正確詞進行比對,搜索該干凈詞是否在詞典庫中存在。如果不存在,則認為是一個錯詞,執(zhí)行步驟六;如果存在,則認為是一個正確的詞,返回,再次執(zhí)行上述步驟四。
步驟六:將當前錯詞的range放入errorwordlist列表中。
步驟七:根據(jù)配置的ignore選項,檢查是否應該忽略該錯詞,例如是否忽略大寫、數(shù)字字母混合文字、網(wǎng)址等。如果需要忽略,則忽略該錯詞,然后返回再次執(zhí) 行步驟四;如果不能忽略,則將該錯詞的range放入marks列表中。
哪些是應該忽略的錯詞?比如忽略全部大寫的詞,忽略數(shù)字和字母混合文字的詞,修訂功能下刪除的內(nèi)容、新增的內(nèi)容,還有批注里面的內(nèi)容,這些詞不認為是錯詞,而是有特殊含義的詞,不準備進行拼寫檢查。
分詞工作是將整段文本拆分為一個一個詞的過程,當整行文本、整段文本或者整頁文本,或者是整篇文檔的全部文本分詞完畢沒有詞可以分的時候,開啟繪制工作,將mark表中的詞進行繪制,加上波浪線。優(yōu)選的,為了提高繪制速度,我們采用整行文本分詞完畢后就拿去繪制。還有優(yōu)選的方案是,僅對顯示器能夠顯示的內(nèi)容進行分詞、和繪制,不需要顯示的內(nèi)容先不進行繪制。繪制的時候,采用了用波浪線標記錯詞的方式。
2、繪制步驟
步驟一:啟動繪制一頁,執(zhí)行步驟二,然后啟動繪制第二頁,一直循環(huán)進行直到?jīng)]有需要繪制的頁為止。
需要繪制的頁,可以是顯示在屏幕上面的頁,當前時間不在屏幕上面顯示的頁,在本具體實施例中,不再進行繪制。
步驟二:啟動繪制該頁的一行,執(zhí)行步驟三,然后啟動繪制第二行,一直循環(huán)進行,直到?jīng)]有需要繪制的行為止。
步驟三:依次獲取該行的每個range。
步驟四:在validrange列表中查詢,上述每個range是否存在于validrange列表中;如果沒有存在于validrange列表中,證明該range還沒有進行過拼寫檢查處理或者內(nèi)容有更新需要重新進行拼寫檢查,那么就將文本流系統(tǒng)的當前區(qū)間放入分詞器執(zhí)行分詞,進行前述分詞步驟,重新獲取分詞,確認是否需要加入marks列表中,然后執(zhí)行步驟六;如果存在于validrange列表中,執(zhí)行步驟五。
步驟五:從errorwordlist列表中取出包含在該range里的所有錯詞。
步驟六:確定所有錯詞中的每一個錯詞,是否在ignore列表。該ignore列表是用戶指定的要忽略的詞匯。如果不在,表示該錯詞不能被忽略,就將該錯詞的range加入marks表。
步驟七:將marks表中的range位置繪制上標記。
3、準備右鍵菜單的過程
用戶在錯詞上面點擊右鍵,才會觸發(fā)下面的流程,準備右鍵菜單,在準備右鍵菜單的時候,才會將錯詞的建議詞查找并顯示出來。
步驟一:得到用戶右鍵點擊位置的起始索引位置gcp和區(qū)間長度ccp。
步驟二:在errorwordlist列表中查詢包含該區(qū)間的所有的錯詞,如果不應該被忽略,加入一個error列表中。
步驟三:如果error列表不為空,那么從中取出第一個錯詞的range。
由于機器可能將該位置的詞標記成了若干種可能的錯詞,所以error列表可能存在多個錯詞的range。其中,步驟二和步驟三可以由如下步驟替代“在errorwordlist列表中查詢,獲得在該區(qū)間中發(fā)現(xiàn)的第一個錯詞,然后獲得該錯詞的range”,該步驟較之步驟二和三更有效率。
步驟四:檢查和判斷該range是否應該被忽略,例如是否為修訂狀態(tài)的文本;如果不應被忽略,則進入步驟五。
步驟五:設(shè)置右鍵菜單的制備時,還需要加載拼寫檢查子項。
制備右鍵菜單的時候,系統(tǒng)會加載各個菜單子項,比如復制、粘貼等位于一個菜單子項,字體、段落等位于另一個菜單子項,拼寫檢查中推薦給用戶的正確詞列表位于一個菜單子項。如果需要加載該拼寫檢查子項,那么在右鍵菜單制備的時候,才去獲取并加載。
步驟六:顯示右鍵菜單,生成右鍵菜單子項。生成右鍵菜單子項包括如下(1)~(4)步驟。
(1)再次根據(jù)用戶的點擊位置,獲取錯詞的range。
獲取錯詞range的方法是:通過改動的文本位置的起點位置地址(gcpc),在errorwordlist列表中查找各個range,由于走到這一步說明必然此處有錯詞,所以會查找到包含此gcpc的rangec。
(2):從文本流中獲取該range的文本內(nèi)容,判斷文本內(nèi)容是否超過或者小于某個預設(shè)的閾值,如果是,則太長太短的文本內(nèi)容將被丟棄,不再執(zhí)行下述步驟;如果否,則繼續(xù)下一步。
(3):如果該文本內(nèi)容在cookie中,已經(jīng)存在有可行列表,那么直接用于生成菜單項列表,顯示給用戶查看;如果沒有cookie,或者cookie里面沒有該詞;則進入下一步??尚辛斜?,是該文本內(nèi)容對應的多個建議正確詞。
(4):獲取詞典庫,查詢可行列表并記錄到cookie中,生成菜單項列表,顯示給用戶查看。
4、替換為正確詞的過程
用戶從右鍵菜單中選擇了一個建議詞,將觸發(fā)下面的流程。比如用戶將錯詞wod,準備修改為word。
步驟一:獲得用戶選擇菜單項的內(nèi)容,即一個文本內(nèi)容“word”。
步驟二:設(shè)置選區(qū)為原錯詞的range,即wod的range值[5,3],位置地址是5,長度是3。
步驟三:替換選區(qū)內(nèi)容為建議詞,將文本流系統(tǒng)中的“wod”替換為“word”,此時詞word的range就變?yōu)閇5,4]。
步驟四:設(shè)置選區(qū)為建議詞之后那個位置,即將光標位置放置于該詞詞尾,即放置在word的后面。
5、初始化詞典庫的過程
當用戶設(shè)置了啟動拼寫檢查功能后,需要在第一次要使用拼寫檢查相關(guān)功能時進行初始化,準備創(chuàng)建各種字典和系統(tǒng)功能。初始化的過程可以是下面三個步驟。
步驟一:獲得當前語言的主詞典路徑和默認的自定義詞典路徑,掃描注冊表相關(guān)信息,查找是否有其他用戶自定義詞典,如果有也獲取相關(guān)路徑信息。
自定義詞典,是用戶手動添加的,或者是系統(tǒng)自帶的,或者是應用軟件自帶的系統(tǒng)等。
步驟二:分別添加這兩個詞典(主詞典和可能多個自定義詞典);
添加兩個詞典的方式是,創(chuàng)建詞典信息記錄,并將該詞典信息記錄放入詞典管理模塊的列表中,并放入注冊表中。
步驟三:wps應用軟件加載兩個詞典。
與上述拼寫檢查方法相對應,本申請實施例還提供了一種拼寫檢查裝置。
圖6為本申請實施例提供的一種拼寫檢查裝置的結(jié)構(gòu)示意圖,該裝置應用于客戶端,包括:
字符段確定模塊601,用于按照預設(shè)的字符段劃分規(guī)則,確定待展示頁面所包含字符對應的字符段;
字符位置獲得模塊602,用于獲得所確定的各個字符段中錯詞的字符位置;
錯詞標記模塊603,用于展示所確定的各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應字符段中的錯詞進行標記。
具體的,上述拼寫檢查裝置還可以包括:
字符位置緩存模塊,用于在所述字符位置獲得模塊602獲得字符位置之后,緩存所確定的各個字符段中錯詞的字符位置。
具體的,所述字符位置獲得模塊602可以包括:
字符段判斷子模塊,用于根據(jù)目標字符段的范圍,判斷是否已對所述目標字符段進行過拼寫檢查,其中,所述目標字符段為所確定的各個字符段中的任一字符段;
詞獲得子模塊,用于在所述字符段判斷子模塊的判斷結(jié)果為否的情況下,對所述目標字符段進行分詞處理,獲得所述目標字符段對應的詞;
第一字符位置獲得子模塊,用于根據(jù)預設(shè)的拼寫檢查規(guī)則,對所述目標字符段對應的詞進行拼寫檢查,確定所述目標字符段中的錯詞,進而獲得所述目標字符段中錯詞的字符位置;
第二字符位置獲得子模塊,用于在所述字符判斷子模塊的判斷結(jié)果為是的情況下,根據(jù)已緩存的字符位置中針對所述目標字符段的信息,獲得所述目標字符段中錯詞的字符位置。
具體的,所述第一字符位置獲得子模塊可以包括:
第一錯詞獲得單元,用于根據(jù)預設(shè)的詞庫對所述目標字符段對應的詞進行拼寫檢查,獲得所述目標字符段中的錯詞;
第一字符位置確定單元,用于將所述目標字符段的錯詞中不能忽略拼寫檢 查的錯詞的字符位置確定為所述目標字符段中錯詞的字符位置。
具體的,所述第二字符位置獲得子模塊可以包括:
第二錯詞獲得單元,用于根據(jù)已緩存的字符位置中針對所述目標字符段的信息,獲得所述目標字符段中的錯詞;
第二字符位置確定單元,用于將所述目標字符段的錯詞中不能忽略拼寫檢查的錯詞的字符位置確定為所述目標字符段中錯詞的字符位置。
具體的,所述詞獲得子模塊可以包括:
分詞處理單元,用于對所述目標字符段進行分詞處理;
過濾處理單元,用于按照預設(shè)的詞過濾規(guī)則對分詞處理結(jié)果進行過濾處理;
詞獲得單元,用于根據(jù)過濾處理結(jié)果獲得所述目標字符段對應的詞。
具體的,上述拼寫檢查裝置還可以包括:
展示指令接收模塊,用于接收建議詞展示指令,其中,所述建議詞展示指令中攜帶待校正字符段的范圍;
錯詞確定模塊,用于根據(jù)所述待校正字符段的范圍,確定所述待校正字符段中的錯詞;
建議詞獲得模塊,用于獲得所述待校正字符段中錯詞對應的建議詞;
建議詞展示模塊,用于展示所獲得的建議詞。
具體的,所述錯詞確定模塊可以包括:
范圍匹配子模塊,用于對所述待校正字符段的范圍和已緩存的字符位置進行匹配;
錯詞確定子模塊,用于根據(jù)匹配結(jié)果,確定所述待校正字符段中的錯詞。
具體的,上述拼寫檢查裝置還可以包括:
建議詞緩存模塊,用于在所述建議詞獲得模塊獲得建議詞之后,緩存所述待校正字符段中錯詞的字符位置以及所述待校正字符段中錯詞對應的建議詞。
具體的,所述建議詞獲得模塊可以包括:
建議詞判斷子模塊,用于根據(jù)所述待校正字符段中錯詞的字符位置,判斷是否已緩存所述待校正字符段中錯詞對應的建議詞;
第一建議詞獲得子模塊,用于在所述建議詞判斷子模塊的判斷結(jié)果為是的情況下,從已緩存的錯詞對應的建議詞中獲得所述待校正字符段中錯詞對應的建議詞;
第二建議詞獲得子模塊,用于在所述建議詞判斷子模塊的判斷結(jié)果為否的情況下,根據(jù)預設(shè)的詞庫獲得所述待校正字符段中錯詞對應的建議詞。
具體的,所述拼寫檢查裝置還可以包括:
長度判斷模塊,用于在所述錯詞確定模塊確定錯詞之后,判斷所述待校正字符段中錯詞的長度是否位于預設(shè)范圍內(nèi),若為是,觸發(fā)所述建議詞獲得模塊獲得建議詞。
具體的,所述拼寫檢查裝置還可以包括:
選擇指令接收模塊,用于接收建議詞選擇指令,其中,所述建議詞選擇指令中攜帶目標建議詞;
詞替換模塊,用于以所述目標建議詞替換所述目標建議詞對應的源詞,并展示所述目標建議詞。
具體的,所述拼寫檢查裝置還可以包括:
范圍獲得模塊,用于獲得改動字符段的范圍;
所述字符位置獲得模塊,還用于獲得所述改動字符段中錯詞的字符位置;
所述錯詞標記模塊,還用于以預設(shè)的標記形式對所述改動字符段中的錯詞進行標記,并根據(jù)所述改動字符段的范圍以及所述改動字符段中錯詞的字符位置,更新已緩存的錯詞的字符位置。
由以上可見,本實施例中,對于待展示頁面而言,獲得待展示頁面所包含字符對應的字符段中錯詞的字符位置,然后展示各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應字符段中的錯詞進行標記。與現(xiàn)有技術(shù)相比,本實施例提供的方案中,是在要展示待展示頁面之前對該頁面進行拼寫檢查,與現(xiàn)有技術(shù)中在加載文檔時對整個文檔進行拼寫檢查相比,加載文檔過程中拼寫檢查占用的時間變短,因此,能夠提高文檔加載速度,進而提 高文檔展示速度,提高了用戶體驗。
圖7為本申請實施例提供的一種拼寫檢查裝置的結(jié)構(gòu)示意圖,該裝置應用于服務(wù)器,包括:
字符段接收模塊701,用于接收客戶端發(fā)送的待展示頁面所包含字符對應的字符段,其中,所述字符段為所述客戶端根據(jù)預設(shè)的字符段劃分規(guī)則對所述待展示頁面進行劃分得到的;
字符位置獲得模塊702,用于獲得所接收的字符段中錯詞的字符位置;
字符位置發(fā)送模塊703,用于將各個字符段的字符位置發(fā)送至所述客戶端,以使得所述客戶端展示各個字符段,并根據(jù)每一字符段中錯詞的字符位置以預設(shè)的標記形式對相應對字符段中的錯詞進行標記。
具體的,上述拼寫檢查裝置還可以包括:
展示指令接收模塊,用于接收所述客戶端發(fā)送的建議詞展示指令,其中,所述建議詞展示指令中攜帶待校正字符段的范圍;
錯詞確定模塊,用于根據(jù)所述待校正字段段的范圍,確定所述待校正字符段中的錯詞;
建議詞獲得模塊,用于獲得所述待校正字符段中錯詞對應的建議詞;
建議詞發(fā)送模塊,用于將所獲得的建議詞發(fā)送至所述客戶端,以使得所述客戶端展示所獲得的建議詞。
具體的,上述拼寫檢查裝置還可以包括:
檢查指令接收模塊,用于接收針對改動字符段的檢查指令,其中,所述檢查指令中攜帶所述改動字符段的范圍;
所述字符位置獲得模塊,還用于獲得所述改動字符段中錯詞的字符位置;
所述字符位置發(fā)送模塊,還用于將所述改動字符段中錯詞的字符位置發(fā)送至所述客戶端,以使得所述客戶端根據(jù)所述改動字符段中錯詞的字符位置以預設(shè)的標記形式對錯詞進行標記。
由以上可見,本實施例提供的方案中,服務(wù)器獲得待展示頁面對應的字符段后,以字符段為單位獲得各個字符段中錯詞的字符位置,并發(fā)送給客戶端, 這樣不僅可以減輕客戶端的工作壓力,而且相對于現(xiàn)有技術(shù)中在加載文檔時對整個文檔進行拼寫檢查相比,加載文檔過程中拼寫檢查占用的時間變短,因此,還能夠提高文檔加載速度,進而提高文檔展示速度,提高了用戶體驗。
對于裝置實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述方法實施方式中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于計算機可讀取存儲介質(zhì)中,這里所稱得的存儲介質(zhì),如:rom/ram、磁碟、光盤等。
以上所述僅為本申請的較佳實施例而已,并非用于限定本申請的保護范圍。凡在本申請的精神和原則之內(nèi)所作的任何修改、等同替換、改進等,均包含在本申請的保護范圍內(nèi)。