使用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 相关文章推荐
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
Apr 07 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
Apr 09 PHP
基于php无限分类的深入理解
Jun 02 PHP
php 批量生成html,txt文件的实现代码
Jun 26 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
php处理json格式数据经典案例总结
May 19 PHP
php单链表实现代码分享
Jul 04 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
Oct 16 PHP
php实现JWT(json web token)鉴权实例详解
Nov 05 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获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
PHP的垃圾回收机制代码实例讲解
2021/02/27 PHP
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
Jquery 实现grid绑定模板
2015/01/28 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
javascript中的this作用域详解
2019/07/15 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
Python编写检测数据库SA用户的方法
2014/07/11 Python
详解Python with/as使用说明
2018/12/13 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
基于Python的OCR实现示例
2020/04/03 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
编程用JAVA解析XML的方式
2013/07/07 面试题
应届生高等护理求职信
2013/10/12 职场文书
咨询公司各岗位职责
2013/12/02 职场文书
采购部主管岗位职责
2014/01/01 职场文书
员工培训邀请函
2014/01/11 职场文书
教师民族团结演讲稿
2014/08/27 职场文书
圣诞节开幕词
2015/01/29 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书
Python自动化之批量处理工作簿和工作表
2021/06/03 Python
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
Python超详细分步解析随机漫步
2022/03/17 Python
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
如何利用python实现Simhash算法
2022/06/28 Python