使用Discuz关键词服务器实现PHP中文分词


Posted in PHP onMarch 11, 2014

不同于使用自己的服务器进行分词,Discuz!在线中文分词服务是基于API返回分词结果的。在项目中,我们只需要一个函数即可方便地进行分词、关键词提取。
以下是根据Discuz!在线分词服务API写的函数,测试可正常运行:

/**
 * DZ在线中文分词
 * @param $title string 进行分词的标题
 * @param $content string 进行分词的内容
 * @param $encode string API返回的数据编码
 * @return  array 得到的关键词数组
 */
 function dz_segment($title = '', $content = '', $encode = 'utf-8'){
    if($title == ''){
        return false;
    }
    $title = rawurlencode(strip_tags($title));
    $content = strip_tags($content);
    if(strlen($content)>2400){ //在线分词服务有长度限制
        $content =  mb_substr($content, 0, 800, $encode);
    }
    $content = rawurlencode($content);
    $url = 'http://keyword.discuz.com/related_kw.html?title='.$title.'&content='.$content.'&ics='.$encode.'&ocs='.$encode;
    $xml_array=simplexml_load_file($url);                        //将XML中的数据,读取到数组对象中  
    $result = $xml_array->keyword->result;
    $data = array();
    foreach ($result->item as $key => $value) {
            array_push($data, (string)$value->kw);
    }
    if(count($data) > 0){
        return $data;
    }else{
        return false;
    }
 }

分词示例,通过url访问:
http://keyword.discuz.com/related_kw.html?title=高三历史全程复习精品教程&content=&ics=utf-8&ocs=utf-8

返回的XML数据:

<?xml version="1.0" encoding="utf-8" ?>
<total_response>
 <svalid>36000</svalid>
 <keyword>
 <info>
  <count>1</count>
  <errno>0</errno>
  <nextuptime>1291287160</nextuptime>
  <keep>0</keep>
 </info>
 <result>
  <item>
   <kw><![CDATA[高三历史]]></kw>
  </item>
 </result>
 </keyword>
</total_response>
PHP 相关文章推荐
提升PHP执行速度全攻略(下)
Oct 09 PHP
PHP中for循环语句的几种变型
Nov 26 PHP
PHP Token(令牌)设计
Mar 15 PHP
php学习之 数组声明
Jun 09 PHP
PHP版国家代码、缩写查询函数代码
Aug 14 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
php实现给图片加灰色半透明效果的方法
Oct 20 PHP
php版微信返回用户text输入的方法
Nov 14 PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
PHP7原生MySQL数据库操作实现代码
Jul 03 PHP
PHP输出缓存ob系列函数详解
Mar 11 #PHP
php初始化对象和析构函数的简单实例
Mar 11 #PHP
PHP连接MySQL的2种方法小结以及防止乱码
Mar 11 #PHP
php调用c接口无错版介绍
Mar 11 #PHP
PHP goto语句简介和使用实例
Mar 11 #PHP
php调用C代码的实现方法
Mar 11 #PHP
PHP中isset()和unset()函数的用法小结
Mar 11 #PHP
You might like
php生成随机密码的三种方法小结
2010/09/04 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
JS前端加密算法示例
2016/12/22 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
vant实现购物车功能
2020/06/29 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
详解python实现线程安全的单例模式
2018/03/05 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
python em算法的实现
2020/10/03 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
购买美国制造的相框和画框架:Picture Frames
2018/08/14 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
JAVA代码查错题
2014/10/10 面试题
初任培训自我鉴定
2013/10/07 职场文书
园林施工员岗位职责
2013/12/11 职场文书
青年教师典范事迹材料
2014/01/31 职场文书
社区低保工作总结2015
2015/07/23 职场文书
八年级英语教学反思
2016/02/15 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript