使用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 使用MySQL管理Session的回调函数详解
Jun 21 PHP
php导入csv文件碰到乱码问题的解决方法
Feb 10 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
php实现的任意进制互转类分享
Jul 07 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
Yii2.0中的COOKIE和SESSION用法
Aug 12 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
Oct 11 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
php遍历目录下文件并按修改时间排序操作示例
Jul 12 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 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
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
PHP程序守护进程化实现方法详解
2020/07/16 PHP
COM中获取JavaScript数组大小的代码
2009/11/22 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
jquery选择器之层级过滤选择器详解
2014/01/27 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
2017/10/11 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
JavaScript实现Excel表格效果
2020/02/07 Javascript
记一次用ts+vuecli4重构项目的实现
2020/05/21 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
python使用邻接矩阵构造图代码示例
2017/11/10 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
python构造函数init实例方法解析
2020/01/19 Python
关于Tensorflow 模型持久化详解
2020/02/12 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
python 实现的IP 存活扫描脚本
2020/12/10 Python
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
专科毕业生就业推荐信
2013/11/01 职场文书
单位作风建设自查报告
2014/10/23 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js