阿不都克里木·玉素甫,楊 琴,王亮亮
(1.新疆教育學(xué)院 現(xiàn)代教育技術(shù)中心,新疆 烏魯木齊 830043;2.新疆教育云技術(shù)與資源實(shí)驗(yàn)室,新疆 烏魯木齊 830043;3.新疆教育學(xué)院 信息科學(xué)與技術(shù)學(xué)院,新疆 烏魯木齊 830043)
常用字是現(xiàn)代漢語(yǔ)中經(jīng)常用到的字,即字頻和使用度最高的字。隨著社會(huì)的發(fā)展,常用字的使用頻率也在不斷的變化。而常用字最基本的選字原則就是根據(jù)字的使用頻度,選取使用頻度高的字。除此之外還有其他的選字原則,如:根據(jù)字的使用分布選取分布均勻的字,選取構(gòu)字能力和構(gòu)詞能力強(qiáng)的字,根據(jù)漢字的實(shí)際使用情況斟酌取舍等。目前計(jì)算機(jī)選字主要采用統(tǒng)計(jì)字頻的方法,并以字頻高低逐一排序。字頻指的是漢字的使用頻率,即某個(gè)漢字在抽樣統(tǒng)計(jì)資料里出現(xiàn)的次數(shù)在統(tǒng)計(jì)總字?jǐn)?shù)中所占的比例。字頻統(tǒng)計(jì)對(duì)識(shí)字教學(xué)、字書(shū)編纂以及漢字的機(jī)械處理和信息處理等都十分重要。1988年1月,國(guó)家語(yǔ)委和國(guó)家教委聯(lián)合發(fā)布《現(xiàn)代漢語(yǔ)常用字表》[1],共收錄常用字3 500個(gè),其中常用字2 500個(gè),次常用字1 000個(gè)。1988年3月發(fā)布《現(xiàn)代漢語(yǔ)通用字表》[1]共收錄通用字7 000個(gè)(包括《現(xiàn)代漢語(yǔ)常用字表》的3 500字),這兩種表都是以字頻的高低來(lái)排序的。為了了解常用字在文本中的使用情況,以計(jì)算機(jī)信息處理的方式來(lái)獲取統(tǒng)計(jì)信息,并且本研究作為新疆高校教育資源安全審查信息化系統(tǒng)研究項(xiàng)目的基礎(chǔ)研究部分,主要研究了常用字在電子文本中的覆蓋率統(tǒng)計(jì),使用率統(tǒng)計(jì)和字頻統(tǒng)計(jì)的數(shù)學(xué)算法以及計(jì)算機(jī)程序算法,并根據(jù)得出的研究方法研發(fā)常用字覆蓋率統(tǒng)計(jì)分析系統(tǒng),最后做一個(gè)統(tǒng)計(jì)實(shí)驗(yàn),即分別通過(guò)《現(xiàn)代漢語(yǔ)常用字表》中的頻度最高的581個(gè)常用字[2],1 000個(gè)常用字和2 500個(gè)常用字對(duì)電子文本進(jìn)行統(tǒng)計(jì)分析,并獲取覆蓋率、使用率、字頻統(tǒng)計(jì)信息,以此了解文本中常用字的使用情況。
覆蓋率統(tǒng)計(jì)的主要任務(wù)就是統(tǒng)計(jì)出給定文本中常用字的覆蓋情況,根據(jù)統(tǒng)計(jì)信息結(jié)果就可以知道常用字在文本中的覆蓋率或者說(shuō)是比率。為此在前期研究中[3]首先將電子文本中非漢字元素取出后,再對(duì)所剩下的漢字元素進(jìn)行統(tǒng)計(jì)分析。但是在計(jì)算機(jī)處理中該方法還不是很實(shí)用。因?yàn)闉榱讼瘸槿∥谋局谐藵h字以外的元素,對(duì)于計(jì)算機(jī)來(lái)說(shuō)需要先定義大量字符元素,以便計(jì)算機(jī)可以識(shí)別并分類(lèi)。如:數(shù)字、各種符號(hào)以及其他未知符號(hào)等。這對(duì)實(shí)現(xiàn)計(jì)算機(jī)程序算法帶來(lái)了一些困難,也有可能由于程序無(wú)法識(shí)別文字字符產(chǎn)生統(tǒng)計(jì)誤差等問(wèn)題。因此對(duì)前期所使用的數(shù)學(xué)公式進(jìn)行優(yōu)化處理,以便適用于計(jì)算機(jī)程序算法[4-6]的實(shí)現(xiàn)。
覆蓋率是閱讀教材里被包含的在字表里的漢字與閱讀教材里的全部漢字的比率[7]。在優(yōu)化后的算法中不再對(duì)文本中的非漢字字符進(jìn)行統(tǒng)計(jì)和抽取操作,而是直接對(duì)文本中的漢字字符[8]進(jìn)行統(tǒng)計(jì),這也更符合計(jì)算機(jī)的處理。具體數(shù)學(xué)表達(dá)式如式(1)所示。
(1)
其中,F(xiàn)為常用字在電子文本中的出現(xiàn)次數(shù),L為文本的長(zhǎng)度;C為常用字,Ci為常用字表中下標(biāo)為i的漢字,N為常用字字?jǐn)?shù);T為電子文本,Tj為電子文本中下標(biāo)為j的漢字。出現(xiàn)次數(shù)F主要是通過(guò)常用字和電子文本中的漢字逐一對(duì)比后獲取的統(tǒng)計(jì)結(jié)果,即當(dāng)Ci=Tj時(shí),X(Ci,Tj)=1,當(dāng)Ci≠Tj時(shí),X(Ci,Tj)=0,X函數(shù)的值將會(huì)累計(jì)計(jì)算,運(yùn)算結(jié)束后作為F的值。
(1)程序處理流程。
根據(jù)式(1)可以通過(guò)計(jì)算機(jī)程序來(lái)實(shí)現(xiàn)覆蓋率統(tǒng)計(jì)。首先將程序處理流程定義如下:
第一步:統(tǒng)計(jì)出文本中漢字的個(gè)數(shù)L。
第二步:統(tǒng)計(jì)常用字在文本中的出現(xiàn)次數(shù)F,具體流程如圖1所示。
圖1 常用字出現(xiàn)次數(shù)統(tǒng)計(jì)流程
該流程圖中進(jìn)行循環(huán)操作將對(duì)常用字和電子文本中的漢字逐一進(jìn)行對(duì)比,符合條件C[i]=T[j]時(shí)X的值加1,不符合時(shí)先判斷j 第三步:根據(jù)式(1)計(jì)算覆蓋率。 (2)程序算法的實(shí)現(xiàn)。 根據(jù)式(1)和程序處理流程,覆蓋率統(tǒng)計(jì)核心Java[9-11]程序算法如下: intX; //統(tǒng)計(jì)常用字在文本中的出現(xiàn)次數(shù) public int getCiShu_tongji(String text) {//獲取出現(xiàn)次數(shù)的函數(shù) X=0; //出現(xiàn)次數(shù)賦值為0 for (inti=0;i for (intj=0;j if (C[i].equals(T.charAt(j)+"")) {X++;} }} return X; //返回出現(xiàn)次數(shù)的值 } (3)程序統(tǒng)計(jì)流程示例。 下面將通過(guò)一個(gè)簡(jiǎn)單示例來(lái)說(shuō)明程序覆蓋率統(tǒng)計(jì)的過(guò)程,首先需要一個(gè)常用字表和文本。為了簡(jiǎn)化,只抽取了頻度最高的14個(gè)常用字。具體覆蓋率統(tǒng)計(jì)示例如下: 常用字:的,一,是,不,了,在,有,人,這,上,大,來(lái),和,我 文本:這些是不是你的? 可以算出文本長(zhǎng)度L的值為7,常用字N的值為14。那么首先計(jì)算常用字在文本中的出現(xiàn)次數(shù)F,具體流程如表1所示。 表1 覆蓋率統(tǒng)計(jì)流程示例 上述表1所示,常用字與文本中的漢字逐一對(duì)比后的常用字出現(xiàn)次數(shù)F的值為5,那么根據(jù)覆蓋率統(tǒng)計(jì)公式計(jì)算結(jié)果如下: 常用字使用率是指電子文本中所出現(xiàn)的常用字在常用字中的比率。 通過(guò)統(tǒng)計(jì)電子文本中的常用字使用率,可以了解到文本中所使用的常用字使用比率,具體數(shù)學(xué)表達(dá)式如式(2)所示。 (2) 其中,G為文本中常用字使用次數(shù)(該值不計(jì)算重復(fù)出現(xiàn)的常用字),N為常用字?jǐn)?shù),Ci為常用字表中下標(biāo)為i的漢字,Tj為電子文本中下標(biāo)為j的漢字。電子文本中使用次數(shù)G是通過(guò)常用字與電子文本逐一對(duì)比后獲得的結(jié)果,但與式(1)的出現(xiàn)次數(shù)F還有一定區(qū)別。G在統(tǒng)計(jì)過(guò)程中不計(jì)算重復(fù)出現(xiàn)的常用字,因?yàn)槌S米峙c電子文本漢字對(duì)比時(shí),只要有一個(gè)符合條件,它就代表該常用字已經(jīng)使用,因此無(wú)需與下一個(gè)文本漢字對(duì)比。即當(dāng)Ci=Tj時(shí),Y(Ci,Tj)=1且j=L,當(dāng)Ci≠Tj時(shí),Y(Ci,Tj)=0。j=L表示一旦符合條件將文本T的下標(biāo)j賦值為文本長(zhǎng)度L,此時(shí)就會(huì)重新開(kāi)始從下一個(gè)常用字進(jìn)行對(duì)比,避免了重復(fù)計(jì)算,保證了統(tǒng)計(jì)結(jié)果的準(zhǔn)確性。 (1)程序處理流程。 根據(jù)式(2)使用率程序處理流程定義如下: 第一步:獲取常用字字?jǐn)?shù)N。 第二步:計(jì)算文本中的常用字使用次數(shù)G,流程如圖2所示。 圖2 常用字使用次數(shù)統(tǒng)計(jì)流程 圖2中單個(gè)常用字C[i]在循環(huán)對(duì)比過(guò)程中如果滿足條件C[i]=T[j],首先將Y的值加1,再用break命令結(jié)束內(nèi)循環(huán),這樣就可以保證每個(gè)常用字統(tǒng)計(jì)結(jié)果不重復(fù)。然后i的值加1,再?gòu)南乱粋€(gè)常用字C[i]開(kāi)始統(tǒng)計(jì)。 第三步:根據(jù)式(2)計(jì)算使用率。 (2)程序算法的實(shí)現(xiàn)。 以下為使用率統(tǒng)計(jì)核心算法。 intX; //統(tǒng)計(jì)常用字在文本中的個(gè)數(shù) public int getShiYong_tongji(String text) {//獲取使用次數(shù)的函數(shù) Y=0; //使用次數(shù)賦值為0 for (inti=0;i for (intj=0;j if (C[i].equals(T.charAt(j)+ "")) {Y++; break; } }} returnY;//返回出現(xiàn)次數(shù)的值 } 字頻是指每個(gè)常用字在文本中的出現(xiàn)頻度[12-14]。 為了計(jì)算字頻,首先需要統(tǒng)計(jì)每一個(gè)常用字在文本中的出現(xiàn)次數(shù),然后再將每個(gè)漢字的出現(xiàn)次數(shù)除以文本長(zhǎng)度,具體字頻統(tǒng)計(jì)數(shù)學(xué)表達(dá)式如式(3)所示: (3) 其中,Pi為每個(gè)常用字在文本中的出現(xiàn)次數(shù),Ci為常用字表中下標(biāo)為i的漢字,Tj為電子文本中下標(biāo)為j的漢字。每次對(duì)比后X(Ci,Tj)累計(jì)值作為Pi的值,再計(jì)算下一個(gè)常用字Pi的值,即當(dāng)Ci=Tj時(shí),X(Ci,Tj)=1,當(dāng)Ci≠Tj時(shí),X(Ci,Tj)=0,直到j(luò) (1)程序處理流程。 字頻統(tǒng)計(jì)程序流程如圖3所示。 圖3 常用字字頻統(tǒng)計(jì)流程 在此流程中首先還是要對(duì)單個(gè)常用字C[i]進(jìn)行逐一對(duì)比,如果滿足條件C[i]=T[j],X的值加1并將該值賦給負(fù)責(zé)存儲(chǔ)每個(gè)常用字頻度的數(shù)組P[i],然后判斷下一個(gè)條件j (2)程序算法的實(shí)現(xiàn)。 字頻統(tǒng)計(jì)核心程序算法如下: intX; //統(tǒng)計(jì)每個(gè)常用字在文本中的個(gè)數(shù) int[]P=new int[N];//該數(shù)組用于獲取下標(biāo)為i的常用字在文本中的使用次數(shù)。 public int[] getPinDu_tongji(String text) { X=0; //使用次數(shù)賦值為0。 for (inti=0;i for (intj=0;j if (C[i].equals(T.charAt(j) + "")) {X++;} } P[i]=X; //將使用次數(shù)X的值賦給數(shù)組P X=0;} returnX; //返回出現(xiàn)次數(shù)的值 } 服務(wù)器操作系統(tǒng):CentOS 7; 使用編程語(yǔ)言:Java,JavaScript,XML[15-16]; 使用開(kāi)發(fā)工具:Eclipse; 系統(tǒng)框架:主要采用B/S架構(gòu)。 系統(tǒng)可以根據(jù)輸入的文本進(jìn)行統(tǒng)計(jì)分析,可以統(tǒng)計(jì)文本中常用字的覆蓋率、使用率、字頻等??筛鶕?jù)需要選擇目標(biāo)常用字,即可以選常用581、1 000、2 500個(gè)常用字表對(duì)文本進(jìn)行統(tǒng)計(jì)分析。圖4為常用字覆蓋率統(tǒng)計(jì)分析系統(tǒng)的字頻統(tǒng)計(jì)功能界面。 圖4 常用字在文本中的字頻統(tǒng)計(jì) 為了測(cè)試系統(tǒng),以四大名著和新華網(wǎng)、人民網(wǎng)共116篇文章作為統(tǒng)計(jì)對(duì)象,分別統(tǒng)計(jì)分析了字頻最高的581個(gè)常用字、1 000個(gè)常用字和2 500個(gè)常用字在這些統(tǒng)計(jì)對(duì)象中的覆蓋率、使用率以及字頻,具體統(tǒng)計(jì)結(jié)果如表2所示。 表2 常用字統(tǒng)計(jì)分析 那么再來(lái)看一下統(tǒng)計(jì)對(duì)象中常用字字頻的情況。在統(tǒng)計(jì)結(jié)果中只抽取了使用頻度最高的前10個(gè)漢字,具體統(tǒng)計(jì)結(jié)果如表3所示。 表3 字頻統(tǒng)計(jì) 從表3中可以看出,根據(jù)不同的統(tǒng)計(jì)對(duì)象常用字的使用頻度也會(huì)有所不同。 對(duì)常用字在教育資源電子文本中的覆蓋率統(tǒng)計(jì),使用率統(tǒng)計(jì),頻度統(tǒng)計(jì)相關(guān)的統(tǒng)計(jì)算法進(jìn)行了研究,并結(jié)合相關(guān)程序算法,以計(jì)算機(jī)程序的方式來(lái)實(shí)現(xiàn)一個(gè)常用字覆蓋率統(tǒng)計(jì)分析系統(tǒng),并通過(guò)統(tǒng)計(jì)分析系統(tǒng)對(duì)四大名著和新華網(wǎng)、人民網(wǎng)116篇文章中所使用的常用字進(jìn)行了統(tǒng)計(jì)分析。結(jié)果表明常用字在文本中的覆蓋率和使用率相當(dāng)高,即581個(gè)常用字在文本中的覆蓋率平均在68.9%以上,1 000個(gè)常用字在文本中的覆蓋率平均在81.4%以上,2 500個(gè)常用字在文本中的覆蓋率平均在96%以上,并且常用字在不同統(tǒng)計(jì)對(duì)象文本中的使用頻度也會(huì)有所不同。因此常用字不管是在生活中還是在工作中都無(wú)處不在,對(duì)人們的學(xué)習(xí)、生活、工作起著至關(guān)重要的作用。2 使用率統(tǒng)計(jì)算法
2.1 使用率統(tǒng)計(jì)數(shù)學(xué)算法
2.2 使用率統(tǒng)計(jì)程序算法的實(shí)現(xiàn)
3 字頻統(tǒng)計(jì)算法
3.1 字頻統(tǒng)計(jì)數(shù)學(xué)算法
3.2 字頻統(tǒng)計(jì)程序算法的實(shí)現(xiàn)
4 常用字覆蓋率統(tǒng)計(jì)分析系統(tǒng)
4.1 系統(tǒng)框架
4.2 系統(tǒng)功能
5 常用字統(tǒng)計(jì)實(shí)驗(yàn)
6 結(jié)束語(yǔ)