使用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 相关文章推荐
smarty静态实验表明,网络上是错的~呵呵
Nov 25 PHP
一些使用频率比较高的php函数
Oct 03 PHP
PHP 上传文件大小限制
Jul 05 PHP
PHP 数组遍历顺序理解
Sep 09 PHP
PHP中PDO基础教程 入门级
Sep 04 PHP
php在线代理转向代码
May 05 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
linux下php上传文件注意事项
Jun 11 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
Nov 03 PHP
浅析php如何实现爬取数据原理
Sep 27 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
Jun 13 PHP
laravel orm 关联条件查询代码
Oct 21 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文本数据库的搜索方法
2006/10/09 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
javascript实现输出指定行数正方形图案的方法
2015/08/03 Javascript
js控制按钮,防止频繁点击响应的实例
2017/02/15 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
vue中子组件的methods中获取到props中的值方法
2018/08/27 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
python基础while循环及if判断的实例讲解
2017/08/25 Python
numpy中索引和切片详解
2017/12/15 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
2019/08/23 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
什么是.net
2015/08/03 面试题
暑期实习鉴定
2013/12/16 职场文书
大学生职业生涯设计书
2014/01/02 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
亲属关系公证书样本
2015/01/23 职场文书
奖学金主要事迹范文
2015/11/04 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android
JavaScript原型链详解
2021/11/07 Javascript
详细聊聊Oracle表碎片对性能有多大的影响
2022/03/19 Oracle