使用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下实现一个阿拉伯数字转中文数字的函数
Jul 10 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
PHP图片上传代码
Nov 04 PHP
用PHP生成excel文件到指定目录
Jun 22 PHP
PHP打印输出函数汇总
Aug 28 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
php 开发中加密的几种方法总结
Mar 22 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
Jun 21 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 PHP
php实现简单的守护进程创建、开启与关闭操作
Aug 13 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
单点登录 Ucenter示例分析
2013/10/29 PHP
php实现aes加密类分享
2014/02/16 PHP
在Mac OS下搭建LNMP开发环境的步骤详解
2017/03/10 PHP
javascript中的继承实例代码
2011/04/27 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
JS实现三个层重叠点击互相切换的方法
2015/10/06 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python进行数据科学工作的简单入门教程
2015/04/01 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
Python functools模块学习总结
2015/05/09 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
python SOCKET编程基础入门
2021/02/27 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
师范生教师实习自我鉴定
2013/09/27 职场文书
部队万能检讨书
2014/02/20 职场文书
作文评语大全
2014/04/23 职场文书
525心理活动总结
2014/07/04 职场文书
分居协议书范本
2014/11/03 职场文书
四年级小学生评语
2014/12/26 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
离婚被告代理词
2015/05/23 职场文书
python_tkinter事件类型详情
2022/03/20 Python