博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SCWS中文分词,功能函数实例应用
阅读量:5117 次
发布时间:2019-06-13

本文共 2471 字,大约阅读时间需要 8 分钟。

结合前文的,现写一个实用的功能函数,使用方法:

header('Content-Type:text/html;charset=UTF-8');
$text        = '我是一个中国人,我会C++语言,我也有很多T恤衣服,我想知道奥迪A6与第八代索纳塔哪个油耗低,谢谢花好月圆二手奥拓芽菜好吃悦翔V3怎么样卧槽日系车Q5';
$so          = scws_new();
$getFCstr = scwsFenCi($so,$text,$xattr='');
echo $getFCstr;
echo '<br />--------------------<br />';
echo fenCi2Encode($getFCstr);

/** * SCWS中文分词 * @param  so    SCWS对象实例,如:$so = scws_new(); * @param  text  待分词的中文文本 * @param  xattr 过滤的词性(为空就是不过滤词性) * @return 返回分好词的字符串(多词空格间隔);失败返回false; * @author martinzhang */function scwsFenCi($so,$text,$xattr=''){    if(!is_object($so)){
return false;} //设定分词词典、规则集、欲分文本字符串的字符集(utf8 和 gbk) $so->set_charset('utf8'); //强行设定分词所用的词典 //$so->set_dict('D:/Program Files/AppServ/scws/etc/dict.utf8.xdb'); //强行设定分词所用的新词识别规则集(用于人名、地名、数字时间年代等识别) //$so->set_rule('D:/Program Files/AppServ/scws/etc/rules.utf8.ini'); $so->set_ignore('yes'); //设定分词返回结果时是否去除一些特殊的标点符号之类 $so->set_duality(false); //设定是否将闲散文字自动以二字分词法聚合 //设定分词返回结果时是否复式分割,如“中国人”返回“中国+人+中国人”三个词。 //也可用 1-15 来表示:(1)短词 (2)二元(将相邻的2个单字组合成一个词) (4)重要单字 (8)全部单字 $so->set_multi(0); //发送设定分词所要切割的文本 //执行本函数时,若未加载任何词典和规则集,则会自动试图在 ini 指定的缺省目录下查找缺省字符集的词典和规则集 $so->send_text($text); $getWords = $so->get_words($xattr); //n,nz,un,ns,i //print_r($getWords); if(is_array($getWords)){ foreach($getWords as $arrWord){ if(preg_match('/[a-zA-Z0-9]{2,}/',$arrWord['word'],$arrMatch)){ $word_fc .= $arrWord['word'].' '; }elseif(strlen($arrWord['word'])>=4){ $word_fc .= $arrWord['word'].' '; } } return trim($word_fc); }else{ return false; } }/** * 分词转码 * @param strKeywords 已经分词的字符串(词间“空格”分隔) * @return 返回分词的转码字符串 * @author martinzhang */function fenCi2Encode($strKeywords){ $pattern = array('/%/','/\+/'); $replace = array('',' '); return preg_replace($pattern,$replace,urlencode(trim($strKeywords)));}/** * 将搜索关键词 高亮 * @param keywordStr 关键词(多关键词以“空格”分隔) * @param contentStr 待替换的内容部分 * @param color 设置高亮颜色(默认:#ff0000) * @return 返回替换后的新内容 * @author martinzhang */function highLightKeyword($keywordStr,$contentStr,$color='#ff0000'){ $arrKW = explode(' ',$keywordStr); $arrKW = array_unique($arrKW); $color == '' ? $color = '#ff0000' : $color = $color; foreach($arrKW as $val){ $contentStr = str_replace($val,"$val",$contentStr); } return $contentStr;}

 

转载于:https://www.cnblogs.com/martinzhang/p/3291559.html

你可能感兴趣的文章
第二次团队冲刺--2
查看>>
VMware Tools安装
查看>>
Linux上架设boost的安装及配置过程
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
zoj 2286 Sum of Divisors
查看>>
OO5~7次作业总结
查看>>
如何判断主机是大端还是小端(字节序)
查看>>
Centos7 日志查看工具
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
OpenCV之响应鼠标(三):响应鼠标信息
查看>>
Android 画图之 Matrix(一)
查看>>
List<T>列表通用过滤模块设计
查看>>
【模板】最小生成树
查看>>
设计模式之结构型模式
查看>>
poj2569
查看>>
使用pygal_maps_world.i18n中数据画各大洲地图
查看>>
sql server必知多种日期函数时间格式转换
查看>>
jQuery EasyUI 的下拉选择combobox后台动态赋值
查看>>
timeline时间轴进度“群英荟萃”
查看>>
python if else elif statement
查看>>