使用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实现手机归属地查询API接口实现代码
Aug 27 PHP
基于php设计模式中单例模式的应用分析
May 15 PHP
CI(CodeIgniter)框架配置
Jun 10 PHP
destoon调用discuz论坛中带图片帖子的实现方法
Aug 21 PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 PHP
php删除指定目录的方法
Apr 03 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
php微信扫码支付 php公众号支付
Mar 24 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.ini中文版(1)
2006/10/09 PHP
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
禁止js文件缓存的代码
2010/04/09 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
jQuery简单tab切换效果实现方法
2015/04/08 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
url传递的参数值中包含&amp;时,url自动截断问题的解决方法
2016/08/02 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
2016/11/01 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
Vue使用高德地图搭建实时公交应用功能(地图 + 附近站点+线路详情 + 输入提示+换乘详情)
2018/05/16 Javascript
vue组件横向树实现代码
2018/08/02 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python基于动态规划算法计算单词距离
2015/07/25 Python
python实现实时监控文件的方法
2016/08/26 Python
Django的分页器实例(paginator)
2017/12/01 Python
Python实现图片拼接的代码
2018/07/02 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
绘画设计学生的个人自我评价
2013/09/20 职场文书
广播节目策划方案
2014/05/23 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
总经理岗位职责范本
2015/04/01 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书