中科院分词系统学习笔记(一)

  这几天开始做毕业设计准备,先从分词开始吧。争取尽快把分词这部分做完。目标是把开源的linux/unix的分词代码移植到solaris,并改成ANSI C。 ICTCLAS系统中使用了索引表来存储词,这个索引表并没有采用哈希函数,而是基于GB2312编码规则,因为GB2312中一共有6768个汉字(6763个汉字+5个空字符)。所以定义了6768个数组。每个数组元素链接了这个字开头的词。 那么关于GB2312需要了解一下。 GB2312标准共收录6763个汉字,其中一级汉字3755个,二级汉字3008个;同时,GB2312收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄罗斯语西里尔字母在内的682个全形字符。 GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖99.75%的使用频率。GB2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符号。这种表示方式也称为区位码。 01-09区为特殊符号。 16-55区为一级汉字,按拼音排序。 56-87区为二级汉字,按部首/笔画排序。 10-15区及88-94区则未有编码。 节结构在使用GB2312的程序中,通常采用EUC储存方法,以便兼容于ASCII。EUC名为Extended Unix Code,是一个使用8位编码来表示字符的方法。 它使用了一些兼容于ISO/IEC 2022区位码的94x94编码表,把每个区位加上0xA0来表示,以便兼容于ASCII。 举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是1601。字每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”,第二个字节称为“低位字节”。 “高位字节”使用了0xA1-0xF7(把01-87区的区号加上0xA0),“低位字节”使用了0xA1-0xFE(把01-94加上0xA0)。例如“啊”字在大多数程序中,会以0xB0A1储存。(与区位码对比:0xB0=0xA0+16,0xA1=0xA0+1)。 所以GB2312编码中汉字区码的十进制是从176到247,位码是从161到255.之所以存储了6763小于82*94=6768,是因为在区码为215,位码为250-254之间共五个编码没有汉字编码,所以6768-5=6763个。 ICTCLAS系统中,判断字符类型的时候,采用的都是十进制的比较。这样一开始使我迷糊了。程序中,先是判断第一个字符,也就是将个字符与区码进行比较,下面附录中的区码在实际存储中,前面要加0xA0(十进制为160)。这样就可以明白了,比如判断是数字的时候,查表可以知道数字位于第3区,也就是区码应该为0xA0+3 = 163,位码应该是从0xA0+16 = 176 到 0xA0 + 25 = 185。判断区码后,判断它的下一个字节,就是把这个字节与位码进行比较。 国标第01区   0 1 2 3 4 5 6 7 8 9  0     、 。 · ˉ ˇ ¨ 〃 々  1 — ~ ‖ … ‘ ’ “ ” 〔 〕  2 〈 〉 《 》 「 」 『 』 〖 〗  3 【 】 ± × ÷ ∶ ∧ ∨ ∑ ∏  4 ∪ ∩ ∈ ∷ √ ⊥ ∥ ∠ ⌒ ⊙  5 ∫ ∮ ≡ ≌ ≈ ∽ ∝ ≠ ≮ ≯  6 ≤ ≥ ∞ ∵ ∴ ♂ ♀ ° ′ ″  7 ℃ $ ¤ ¢ £ ‰ § № ☆ ★  8 ○ ● ◎ ◇ ◆ □ ■ △ ▲ ※  9 → ← ↑ ↓ 〓  国标第02区   0 1 2 3 4 5 6 7 8 9  0   ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ  1 ⅹ       ⒈ ⒉ ⒊  2 ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔  3 ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⑴ ⑵ ⑶  4 ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀  5 ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ① ② ③  6 ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩     ㈠  7 ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩   8  Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ  9 Ⅹ Ⅺ Ⅻ    国标第03区   0 1 2 3 4 5 6 7 8 9  0   ! " # ¥ % & ' ( )  1 * + , - . / 0 1 2 3  2 4 5 6 7 8 9 : ; < =  3 > ? @ A B C D E F G  4 H I J K L M N O P Q  5 R S T U V W X Y Z [  6 \ ] ^ _ ` a b c d e  7 f g h i j k l m n o  8 p q r s t u v w x y  9 z { | }  ̄  国标第04区   0 1 2 3 4 5 6 7 8 9  0   ぁ あ ぃ い ぅ う ぇ え ぉ  1 お か が き ぎ く ぐ け げ こ  2 ご さ ざ し じ す ず せ ぜ そ  3 ぞ た だ ち ぢ っ つ づ て で  4 と ど な に ぬ ね の は ば ぱ  5 ひ び ぴ ふ ぶ ぷ へ べ ぺ ほ  6 ぼ ぽ ま み む め も ゃ や ゅ  7 ゆ ょ よ ら り る れ ろ ゎ わ  8 ゐ ゑ を ん        9       国标第05区   0 1 2 3 4 5 6 7 8 9  0   ァ ア ィ イ ゥ ウ ェ エ ォ  1 オ カ ガ キ ギ ク グ ケ ゲ コ  2 ゴ サ ザ シ ジ ス ズ セ ゼ ソ  3 ゾ タ ダ チ ヂ ッ ツ ヅ テ デ  4 ト ド ナ ニ ヌ ネ ノ ハ バ パ  5 ヒ ビ ピ フ ブ プ ヘ ベ ペ ホ  6 ボ ポ マ ミ ム メ モ ャ ヤ ュ  7 ユ ョ ヨ ラ リ ル レ ロ ヮ ワ  8 ヰ ヱ ヲ ン ヴ ヵ ヶ     9       国标第06区   0 1 2 3 4 5 6 7 8 9  0   Α Β Γ Δ Ε Ζ Η Θ Ι  1 Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ  2 Υ Φ Χ Ψ Ω       3    α β γ δ ε ζ η  4 θ ι κ λ μ ν ξ ο π ρ  5 σ τ υ φ χ ψ ω     6     ︵ ︶ ︹ ︺ ︿ ﹀  7 ︽ ︾ ﹁ ﹂ ﹃ ﹄   ︻ ︼  8 ︷ ︸ ︱  ︳ ︴      9       国标第07区   0 1 2 3 4 5 6 7 8 9  0   А Б В Г Д Е Ё Ж З  1 И Й К Л М Н О П Р С  2 Т У Ф Х Ц Ч Ш Щ Ъ Ы  3 Ь Э Ю Я        4          а  5 б в г д е ё ж з и й  6 к л м н о п р с т у  7 ф х ц ч ш щ ъ ы ь э  8 ю я          9       国标第08区(由于Mircosoft的原因,本区在此状态下排不齐)   0 1 2 3 4 5 6 7 8 9  0   ā á  ǎ à  ē é  ě è ī  1 í  ǐ ì  ō ó  ǒ ò  ū ú ǔ  2 ù  ǖ ǘ ǚ ǜ  ü ê  ɑ  ń  3 ň  ɡ     ㄅ ㄆ ㄇ  4 ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ ㄐ ㄑ  5 ㄒ ㄓ ㄔ ㄕ ㄖ ㄗ ㄘ ㄙ ㄚ ㄛ  6 ㄜ ㄝ ㄞ ㄟ ㄠ ㄡ ㄢ ㄣ ㄤ ㄥ  7 ㄦ ㄧ ㄨ ㄩ        8            9       国标第09区   0 1 2 3 4 5 6 7 8 9  0       ─ ━ │ ┃ ┄ ┅  1 ┆ ┇ ┈ ┉ ┊ ┋ ┌ ┍ ┎ ┏  2 ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙  3 ┚ ┛ ├ ┝ ┞ ┟ ┠ ┡ ┢ ┣  4 ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫ ┬ ┭  5 ┮ ┯ ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷  6 ┸ ┹ ┺ ┻ ┼ ┽ ┾ ┿ ╀ ╁  7 ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋  8            9         第16区至55区为一级汉字,以拼音排序,共计3755字   国标第 16区   0 1 2 3 4 5 6 7 8 9  0   啊 阿 埃 挨 哎 唉 哀 皑 癌  1 蔼 矮 艾 碍 爱 隘 鞍 氨 安 俺  2 按 暗 岸 胺 案 肮 昂 盎 凹 敖  3 熬 翱 袄 傲 奥 懊 澳 芭 捌 扒  4 叭 吧 笆 八 疤 巴 拔 跋 靶 把  5 耙 坝 霸 罢 爸 白 柏 百 摆 佰  6 败 拜 稗 斑 班 搬 扳 般 颁 板  7 版 扮 拌 伴 瓣 半 办 绊 邦 帮  8 梆 榜 膀 绑 棒 磅 蚌 镑 傍 谤  9 苞 胞 包 褒 剥  国标第 17区   0 1 2 3 4 5 6 7 8 9  0   薄 雹 保 堡 饱 宝 抱 报 暴  1 豹 鲍 爆 杯 碑 悲 卑 北 辈 背  2 贝 钡 倍 狈 备 惫 焙 被 奔 苯  3 本 笨 崩 绷 甭 泵 蹦 迸 逼 鼻  4 比 鄙 笔 彼 碧 蓖 蔽 毕 毙 毖  5 币 庇 痹 闭 敝 弊 必 辟 壁 臂  6 避 陛 鞭 边 编 贬 扁 便 变 卞  7 辨 辩 辫 遍 标 彪 膘 表 鳖 憋  8 别 瘪 彬 斌 濒 滨 宾 摈 兵 冰  9 柄 丙 秉 饼 炳  国标第 18区   0 1 2 3 4 5 6 7 8 9  0   病 并 玻 菠 播 拨 钵 波 博  1 勃 搏 铂 箔 伯 帛 舶 脖 膊 渤  2 泊 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值