November 17, 2010 分类: ASM/C/C++, PHP/MySQL     作者: hoverlees     留言: 8

中文分词,是程序对中文语义的分析的第一步,把一个句子按语法语义分成多个词语,便可方便进行下一步的处理。中文分词在中文搜索引擎方面广泛应用,还可以应用在聊天机器人、信息自动搜集等很多方面。

记得我的毕业设计就是中文搜索引擎,当时自己只用PHP实现了正向最大匹配分词法,效率不是很高,而且分出来的词也不是很精确(不过最简单,哈哈)。但对于一个毕业设计来说,这样已经足够了。但要对一个实际应用来说,分词肯定要越精准越好。中科院的ICTCLAS中文分词库,应该是最好的选择。

这个组件是因为PHP需要用到ictclas分词功能,但官方只提供dll版本,那就有两种方式,一种是封装成php模块,另一种就是封装成com组件了。既然是运行在windows上的,就决定装成com了。

组件提供3函数,init,split,exit.具体看例子一下子就知道了。

使用方法就是先注册:

regsvr32 ictclas.dll

然后再把你购买的中科院的ictclas30.dll拷到C:/windows 目录下(环境变量path里的其它目录也可以),我这儿不提供ictclas30.dll了,你可以自己去买授权或者下载通过开源版的程序封装成的dll。

PHP调用示例:

<?php
try{
	$c=new COM('ICTCLAS.Split');
	$c->init('C:/dict');  //初始化ictclas,参数为字典configure.xml和Data目录所在的文件夹全路径。它们可以从中科院下载的ictclas库里找到。
	$result=$c->split('我叫张三,我不是上海人');  //分词。返回带标记字符串
	$nameArray=array();
	$addressArray=array();
	preg_match_all('/([\S]*)\/([\S]*)/',$result,$out);  //提取分词信息
	print_r($out);
	$c->exit();  //最后释放ictclas资源。
}
catch(Exception $e){
	echo "ERROR:COM not supported!";
}
?>

当然这个com也可以用在windows上其它脚本语言上。点击这里下组件ICTCLAS COM封装

这次是因为PHP需要用到ictclas分词功能,但官方只提供dll版本,那就有两种方式,一种是封装成php模块,另一种就是封装成com组件了。既然是运行在windows上的,就决定封装成com了。

使用方法就是先注册:

然后再把你下载的ictclas.dll拷到C:/windows 目录下(其它在环境变量path里的目录也可以),我这儿不提供ictclas.dll了,你可以自己去买授权或者其它什么方式。

PHP调用示例:

$com=new COM(‘ICTCLAS.SPLIT’);

$com->init();

$str=$com->split();

$com->exit();

运行结果:

当然这个com也可以用在windows上其它脚本语言上。

呵呵,有了它,用PHP做的聊天机器人就会更智能了!因为应该没有比ictclas更强的分词库了吧。。。。

标签: , ,
访客留言[谢谢!]
Inch
真的很好用啊,谢谢!
2011-05-20 11:10:39
无名氏
恩,是啊。我刚出道呢。朋友现在哪高就啊?你的好多资料很不错哈,不介意的话,我会经常来的哈,顶顶顶~~~
2011-12-27 10:14:35
hoverlees
我在上海,经常回无锡玩.欢迎常来看看.呵呵~
2011-12-27 20:02:03
无名氏
我输出的乱码 怎么解决啊
2011-12-19 14:54:47
hoverlees
PHP保存成GBK编码,同时浏览器查看编码设置成GBK.
2011-12-19 18:27:20
无名氏
楼主,解决啦,谢谢。ictclas2011的COM封装,怎么写哈,你这上面有教程么
2011-12-21 17:20:19
hoverlees
COM怎么写很简单,关键要知道ICTCLAS怎么使用才是。 我这儿没有编写COM组件的教程,微软的IDE里新建一个ATL工程,COM的模板就出来了。 博客里调用COM的教程有一些,有兴趣可以看看~
2011-12-21 18:19:38
hoverlees
朋友来自无锡啊,我在江南大学上过学。呵呵。
2011-12-21 18:24:14
我来留个言

您的电子邮箱我一定会保密的哦!

昵称

邮箱

评论内容