技术文摘

利用百度审核接口检测内容是否还有敏感词

作者:雨祺   发表于:
浏览:253次    字数:2492  原创
级别: 站长   总稿: 69 篇,  月稿: 0
敏感词检测工具是一种软件或程序,旨在检测文本或语音内容中的敏感词汇,并给出警告或过滤这些词汇。这些工具通常用于社交媒体平台、在线论坛、网站评论等涉及用户生成内容的场所,以确保社交媒体上的内容不包含令人反感、暴力或不恰当的语言、图片或视频。检测敏感词的工具通常会将文本内容分解为单个单词,并与预定义的敏感词列表进行比较。如果发现匹配,该工具会自动采取行动,例如自动编辑或删除违规内容。这些工具通常是基于机器学习和自然语言处理技术开发的,其准确性和效率取决于数据质量和算法设计。那么小编现在开始给大家讲解运用百度的api文本审核接口检测内容是否含有敏感词。
首先我们看看效果吧。(输出结果为JSON)newstext内容字段参数支持post与get
  1. https://www.meiweny.cn/ecmsapi/index.php?mod=jiexi&act=baidchekconcent 
因为newstext参数已经默认了文本内容,访问上面的地址输出结果如下

如果要newstext要自定义文本,那么检测地址就是,get请求为例
  1. https://www.meiweny.cn/ecmsapi/index.php?mod=jiexi&act=baidchekconcent&newstext=%E4%B8%BA%E4%BB%80%E4%B9%88%E7%BD%91%E7%AB%99%E5%81%9A%E4%B8%8D%E8%B5%B7%E6%9D%A5%E5%91%A2  
再次声明,newstext参数支持post与get。如果用post提交请按照Ajax异步提交相关代码进行post请求。下面开始讲解重点,如何用百度文本审核接口检测内容是否含有敏感词。代码如下:
  1. <?php 
  2. defined("ECMSAPI_MOD") or exit; 
  3. $appid = '71789344'
  4. $apiKey = "Mm2fDOGFkc2NjRQCOnRFaFZz"
  5. $secretKey = "E65r4fkhJzOVM6y3xALIlHtUgVhMyw93"
  6. $newstext= $api->param('newstext' ,'你是个傻逼啊,一直访问我做测试做鸡巴。' , 'RepPostStr'); 
  7. if (class_exists('Memcached')){ 
  8. $cache = $api->load('cache','mem'); // 第二个参数mem表示mem缓存,redis表示redis缓存,yac表示使用yac方式缓存,默认使用File方式 
  9. }else
  10. $cache = $api->load('cache','file');     
  11. $cacheName =md5($public_r['add_pcurl']).'pcbaiduneibaidurongcheckhecheng_access_token_' . md5($secretkey); 
  12. /** 公共模块获取token开始 */ 
  13. $response = $cache->get($cacheName); 
  14. if(null==$response){ 
  15. $auth_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=".$apiKey."&client_secret=".$secretKey; 
  16. $ch = curl_init(); 
  17. curl_setopt($ch, CURLOPT_URL, $auth_url); 
  18. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  19. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
  20. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //信任任何证书 
  21. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 检查证书中是否设置域名,0不验证 
  22. curl_setopt($ch, CURLOPT_VERBOSE, DEMO_CURL_VERBOSE); 
  23. $res = curl_exec($ch); 
  24. if(curl_errno($ch)){ 
  25. print curl_error($ch); 
  26. curl_close($ch); 
  27. $response = json_decode($res, true); 
  28. $cache->set($cacheName,$response, 3600*24*7);  
  29. $token = $response['access_token']; 
  30. function request_post($url = '', $param = ''){ 
  31. if (empty($url) || empty($param)) { 
  32. return false
  33. $postUrl = $url; 
  34. $curlPost = $param; 
  35. $curl = curl_init(); 
  36. curl_setopt($curl, CURLOPT_URL, $postUrl); 
  37. curl_setopt($curl, CURLOPT_HEADER, 0); 
  38. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  39. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
  40. curl_setopt($curl, CURLOPT_POST, 1); 
  41. curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost); 
  42. $data = curl_exec($curl); 
  43. curl_close($curl); 
  44. return $data; 
  45. $url = 'https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined?access_token=' . $token; 
  46. $bodys = array( 
  47.     'text' => $newstext 
  48. ); 
  49. $res = request_post($url, $bodys); 
  50. $resArray = json_decode($res, true); 
  51. if($resArray['conclusionType']=="1"){ 
  52. $api->load('fun')->json(1,'合规');     
  53. }else
  54. $minganci = []; // 敏感词数组 
  55. foreach ($resArray['data'] as $dataItem) { 
  56.     $msg = $dataItem['msg']; 
  57.     if (isset($dataItem['hits']) && is_array($dataItem['hits'])) { 
  58.         foreach ($dataItem['hits'] as $hit) { 
  59.             if (isset($hit['words']) && is_array($hit['words']) && count($hit['words']) > 0) { 
  60.                 $keyword = $hit['words'][0]; 
  61.                 $datasetName = $hit['datasetName']; 
  62.                 $minganci[] = ['msg' => $msg, 'datasetName' => $datasetName, 'keyword' => $keyword]; 
  63.             } 
  64.         } 
  65.     } 
  66. $keywordsminganci = array_unique(array_map('preg_quote', array_column($minganci, 'keyword'))); 
  67. $pattern = '/(' . implode('|', $keywordsminganci) . ')/iu'// 构建正则表达式,移除单词边界限制 
  68. $censoredText = preg_replace_callback($pattern, function ($matches) { 
  69.     return str_repeat('*', strlen($matches[1])); 
  70. }, $newstext);  
  71. $result = ['minganci' => $minganci,'newstext' => $newstext,'censoredText' => $censoredText]; 
  72. $api->load('fun')->json(0,$result,'含有违禁词');  
以上代码需要安装本站的相关插件才可以运行,API万能插件下载地址:
  1. https://www.meiweny.cn/zazhi/ruanjianleyuan/2.html 
整个利用百度审核接口检测内容是否还有敏感词教程讲解结束,逻辑就是这么简单,至于你想通过该接口想怎么检测其他字段值需要把newstext参数该下即可。懂点ajax请求的皮毛知识就能完成。当然还用一种方法就是新建一个敏感词的数据表手动录入敏感词,而后在遍历循环进行检测替换。不过小编还是推荐用百度文本审核接口,全自动且更符合当前ai人工智能环境,并且敏感词更为齐全。

 

【审核人:站长】

收藏   加好友   生成海报   分享
点赞(0)
打赏
Tags: 内容 是否 还有 利用 检测 接口 审核 敏感

发布者资料

热门文章

技术文摘

查看更多技术文摘
首页
栏目
搜索
会员
投稿