使用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 相关文章推荐
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 PHP
怎样在PHP中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
Feb 18 PHP
PHP调用VC编写的COM组件实例
Mar 29 PHP
php中实现可以返回多个值的函数实例
Mar 21 PHP
Linux系统下php获得系统分区信息的方法
Mar 30 PHP
php跨服务器访问方法小结
May 12 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
PHP实现百度人脸识别
May 06 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 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
将数组写入txt文件 var_export
2009/04/21 PHP
PHP中simplexml_load_string函数使用说明
2011/01/01 PHP
php使用codebase生成随机数
2014/03/25 PHP
PHP里的单例类写法实例
2015/06/25 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
js实现无限级树形导航列表效果代码
2015/09/23 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
介绍Python中的文档测试模块
2015/04/28 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
python 提取key 为中文的json 串方法
2018/12/31 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
如何查看python关键字
2021/01/17 Python
10张动图学会python循环与递归问题
2021/02/06 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
大学本科毕业生的自我鉴定
2013/11/26 职场文书
先进党支部事迹材料
2014/01/13 职场文书
财务总监管理职责范文
2014/03/09 职场文书
销售经理岗位职责
2014/03/16 职场文书
啤酒节策划方案
2014/05/28 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
Python基础数据类型tuple元组的概念与用法
2021/08/02 Python
代码复现python目标检测yolo3详解预测
2022/05/06 Python