使用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获取某个目录大小的代码
Sep 10 PHP
解决ajax+php中文乱码的方法详解
Jun 09 PHP
thinkphp3.2.2实现生成多张缩略图的方法
Dec 19 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
Aug 01 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
Swoole4.4协程抢占式调度器详解
May 23 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 uniqid函数生成唯一ID
2015/11/18 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
Jquery 一次处理多个ajax请求的代码
2011/09/02 Javascript
基于jquery的滚动条滚动固定div(附演示下载)
2012/10/29 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
载入jQuery库的最佳方法详细说明及实现代码
2012/12/28 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
Vue-cli-webpack搭建斗鱼直播步骤详解
2017/11/17 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
使用JSON格式提交数据到服务端的实例代码
2018/04/01 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
用Python读取几十万行文本数据
2018/12/24 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
python 下载文件的几种方法汇总
2021/01/06 Python
给领导的致歉信范文
2014/01/13 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
2015年超市收银员工作总结
2015/04/25 职场文书
入党申请书格式
2019/06/20 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers