PHP中文分词引擎scws使用说明

时间:18-06-02 栏目:网站开发 作者:admin 评论:0 点击: 8,362 次

由于项目需要用到中文分词,特地在网上搜寻一番,发现scws这个中文分词引擎调用比较方便,支持api调用、php无扩展调用及php扩展方式调用等。
还支持自定义词典等用法。
以下是php无扩展调用方法

<pre>

/**
* API方式调用分词引擎功能
* @param $title string 要分词的原文
* @param $return_type string 返回的格式(detail:详细的分词数据,string:分词后拼接的字符串)
* @return
*/
function get_tags_api($title,$return_type='detail'){
$url='http://www.xunsearch.com/scws/api.php';
//http://bbs.xunsearch.com/showthread.php?tid=1235 关于词典中的词性标注
// data 需要分词的字符串(*必须*)
// respond 响应结果格式(其值为: php/json/xml, 默认为 php,其中 php是指用php序列化后的结果)
// charset 待分词的字符串编码(gbk/utf8,默认是utf8)
// ignore 是否忽略标点符号(yes/no,默认为 no)
// duality 是否散字自动二元(yes/no,默认为 no)
// traditional 是否采用繁体字库(yes/no,默认为 no,仅当 charset 为 utf8 时有效)
// multi 复合分词的级别(整数值 1~15:0x01-最短词;0x02-二元;0x04-重要单字;0x08-全部单字) 默认为0,如有需要建议设置为 3

$post=array(
'data'=>$title,
'respond'=>'json'
);

$ch = curl_init($url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
if(is_array($post))$post =http_build_query($post);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);

// $error = curl_error($ch);
// $info = curl_getinfo($ch);
curl_close($ch);

// $result = $this->file_get($url ,null,$post);
$result = json_decode($result,true);
if($return_type=='string'){
$tags=array();
if($result['status']=='ok'){
foreach($result['words'] as $v){
$tags[]=$v['word'];
}
}

return implode(',',$tags);

}
return $result;

}

/**
* PHP直接方式调用分词引擎功能
* @param $title string 要分词的原文
* @param $return_type string 返回的格式(detail:详细的分词数据,string:分词后拼接的字符串)
* @return
*/
function get_tags($title,$return_type='detail'){

require_once(DIR_SYSTEM.'library/pscws4/pscws4.class.php');
$CONF_PATH = DIR_SYSTEM.'library/pscws4/etc/';

$num=null;
$pscws = new PSCWS4('utf8');
$pscws -> set_charset('utf-8');
$pscws->set_dict($CONF_PATH . 'dict.utf8.xdb');
$pscws->set_rule($CONF_PATH . 'rules.utf8.ini');
// $pscws->set_rule($CONF_PATH . 'rules_cht.utf8.ini');
$pscws->set_ignore(true);
$pscws->send_text($title);
// $words = array();
// while ($tmpa = $pscws->get_result()){
// var_dump($tmpa);
// }
// exit();

// $words = $pscws->get_tops($num);
$words = $pscws -> get_tops($num, 'r,v,p');
$pscws->close();
$tags = array();
foreach($words as $k=>$word){
$words[$k]['attr'] = trim($word['attr']);
}

if($return_type=='string'){
$tags=array();

foreach($words as $v){
$tags[]=$v['word'];
}

return implode(',',$tags);

}
return ($words);

}
$title ='儿童内裤男纯棉平角裤 儿童短裤中大童内裤男童12-15岁男孩青少年';
$title ='LOGMU中老年羽绒裤男高腰内外穿加厚大码羽绒裤内胆冬季棉裤';
// $title = '里约奥运洪荒之力';

// exit();

// $title ='儿童内裤男纯棉平角裤 儿童短裤中大童内裤男童12-15岁男孩青少年';
$title1 = get_tags($title,'string');
$title2 = get_tags_api($title,'string');

$title1s = get_tags($title,'detail');
$title2s = get_tags_api($title,'detail');
// $title1 = scws($title);
echo '原文:';var_dump($title);
echo '<table style="width:90%"><tr><th>1</th><th>本地执行</th><th>调用api</th></tr>';
echo '<tr><td>';

echo '</td><td><textarea style="width:100%;height:1700px">';
print_r($title1);
print_r($title1s);
echo '</textarea></td><td><textarea style="width:100%;height:1700px">';
print_r($title2);
print_r($title2s);
echo '</textarea></td></tr></table>';

</pre>

 

资源包下载地址:http://www.xunsearch.com/site/downfile?file=xunsearch-full-1.4.11.tar.bz2

 
相关链接:
https://www.zhihu.com/question/19578687
http://www.xunsearch.com/scws/

声明: 本文由( admin )原创编译,转载请保留链接: PHP中文分词引擎scws使用说明

PHP中文分词引擎scws使用说明:等您坐沙发呢!

发表评论


------====== 本站公告 ======------
联系信息:
电话:19970108113(微信同号) QQ:3142401606
支付宝:https://me.alipay.com/lxq73061
相关插件程序等信息均会在站内发布,敬请关注。

读者排行