使用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中获取远程客户端的真实ip地址的方法
Aug 03 PHP
PHP中几个常用的魔术常量
Feb 23 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
PHP内核探索之解释器的执行过程
Dec 22 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
PHP单例模式简单用法示例
Jun 23 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
Laravel框架在本地虚拟机快速安装的方法详解
Jun 11 PHP
Smarty模板类内部原理实例分析
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编程实现获取excel文档内容的代码实例
2011/06/28 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
Python基本数据类型详细介绍
2014/03/11 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
Python unittest框架操作实例解析
2020/04/13 Python
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
几道PHP面试题
2013/04/14 面试题
环境保护标语
2014/06/20 职场文书
车辆转让协议书
2014/09/24 职场文书
单位工作证明格式模板
2014/10/04 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
邀请函样本
2015/02/02 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书