热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

discuz!2.5x3.0x的自动tag系统是如何实现的?

discuz!2.5x3.0x的自动tag系统是如何实现的?:最近有个项目要实现自动产生标签,发现discuz!3.0x已经实现了这个功能,想问问discuz是如何实现分词和产生标
最近有个项目要实现自动产生标签,发现discuz! 3.0x已经实现了这个功能,想问问discuz是如何实现分词和产生标签的。 例如:http://www.playsc.com/forum/forum.php?mod=viewthread&tid=359314&extra=page%3D1 以上链接地址有标签:SPL, Hero, 三星, 季后赛 这些标签都是自动产生的。这样的功能如何实现?discuz!在哪里实现这个功能?
主要是怎么实现的分词?哪里有算法?特别是php如何实现?
(我把discuz!下来了但是只找到tag.php类里面updatedata($appid, $data)函数,没有上一步分词函数)

回复内容:

最近有个项目要实现自动产生标签,发现discuz! 3.0x已经实现了这个功能,想问问discuz是如何实现分词和产生标签的。 例如:http://www.playsc.com/forum/forum.php?mod=viewthread&tid=359314&extra=page%3D1 以上链接地址有标签:SPL, Hero, 三星, 季后赛 这些标签都是自动产生的。这样的功能如何实现?discuz!在哪里实现这个功能?
主要是怎么实现的分词?哪里有算法?特别是php如何实现?
(我把discuz!下来了但是只找到tag.php类里面updatedata($appid, $data)函数,没有上一步分词函数)

DZ系列都有一个在线分词工具,具体的URI地址为:"http://keyword.discuz.com/related_kw.html?title=$subjectenc&cOntent=$messageenc&ics=$SC[charset]&ocs=$SC[charset]"

以本标题为例子 discuz! 2.5x 3.0x的自动tag系统是如何实现的?,下面为生成的uri地址: http://keyword.discuz.com/related_kw.html?title=discuz!%202.5x%203.0x%E7%9A%84%E8%87%AA%E5%8A%A8tag%E7%B3%BB%E7%BB%9F%E6%98%AF%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84%EF%BC%9F&cOntent=discuz!%202.5x%203.0x%E7%9A%84%E8%87%AA%E5%8A%A8tag%E7%B3%BB%E7%BB%9F%E6%98%AF%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%9A%84%EF%BC%9F&ics=utf-8&ocs=utf-8 请求后返回的是XML格式的内容:

36000 4 0 1291287160 0

PHP具体调用代码为:

function get_dz_tag($subject , $message){ global $_SC; $subjectenc = rawurlencode(strip_tags($subject)); $messageenc = rawurlencode(strip_tags(preg_replace("/\[.+?\]/U", '', $message))); $data = @implode('', file("http://keyword.discuz.com/related_kw.html?title=$subjectenc&cOntent=$messageenc&ics=$_SC[charset]&ocs=$_SC[charset]")); if($data) { $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, $data, $values, $index); xml_parser_free($parser); $kws = array(); foreach($values as $valuearray) { if($valuearray['tag'] == 'kw' || $valuearray['tag'] == 'ekw') { if(PHP_VERSION > '5' && $_SC['charset'] != 'utf-8') { $kws[] = siconv(trim($valuearray['value']), $_SC['charset'], 'utf-8');//??????? } else { $kws[] = trim($valuearray['value']); } } } $return = ''; if($kws) { foreach($kws as $kw) { $kw = shtmlspecialchars($kw); $return .= $kw.' '; } $return = trim($return); } return $return; } }

当然这只是一个在线分词工具,当然你也可以使用PHP扩展进行操作:如scws。

scws 有在线 api 和 扩展版两个方式:

api代码为:

function Scws($string){ $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_URL, "http://www.ftphp.com/scws/api.php"); curl_setopt($ch, CURLOPT_POSTFIELDS, "data={$string}&respOnd=json"); ob_start(); curl_exec($ch); $cOntent= ob_get_contents(); curl_close($ch); ob_clean(); $cOntent= json_decode($content ,true); return $content; }

具体扩展版请参考scws文档:scws

推荐阅读
  • JVM参数设置与命令行工具详解
    JVM参数配置与命令行工具的深入解析旨在优化系统性能,通过合理设置JVM参数,确保在高吞吐量的前提下,有效减少垃圾回收(GC)的频率,进而降低系统停顿时间,提升服务的稳定性和响应速度。此外,本文还将详细介绍常用的JVM命令行工具,帮助开发者更好地监控和调优JVM运行状态。 ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 本文详细探讨了Java集合框架的使用方法及其性能特点。首先,通过关系图展示了集合接口之间的层次结构,如`Collection`接口作为对象集合的基础,其下分为`List`、`Set`和`Queue`等子接口。其中,`List`接口支持按插入顺序保存元素且允许重复,而`Set`接口则确保元素唯一性。此外,文章还深入分析了不同集合类在实际应用中的性能表现,为开发者选择合适的集合类型提供了参考依据。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • POJ 1696: 空间蚂蚁算法优化与分析
    针对 POJ 1696 的空间蚂蚁算法进行了深入的优化与分析。本研究通过改进算法的时间复杂度和空间复杂度,显著提升了算法的效率。实验结果表明,优化后的算法在处理大规模数据时表现优异,能够有效减少计算时间和内存消耗。此外,我们还对算法的收敛性和稳定性进行了详细探讨,为实际应用提供了可靠的理论支持。 ... [详细]
  • 在Unity中进行3D建模的全面指南,详细介绍了市场上三种主要的3D建模工具:Blender 3D、Maya和3ds Max。每种工具的特点、优势及其在Unity开发中的应用将被深入探讨,帮助开发者选择最适合自己的建模软件。 ... [详细]
  • 微信支付授权目录配置详解及操作步骤
    在使用微信支付时,若通过WeixinJSBridge.invoke方法调用支付功能,可能会遇到“当前页面URL未注册”的错误提示,导致get_brand_wcpay_request:fail调用微信JSAPI支付失败。为解决这一问题,需要正确配置微信支付授权目录,确保支付页面的URL已成功注册。本文将详细介绍微信支付授权目录的配置步骤和注意事项,帮助开发者顺利完成支付功能的集成与调试。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 循环结构与零钱问题:多题型综合解析与应用
    循环结构与零钱问题:多题型综合解析与应用 ... [详细]
  • 如何在 Java LinkedHashMap 中高效地提取首个或末尾的键值对? ... [详细]
  • 本文深入探讨了Python线程池的内部实现机制,作为对Apshceduler调度器研究的延伸。在先前关于Apshceduler源码分析的文章中,我们提到调度器通过`def_do_submit_`函数将任务提交到线程池。本文将进一步解析线程池的工作原理,包括任务分配、线程管理及性能优化等方面,为读者提供更全面的技术理解。 ... [详细]
  • 本文深入探讨了 Python Watchdog 库的使用方法和应用场景。通过详细的代码示例,展示了如何利用 Watchdog 监控文件系统的变化,包括文件的创建、修改和删除等操作。文章不仅介绍了 Watchdog 的基本功能,还探讨了其在实际项目中的高级应用,如日志监控和自动化任务触发。读者将能够全面了解 Watchdog 的工作原理及其在不同场景下的应用技巧。 ... [详细]
  • voc生成xml 代码
    目录 lxmlwindows安装 读取示例 可视化 生成示例 上面是代码,下面有调用示例 api调用代码,其实只有几行:这个生成代码也很简 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
author-avatar
a105451223
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有