〔摘 要〕由于世界上不同地區(qū)使用的漢字編碼技術(shù)不同,要想通過中文搜索引擎來充分挖掘和利用網(wǎng)上的這些中文信息資源,就需要對計算機(jī)的信息處理和漢字編碼及其轉(zhuǎn)換技術(shù)有所了解。本文從漢字內(nèi)碼轉(zhuǎn)換原理、漢字內(nèi)碼類型、中文搜索引擎的內(nèi)碼轉(zhuǎn)換特點(diǎn)分析了漢字編碼及其轉(zhuǎn)換的處理方法。
〔關(guān)鍵詞〕漢字內(nèi)碼;內(nèi)碼轉(zhuǎn)換;漢字編碼;中文搜索引擎
〔中圖分類號〕H127 〔文獻(xiàn)標(biāo)識碼〕B 〔文章編號〕1008-0821(2009)03-0134-05
隨著Internet在全球范圍的普及和發(fā)展,網(wǎng)上的中文信息資源有了迅速增加,中文搜索引擎的數(shù)量也呈同步增長之勢。由于世界上不同地區(qū)使用的漢字編碼技術(shù)不同,要想通過中文搜索引擎來充分挖掘和利用網(wǎng)上的這些中文信息資源,就需要對計算機(jī)的信息處理和漢字編碼及其轉(zhuǎn)換技術(shù)有所了解。
1 漢字內(nèi)碼轉(zhuǎn)換原理
漢字編碼轉(zhuǎn)換實(shí)際操作難度很大,首先是字母和漢字的編碼不一樣,英文字母基于ASCII編碼,而漢字是GB碼,在編譯器詞法分析的階段就需要碼制的轉(zhuǎn)換,這其中的原理和分析是研究編碼的高層技術(shù)人員才可能實(shí)現(xiàn)的,其次是編譯器的實(shí)現(xiàn)。
字符信息在計算機(jī)里必須以一組機(jī)器能識別的二進(jìn)制編碼形式存在,現(xiàn)在被國際上普遍接受的是美國國家信息交換標(biāo)準(zhǔn)代碼(American Standard Code for Information Interchange),即通常所說的ASCII碼。1個ASCII碼占有7bit(1個二進(jìn)制位作為1個bit),ASCII碼字符集最多可以包括數(shù)字、字母、通用符號和動作控制符在內(nèi)的128種字符,1個英文字母通常用1個ASCII碼來表示。
計算機(jī)以8bit為1個字節(jié)(byte)。字節(jié)是計算機(jī)中最基本的尋址單元,1個字節(jié)存放1個ASCII碼后還多1位,這個多余的最高位通常置為0。如果1個文件中各字節(jié)的最高位為0,則被稱為標(biāo)推ASCII碼文件,即文本文件。
隨著信息技術(shù)的發(fā)展,為了擴(kuò)大計算機(jī)處理信息的范圍和能力,又推出了一種擴(kuò)展的8位ASCII碼。它將原ASCII碼的最高位由0置換為1,1個字節(jié)可以表示的字符由原來的128種擴(kuò)大為256種,這種含有擴(kuò)展ASCII碼的文件被稱為二進(jìn)制文件。
漢字作為一種字符,也是以一組彼此有別的二進(jìn)制編碼進(jìn)入計算機(jī)的。由于漢字的數(shù)目繁多,僅用1個字節(jié)即8位二進(jìn)制數(shù)已無法表示,故采用2個字節(jié)即通常所稱的雙字節(jié))來表示。采用這種方法共可以表示2562=65536個漢字,但在實(shí)際處理過程中,漢字編碼比西文字母要復(fù)雜得多。為了使計算機(jī)能夠接受漢字,首先要將漢字轉(zhuǎn)換成計算機(jī)能夠接受的編碼,稱之為漢字輸入碼,然后在計算機(jī)內(nèi)部將輸入碼轉(zhuǎn)換成漢字內(nèi)碼,進(jìn)行信息加工處理,再將漢字內(nèi)碼轉(zhuǎn)換成漢字字形碼在屏幕上顯示或打印。在不同的漢字處理系統(tǒng)之間交換信息,還需要漢字交換碼。
內(nèi)碼轉(zhuǎn)換就是在不同字符集之間建立一種對應(yīng)關(guān)系。以GBK2,Big5(簡繁體都可)為例。如:“讓”字,在GBK中編碼是C8C3。如果我們將GBK碼表中的字符變成Big5碼格式,則C8C3位 上的應(yīng)該是“讓”字的Big5碼字符“琵”(琵字不是GBK中的琵,而是“讓”字的Big5碼漢 字在GBK環(huán)境中顯示結(jié)果)。這樣我們讀出要轉(zhuǎn)換的文字,在GBK(已經(jīng)轉(zhuǎn)換成Big5格式)碼 表中找到它的位置,取出該位置上的字符,將原字符替換即可。
2 漢字內(nèi)碼類型
綜上所知,電腦中所有的數(shù)據(jù)都是以0和1保存的,按不同的數(shù)據(jù)操作,可以得到不同的結(jié)果。對于顯示英文操作,由于英文字母種類很少,只需要8位(一字節(jié))即可。而對于中文,常用卻有6 000以上,于是我們的DOS前輩想了一個辦法,就是將ASCII表的高128個很少用到的數(shù)值以2個為1組來表示漢字,即漢字的內(nèi)碼。而剩下的低128位則留給英文字符使用,即英文的內(nèi)碼。
漢字內(nèi)碼是任何一個中文處理系統(tǒng)所必備的,同一種漢字內(nèi)碼可以有多種漢字輸入碼與之對應(yīng),而不同的中文處理系統(tǒng)所選擇的漢字內(nèi)碼一般也不同。目前較為流行的漢字內(nèi)碼有GB碼、Big5碼、CJK碼和GBK碼等。
2.1 GB碼
GB碼是“中華人民共和國國家標(biāo)準(zhǔn)信息交換用漢字編碼”的簡稱。
全稱是GB2312-80《信息交換用漢字編碼字符集基本集》,1980年發(fā)布,是中文信息處理的國家標(biāo)準(zhǔn),在大陸及海外使用簡體中文的地區(qū)(如新加坡等)是強(qiáng)制使用的惟一中文編碼。P-Windows3.2和蘋果OS就是以GB2312為基本漢字編碼,Windows 95/98則以GBK為基本漢字編碼、但兼容支持GB2312。GB碼共收錄6 763個簡體漢字、682個符號,其中漢字部分:一級字3755,以拼音排序,二級字3008,以偏旁排序。其他俄文字母、日文假名、拉丁字母、希臘字母、漢語拼音等圖形符號682個。GB2312是一個簡體漢字系統(tǒng)的中文內(nèi)碼,常簡稱為國標(biāo)碼、GB碼等。該標(biāo)準(zhǔn)的制定和應(yīng)用為規(guī)范、推動中文信息化進(jìn)程起了很大作用。
1990年又制定了繁體字的編碼標(biāo)準(zhǔn)GB12345-90《信息交換用漢字編碼字符集第一輔助集》,目的在于規(guī)范必須使用繁體字的各種場合,以及古籍整理等。該標(biāo)準(zhǔn)共收錄6 866個漢字(比GB2312多103個字,其它廠商的字庫大多不包括這些字),純繁體的字大概有2 200余個。(2312集與12345集不是相交的。一個是簡體,一個是繁體)。其他俄文字母、日文假名、拉丁字母、希臘字母、漢語拼音等圖形符號717個。除了新增加的103個漢字和35個圖形符號外,其余的圖形符號均與GB2312—80中的圖形符號相同,漢字則是GB2312—80簡體漢字的繁體形式,GBl2345—90又稱為GBFT(國標(biāo)繁體)。
2.2 Big5碼
Big5碼是流行于中國臺灣和香港等地的一個繁體漢字編碼方案,通常被稱為大五碼。它并不是—個法定的編碼方案、但卻被廣泛應(yīng)用于Internet之中,成為一種事實(shí)的行業(yè)標(biāo)準(zhǔn)。Big5碼共收錄各種字符13 461個,包括漢字13 053個,各種圖形符號408個,其中常用漢字5 401個,次常用漢字7 552個,均按筆畫/部首順序排列。Big5(JT)是Big5繁體漢字的簡體形式。
在IE中,進(jìn)入Big5碼網(wǎng)站(如:臺灣網(wǎng)站),如果安裝有Big5字符集支持,IE會將Big5網(wǎng)頁轉(zhuǎn)換成GBK繁體顯示,沒有則是亂碼。IE以GBK繁體顯示時,在網(wǎng)頁中輸入的漢字應(yīng)當(dāng)是GBK繁體,以Big5碼顯示時(亂碼),要輸入Big5碼字符。
2.3 CJK碼
CJK:中日韓統(tǒng)一表意文字(CJK Unified Ideographs),目的是要把分別來自中文、日文、韓文、越文中,本質(zhì)、意義相同、形狀一樣或稍異的表意文字(主要為漢字,但也有仿漢字如日本國字、韓國獨(dú)有漢字、越南的喃字)于ISO10646及Unicode標(biāo)準(zhǔn)內(nèi)賦予相同編碼。
國家標(biāo)準(zhǔn)GB13000.1(《CJK統(tǒng)一漢字編碼字符集》)完全等同于國際標(biāo)準(zhǔn)ISOl0646.1—1993(《通用多八位編碼字符集(UCS)》),ISO 10646.1。《GB13000.1》中最重要的也經(jīng)常被采用的是其雙字節(jié)形式的基本多文種平面。在這65 536個碼位的空間中,幾乎定義了全球所有國家和地區(qū)使用的各種語言文字和符號。其中從0x4E00到0x9FA5的連續(xù)區(qū)域包含了20 902個來自中國(包括臺灣)、日本、韓國的漢字20 902個,這些漢字被稱之為CJK(Chinese Japanese Korean)漢字。所以、這一標(biāo)淮又稱為CJK碼。CJK是《GB2312-80》、《Big5》等字符集的超集。
2.4 CBK碼
CBK碼的全稱為《漢字內(nèi)碼規(guī)范》(Chinese InternaI Code Specification),又常稱為《漢字內(nèi)碼擴(kuò)展規(guī)范》,由中華人民共和國全國信息技術(shù)標(biāo)準(zhǔn)化委員會于1995年12月1日制訂,并將其作為技術(shù)規(guī)范的指導(dǎo)性文件發(fā)布和實(shí)施。
CBK編碼(俗稱大字符集)等同于UCS的新的中文編碼擴(kuò)展國家標(biāo)準(zhǔn)。該編碼標(biāo)準(zhǔn)兼容GB2312,共收錄漢字21 003個、符號883個,并提供1 894個造字碼位,簡、繁體字融于一庫。Windows95/98簡體中文版的字庫表層編碼采用的就是CBK,通過CBK與UCS之間一一對應(yīng)的碼表與底層字庫聯(lián)系。其第一字節(jié)的值在16進(jìn)制的81~FE之間,第二字節(jié)在40~FE,除去xx7F一線。
CBK與GB2312國家標(biāo)準(zhǔn)兼容,并支持ISO10646.1993國際標(biāo)準(zhǔn),共收錄各種字符21 886個,其中包括21 003個漢字的筒、繁體和883個各種圖形符號。
2.5 Unicode編碼(Universal Multiple Octet Coded Character Set)
國際標(biāo)準(zhǔn)組織于1984年4月成立ISO/IEC JTC1/SC2/WG2工作組,針對各國文字、符號進(jìn)行統(tǒng)一性編碼。1991年美國跨國公司成立Unicode Consortium,并于1991年10月與WG2達(dá)成協(xié)議,采用同一編碼字集。目前Unicode是采用16位編碼體系,其字符集內(nèi)容與ISO10646的BMP(Basic Multilingual Plane)相同。Unicode于1992年6月通過DIS(Draf International Standard),目前版本V2.0于1996公布,內(nèi)容包含符號6 811個,漢字20 902個,韓文拼音11 172個,造字區(qū)6 400個,保留20 249個,共計65 534個。
用戶要使用Internet中不同漢字內(nèi)碼的中文信息資源,安裝一個能支持多內(nèi)碼轉(zhuǎn)換的中文處理系統(tǒng)是必不可少的。這個中文處理系統(tǒng)至少應(yīng)能同時支持GB碼和Big5碼。如再能支持CJK碼和CBK碼則更為理想。
3 中文搜索引擎的內(nèi)碼轉(zhuǎn)換特點(diǎn)
中文搜索引擎與西文搜索引擎在使用方面的差異與搜索引擎本身所采用的核心技術(shù)的關(guān)系并不大,兩者之間的差異更主要的是由于漢語自身的特點(diǎn)所導(dǎo)致的,以下幾個方面在使用中文搜索引擎時尤其要引起注意。
3.1 不同漢字內(nèi)碼系統(tǒng)造成的亂碼
用戶要使用中文搜索引擎檢索Internet的中文信息資源.通常需要在自己的計算機(jī)系統(tǒng)上加裝支持多內(nèi)碼漢字的中文處理系統(tǒng),然而麻煩也就因此而產(chǎn)生。有的中文系統(tǒng)只有顯示功能而沒有輸入功能,這時如果僅僅使用以分類目錄為主的中文搜索引擎,尚可以應(yīng)付,但如果要進(jìn)行全文檢索,即通過輸入關(guān)鍵詞進(jìn)行檢索,由于系統(tǒng)自身沒有輸入功能就有可能無法進(jìn)行。中文系統(tǒng)采用的是GB碼,日文系統(tǒng)采用的是JIS碼。內(nèi)碼是以123456789和26個英文數(shù)字所組成。
譬如,中文系統(tǒng)里,內(nèi)碼(0000)對應(yīng)漢字是(一),而在日文系統(tǒng)里,內(nèi)碼(0000)對應(yīng)漢字是(十)的話,中文的漢字“一個”,在日文系統(tǒng)就可能變成了“十萬”。GB碼的漢字,在日文系統(tǒng)下,就變成了亂七八糟的符號和文字,而導(dǎo)致亂碼。
亂碼形成原因一般是由于文檔采用的字符集,系統(tǒng)不支持造成的。繁體中文的文檔顯示在簡體中文系統(tǒng)下,或者相反的情況,就會造成文檔顯示時亂碼。只要內(nèi)碼轉(zhuǎn)換正確,如把原本是繁體的內(nèi)碼,轉(zhuǎn)換為簡體內(nèi)碼(或者相反),即可消除亂碼,有以下四種解決辦法。
3.1.1 網(wǎng)頁、文本和文檔文件亂碼的消除
網(wǎng)頁亂碼是瀏覽器(如IE等)對HTML網(wǎng)頁解釋時形成的。如果在網(wǎng)頁的代碼中有形如:
……的語句,瀏覽器在顯示此頁時,就會出現(xiàn)亂碼。因?yàn)闉g覽器會將此頁語種辨認(rèn)為“歐洲語系”。解決的辦法是將語種“ISO-8859-1”改為GB2312,如果是繁體網(wǎng)頁則改為BIG5。另一種解決辦法是不修改網(wǎng)頁代碼,事先為瀏覽器安裝多語言支持包(例如在安裝IE時要安裝多語言支持包),這樣在瀏覽網(wǎng)頁出現(xiàn)亂碼時,就可以在瀏覽器中選擇菜單欄下的“查看”/“編碼”/“自動選擇”/簡體中文(GB2312),如為繁體中文則選擇“查看”/“編碼”/“自動選擇”/繁體中文(BIG5),其它語言依此類推選擇相應(yīng)的語系,這樣可消除網(wǎng)頁亂碼現(xiàn)象。3.1.2 利用多內(nèi)碼顯示平臺來轉(zhuǎn)換內(nèi)碼
常用多內(nèi)碼顯示平臺有:“南極星”:可自動識別GB碼、BIG5碼,用簡體或繁體顯示,并能做到同屏顯示GB碼和BIG5碼,對日文、韓文亦能正確顯示。下載地址:http:∥www.njstar.com.au/njwin/?!八耐ɡ健?支持了包括GB、BIG5、HZ、日韓編碼、UNICOD等17種漢字內(nèi)碼,也開始支持預(yù)覽功能,并且增加了諸如“增刪空格”、“插入禁排空格”等小而有用的功能,是網(wǎng)友的好幫手。下載地址:http:∥www.srsnet.com。
3.1.3 使用Word2003/XP轉(zhuǎn)換內(nèi)碼
Word2003/XP支持眾多的語言,可以正確顯示非Unicode類型的文本文件,單擊“工具”菜單下的“語言”/設(shè)置語言,你可以把默認(rèn)語言設(shè)置成非中文,例如日語,這樣Word就可以正確顯示日文了。當(dāng)然你也可以用它進(jìn)行簡體中文與繁體中文之間的轉(zhuǎn)換工作,如果文件有亂碼,你轉(zhuǎn)換一下即可消除。例如要把繁體中文轉(zhuǎn)換為簡體中文,方法是:選擇要轉(zhuǎn)換內(nèi)碼的文件,在彈出的對話框中,選擇“其他編碼”中的“繁體中文(BIG5)”一項,打開此文件時就不會出現(xiàn)亂碼。
3.1.4 使用Word2003/XP無亂碼保存
在Word2003/XP中,當(dāng)保存時選擇“文件”中的“另存為”,先存為“WORD”文檔,存盤后打開再存為純文本等其他格式;或者在菜單欄中選擇“工具/語言/中文簡繁轉(zhuǎn)換”,內(nèi)碼轉(zhuǎn)換以后再保存。
3.1.5 使用內(nèi)碼轉(zhuǎn)換工具
除此之外,使用內(nèi)碼轉(zhuǎn)換工具也可以消除此類亂碼,你只要對BIG5(繁體中文)和GB2312(國標(biāo)碼、簡體中文)進(jìn)行相互轉(zhuǎn)換即可實(shí)現(xiàn)。
3.1.6 使用WPS2000轉(zhuǎn)換內(nèi)碼
WPS2000也能轉(zhuǎn)換內(nèi)碼,支持GB2312、BIG5、GBK等3種主要的漢字編碼,并可在輸出RTF、TXT、HTM格式文件時對內(nèi)碼進(jìn)行轉(zhuǎn)換。
3.2 中文單詞的分隔
搜索引擎查詢的前提是將查詢條件分解成若干關(guān)鍵詞,同時一些關(guān)鍵詞表示文檔。對英文而言,一個單詞就是一個詞,英語單詞的分隔通??梢杂每崭駚肀硎?,但中文就沒有這么簡單,有時你根本無法加空格,有時加了空格反而麻煩。主要問題是中文詞與詞之間沒有界定符,需要人為切分。此外漢語中存在大量的歧義現(xiàn)象,對幾個字分詞可能有好多種結(jié)果。因此,可以根據(jù)語料庫進(jìn)行總結(jié),獲得每個詞的出現(xiàn)概率以及詞與詞的關(guān)聯(lián)信息,再使用正向和逆向最大匹配法進(jìn)行細(xì)切分,排除歧義,提高分詞的準(zhǔn)確性。簡單的分詞往往會歪曲查詢的真正含義。如對于“東方明珠”一詞,一般的中文搜索引擎都將其作為“東方”和“明珠”兩個單詞來檢索,而對于”花木蘭”,則將其拆分為“花木”和“蘭”。如,查詢條件為“中國人”,若不能正確地分詞,按“中國”、“人”、“中國人”等3個關(guān)鍵詞去搜索,這樣搜索結(jié)果的質(zhì)量就可想而知了。因此,可以根據(jù)語料庫進(jìn)行總結(jié),獲得每個詞的出現(xiàn)概率以及詞與詞的關(guān)聯(lián)信息,就可能有效地排除各種歧義,大幅度提高分詞的準(zhǔn)確性,從而準(zhǔn)確地表述查詢請求和文檔信息。對于這類詞匯。建議用戶采用高級檢索中的完全匹配方式比較好。
3.3 中文狀態(tài)下的特殊符號輸入
用戶在使用高級檢索功能進(jìn)行檢索時,常常需要使用—些諸如“AND”,“OR”,“NOT”,“十”,“一”,“丨”之類的特殊操作符號。此時不管用戶安裝的是什么中文處理系統(tǒng),使用的是什么中文輸入方法,在輸入這些特殊操作符號時,請一律將系統(tǒng)切換至西文或在中文半角狀態(tài)下進(jìn)行,輸入空格時亦是如此。
3.4 不同地區(qū)漢語詞匯的表達(dá)和使用方面的差異
由于歷史和政治方面的原團(tuán),世界上不同地區(qū)的華人在中文詞匯的表達(dá)和使用方面的差異以及在外語翻譯方面的不統(tǒng)一,對中文搜索引擎的檢索結(jié)果具有直接的影響。用戶對此方面應(yīng)引起重視。一些介紹中國大陸與臺灣地區(qū)在漢語詞匯方面差異的有關(guān)資料可見《常見中國大陸與臺灣地區(qū)語詞對照表》。
http:∥www.sivs.chc.edu.tw/library/870428/dl.htm
http:∥www.cis.nctu.edu.tw/~is84007/EPsoftwares/Books/index.html
此外,簡體漢字與繁體漢字的一一對應(yīng),一多對應(yīng)、多一對應(yīng)等問題在使用時,尤其是在使用關(guān)鍵詞檢索時特別要注意。
如果用戶要用本人的簡體中文系統(tǒng)訪問對方的繁體中文搜索引擎、雖然用戶可以通過相關(guān)軟件將對方的繁體中文自動轉(zhuǎn)換為簡體中文顯示出來,但如果用戶要輸入關(guān)鍵詞進(jìn)行檢索,則必須采用繁體中文輸入,反之亦然。這里面的情形比較復(fù)雜。用戶只有在實(shí)踐中不斷摸索、總結(jié)和提高。
參考文獻(xiàn)
[1]http:∥zhidao.baidu.com/question/5940020.html[EB].
[2]張興華.搜索引擎的機(jī)理、實(shí)現(xiàn)技術(shù)及發(fā)展趨勢[J].現(xiàn)代情報,2003,23(12):66-68,70.
[3]武助宇,劉文清.中文搜索引擎發(fā)展趨勢[J].高校圖書館工作,2003,23(2):11-13.
[4]林進(jìn)道,周峰,等.GB 13000.1——BIG5漢字內(nèi)碼智能轉(zhuǎn)換系統(tǒng)[J].中國傳媒科技,2004,(11):52-54.
[5]李培峰,朱巧明,等.多文種環(huán)境下漢字內(nèi)碼識別算法的研究[J].中文信息學(xué)報,2004,18(2):73-79.
[6]鞠冬生.VB中實(shí)現(xiàn)漢字內(nèi)碼與區(qū)位碼的轉(zhuǎn)換[J].電腦開發(fā)與應(yīng)用,2001,14(11):30,32.
[7]王秀珍.GBK內(nèi)碼轉(zhuǎn)換的設(shè)計與實(shí)踐[J].長春師范學(xué)院學(xué)報,2006,25(4):66-67.
[8]張曉培,李祥.從Unicode到GBK的內(nèi)碼轉(zhuǎn)換[J].微計算機(jī)應(yīng)用,2006,27(6):757-759.