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


參考文獻
[1]http:∥zhidao.baidu.com/question/5940020.html[EB].
[2]張興華.搜索引擎的機理、實現技術及發展趨勢[J].現代情報,2003,23(12):66-68,70.
[3]武助宇,劉文清.中文搜索引擎發展趨勢[J].高校圖書館工作,2003,23(2):11-13.
[4]林進道,周峰,等.GB 13000.1——BIG5漢字內碼智能轉換系統[J].中國傳媒科技,2004,(11):52-54.
[5]李培峰,朱巧明,等.多文種環境下漢字內碼識別算法的研究[J].中文信息學報,2004,18(2):73-79.
[6]鞠冬生.VB中實現漢字內碼與區位碼的轉換[J].電腦開發與應用,2001,14(11):30,32.
[7]王秀珍.GBK內碼轉換的設計與實踐[J].長春師范學院學報,2006,25(4):66-67.
[8]張曉培,李祥.從Unicode到GBK的內碼轉換[J].微計算機應用,2006,27(6):757-759.