我对二元分词的构想与实践

表只有一个,记录词和新闻记录的对应关系
另外应该还有一个新闻表,就不列了。

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,新闻类型。最好能屏蔽数据库错误,
因为表有主键约束。


当用户提交查询数据时,获取其查询的前两个汉字,转成数字,到表中查

至于分词,可以在服务器空闲的时候做.
附件是二元分词的类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值