浏览 3453 次
锁定老帖子 主题:我对二元分词的构想与实践
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-16
最后修改:2008-11-20
另外应该还有一个新闻表,就不列了。 CREATE TABLE IF NOT EXISTS fenci ( word int not null default 0 comment '词的unicode码组合', news_id int not null default 0 comment '新闻的id', news_type int not null default 0 comment '新闻的类型', primary key (word, news_id, news_type) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='分词表'; 注意表的3联合主键可以避免重复的数据。 这里重要的是把一个词如“你好”转成一个数字, 我采用的方法: "你"的十六进制4f60 十进制20320 "好"的十六进制597d 十进制22909 你好就编码成4f60597d十六进制对应的这个十进制数1331714429。 下面是把一句话分解成若干个词,可指定参数,限制长短,如30, 方法如下, 第一个字符和第二个字符组词,序号是0, 第二个字符和第三个字符组测,序号是1, 。。。直到序号29(包括在内), 总共30个词,包含了31个字符。 对于每个词,首先正则判断是否每个字都是汉字,网上的例子多的很,什么数字,字母,标点都不要,必须 两个字都是汉字。 这样筛了一遍后, 还可以再筛一遍,把包含如下字(应该有更多):“了”“吧”“吗”。“一”。。的词再筛掉。 然后去掉重复的词, 对于剩下的每个词,先转成数字,往表插数据,word,新闻id,新闻类型。最好能屏蔽数据库错误, 因为表有主键约束。 当用户提交查询数据时,获取其查询的前两个汉字,转成数字,到表中查 至于分词,可以在服务器空闲的时候做. 附件是二元分词的类。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-07-17
引用 当用户提交查询数据时,获取其查询的前两个汉字,转成数字,到表中查 如果用户查询的字符不止两个呢?如果包含英文呢? |
|
返回顶楼 | |
发表时间:2008-07-17
用户输入的查询超过两个字符,我就取前两个。
如果这前两个字符包含英文,我就不给他查 |
|
返回顶楼 | |
发表时间:2008-07-17
xieye 写道 用户输入的查询超过两个字符,我就取前两个。
如果这前两个字符包含英文,我就不给他查 如果是这样,那么这种方案适用于什么场合呢? |
|
返回顶楼 | |
发表时间:2008-07-18
做一个简单的网站。
或者做一个复杂的网站。但是人手少。所以先快速实现原型,就象我现在这种情况。 程序是可以扩展的。 |
|
返回顶楼 | |
发表时间:2008-07-18
为什么不用空格分词,然后做全文索引(mysql的)?
|
|
返回顶楼 | |
发表时间:2008-07-20
因为我们都说汉语,不说英语的,感谢捧场。
|
|
返回顶楼 | |