2005-07-04 19:49:06 · Author: 五帝 · Tagged with:
PHP,
Search Engine
中文分词想做到这样就差不多了,毕竟是自己用。目的就是搜索“土人”不要把“风土人情”相关的内容搜出来就行。
接下来该做英文分词了。也不管动词时态和名词复数等问题了,能分开就行。因为全英文的数据基本都是程序代码。
把中英文分词都做完后,就该考虑如何建立索引了。
2005-07-04 15:06:48 · Author: 五帝 · Tagged with:
PHP,
Word Seg
程序改动:不使用 PHP 中的 Multi-Byte String 函数,自己判断汉字
分词方法:逆向最大匹配分词法,只对中文字符进行分词
词库大小:73,226 个词
编写语言:PHP
分词速度:
99% 中文 —— 211 KB —— 2s —— 105.50KB/s (+ 92.32KB/s)
45% 中文 —— 2, 100 KB —— 22s —— 95.45KB/s (+ 66.69KB/s)
00% 中文 —— 413 KB —— 6s —— 68.83KB/s (+ 9.83KB/s)
2005-07-04 14:38:05 · Author: 五帝 · Tagged with:
Computer
GBK 采用双字节表示,总体编码范围为 0x8140 - 0xFEFE,首字节在 0x81 - 0xFE 之间,尾字节在 0x40 - 0xFE 之间,剔除 0xXX7F 一条线。总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。
全部编码分为三大部分:
1. 汉字区。包括:
A. GB 2312 汉字区。即 GBK/2: 0xB0A1 - 0xF7FE。收录 GB 2312 汉字 6763 个,按原顺序排列。
B. GB 13000.1 扩充汉字区。包括:
(1) GBK/3: 0x8140 - 0xA0FE。收录 GB 13000.1 中的 CJK 汉字 6080 个。
(2) GBK/4: 0xAA40 - 0xFEA0。收录 CJK 汉字和增补的汉字 8160 个。
2. 图形符号区。包括:
A. GB 2312 非汉字符号区。即 GBK/1: 0xA1A1 - 0xA9FE。其中除 GB 2312 的符号外,还有 10 个小写罗马数字和 GB 12345 增补的符号。计符号 717 个。
B. GB 13000.1 扩充非汉字区。即 GBK/5: 0xA840 - 0xA9A0。BIG-5 非汉字符号、结构符和“○”排列在此区。计符号 166 个。
3. 用户自定义区:分为(1)(2)(3)三个小区。
(1) 0xAAA1 - 0xAFFE,码位 564 个。
(2) 0xF8A1 - 0xFEFE,码位 658 个。
(3) 0xA140 - 0xA7A0,码位 672 个。
第(3)区尽管对用户开放,但限制使用,因为不排除未来在此区域增补新字符的可能性。
2005-07-02 19:41:07 · Author: 五帝 · Tagged with:
PHP,
Word Seg
为了避免出现乱码,我的中文分词程序使用了 PHP 中的 Multi-Byte String 函数。先通过 mb_strlen() 函数取得字符串的长度,然后利用 mb_substr() 把每个字符都存到一个数组里,再进行匹配。
这样效率就会降低很多。如果不使用 Multi-Byte String 函数,而是逐个判断每个字符是单字节还是双字节的,效率应该可以提高不少。
待有时间再研究汉字编码吧。
2005-07-02 12:31:14 · Author: 五帝 · Tagged with:
PHP,
Word Seg
分词方法:逆向最大匹配分词法,只对中文字符进行分词
词库大小:73,226 个词(增加了 29,289 个词,但去除了单字和四字以上的词语)
编写语言:PHP
分词速度:
99% 中文 —— 211 KB —— 16s —— 13.18KB/s (+ 10.08KB/s)
45% 中文 —— 2, 100 KB —— 73s —— 28.76KB/s (+ 23.82KB/s)
00% 中文 —— 413 KB —— 7s —— 59.00KB/s (- 9.83KB/s)