使用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 fsockopen写的HTTP下载的类
Feb 22 PHP
PHP 作用域解析运算符(::)
Jul 27 PHP
php各种编码集详解和以及在什么情况下进行使用
Sep 11 PHP
php版小黄鸡simsimi聊天机器人接口分享
Jan 26 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
如何使用PHP对网站验证码进行破解
Sep 17 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
利用php输出不同的心形图案
Apr 22 PHP
php进程daemon化的正确实现方法
Sep 06 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 13 PHP
PHP实现计算器小功能
Aug 28 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中的reflection反射机制测试例子
2014/08/05 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
JavaScript的eval JSON object问题
2009/11/15 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
图解Sublime Text3使用技巧
2015/12/21 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
vue与bootstrap实现时间选择器的示例代码
2017/08/26 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
详解js类型判断
2018/05/22 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
[44:39]2014 DOTA2国际邀请赛中国区预选赛 NE VS CNB
2014/05/21 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
python reduce 函数使用详解
2017/12/05 Python
Python enumerate索引迭代代码解析
2018/01/19 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
python 已知三条边求三角形的角度案例
2020/04/12 Python
如何通过python计算圆周率PI
2020/11/11 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
2013年高中生自我评价
2013/10/23 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
项目转让协议书
2014/10/27 职场文书
2015年体育教学工作总结
2015/05/20 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技