开源啦~~ 傻鸡鸡 分词程序 Beta 0.1版

       傻鸡鸡 分词程序是用 Python2.6+  语言开发的,可跑平台有: win 、 Linux 、unix 等。 理论上支持所有的语言作为客户端。


傻鸡鸡分词 下载地址:http://download.csdn.net/source/3517192



傻鸡鸡分词程序有什么特点?

1、兼容多平台: win 、 linux、unix 等平台,实测平台有: win、centos、freebsd 。

2、根据不同的平台自动选择异步I/O并发模型: epoll 、 kqueue 。 ps : win 下使用 select 

3、能有效利用多核,因为并发模型是以  多进程 + 异步结合。

4、不限语言。如果你要分词的应用是PHP写的 ? Python 写的? JAVA 写的? 随便你~~  

5、.....  想不出来了....


疑问? 并发性能如何?

推荐使用  linux 和 unix 系统。因为”傻鸡鸡“分词程序使用的是 异步I/O并发模型  (linux 的 epoll 和  freebsd 的 kqueue )。而且对于多核服务器,也做了处理。能比较有效的利用多核。


如何使用?

傻鸡鸡 分词程序之有两个文件1、confi.py  2、shajj.py     



confi.py  是 配置文件,里面可配置 默认监听端口号、默认启动进程数(建议与服务器内核数相等)、要加载的字典、日志文件,配置文件可以有多个,配置文件名字可自己命名。

#encoding=utf-8

#监听端口
listen_port = 9911

#进程数
default_process = 8

#加载字典文件
load_dict = ['dict_extra_da.txt']  #如果你有多个字典,可以在上面写多个

#日志记录
log_file = 'D:\shajj.txt'



 

shajj.py 是核心文件,分词靠她了。


首先启动分词程序:


命令:  python  shajj.py  配置文件名

例如:

#python shajj.py conf

运行以后,需要稍等一会,字典正在加载进内存,只在启动需要。当看到

dict load.....

load dict ok!

字典加载完了以后,那么服务端这边就算完成了。那么我们项目就可以使用这个 傻鸡鸡 来进行分词了


给出一个简单的PHP语言使用例子:

<?php
$search = '我是傻鸡鸡'; //我们要进行分词的句子
$fp = fsockopen("192.168.1.241", 9911); //连接到傻鸡鸡分词,我们配置里监听的是9911端口
fwrite($fp,$search);	
$content = '';
while(!feof($fp)){
	$content .= fread($fp, 1024); 
}
fclose($fp);

echo($content); //打印分词结果

?> 


刷下浏览器就可以看到返回的结果是一份 XML (所以为啥说,理论上所有语言都能使用傻鸡鸡分词  哇哈)

  <?xml version="1.0" encoding="utf-8" ?> 
- <document>
- <word>
  <keyword>我是</keyword> 
  <info>bh</info> 
  </word>
  </document>

看   节点  word :表示的是得到的分词。  info 节点返回的是:这个词的词性(这个可以在字典里面自定义拉:比如名字、比如动词、再比如商家、本地人物等自定义词性)

        刚我们要进行分词的句子不是 “ 我是傻鸡鸡”吗 怎么 “傻鸡鸡”  没有返回呢?  因为 “傻鸡鸡” 这个词不存在于字典当中,现在我们在看下字典。我们把“傻鸡鸡”这个也放到字典里面,让她也成为一个词。这样在进行分词的时候。“傻鸡鸡”就被当成词返回了。


我们看下词典是如何定义的:

我是	bh
傻鸡鸡	fenci
瓦萨比	waka

中间可以用空格或者tab隔开。好了。傻鸡鸡 放进了词典。那么我再试一次分词,看如何

  <?xml version="1.0" encoding="utf-8" ?> 
- <document>
- <word>
  <keyword>我是</keyword> 
  <info>bh</info> 
  </word>
- <word>
  <keyword>傻鸡鸡</keyword> 
  <info>fenci</info> 
  </word>
  </document>

好了" 傻鸡鸡“ 也返回了。


和php-cgi 相比较下性能。在并发100下,同时开启6进程。同一台服务器看下啥情况:


nginx + php-cgi 。一共开启了6个php-cgi 进程



开始并发:

webbench -c 100 -t 30 http://192.168.1.241/info.php        ps: info.php  里面就 phpinfo() 而已




看下考试结果




接下来看下傻鸡鸡的:

开了6个 进程。 其中有一个是wait  父进程,它不干活的~~~收割子进程而已




看下过程如何:

哎呀怎么CPU负载那么大。。。  其实是因为这个服务器问题。这个是普通双核服务器。我们和上面的php-cgi 比对下~ 嗯嗯~淡定淡定




考试成绩如下:



这个只是一个试验版本,存在的问题还是有的。不建议用在生产环境...  有时间我会不断更新和维护D~~


下一版本要解决的问题:

1、字典的 BOM 导致分词异常问题。

2、字典里可以添加注释

3、对于中文英文数字混杂的情况

4、弄个可用的基础词典

.......

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值