使用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 相关文章推荐
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
php中大括号作用介绍
Mar 22 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 PHP
PHP的基本常识小结
Jul 05 PHP
如何让CI框架支持service层
Oct 29 PHP
CI框架入门示例之数据库取数据完整实现方法
Nov 05 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
PHP实现图片上传并压缩
Dec 22 PHP
PHP的AES加密算法完整实例
Jul 20 PHP
php用户名的密码加密更安全的方法
Jun 21 PHP
Laravel 不同生产环境服务器的判断实践
Oct 15 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学习笔记之面向对象
2014/11/08 PHP
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
python 正确保留多位小数的实例
2018/07/16 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
python游戏开发的五个案例分享
2020/03/09 Python
python一些性能分析的技巧
2020/08/30 Python
Python私有属性私有方法应用实例解析
2020/09/15 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
HTML5 新旧语法标记对我们有什么好处
2012/12/13 HTML / CSS
区优秀教师事迹材料
2014/02/10 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
2014年创卫工作总结
2014/11/24 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
简单实现一个手持弹幕功能+文字抖动特效
2021/03/31 HTML / CSS
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python