阿里云文本审核(java敏感词效验)

ThinkPHP5 如何介入阿里云反文本垃圾敏感词过滤【附源码】 很多时候我们给与客户端在发布内容的时候,就很担心被客户输入恶意敏感词等信息,如若不慎还可能网站被封等;为了减少后台人工审核的成本,我们接入阿里云反文本垃圾。 第一步:在阿里云申请accessKeyId和accessKeySecret 第二步:下载阿里云的检测依赖 阿里云Sdk下载地址: https://www.alibabacloud.com/help/zh/doc-detail/28440.htm?spm=a2c63.p38356.879954.6.600e905dEygP1j#ref 阅读详情

敏感词校验

背景: 用户社区评论或分享的文章或评论,需要合法合规,不能包含涉政等违规的铭感词.

使用阿里云的内容审核
准备工作

阿里云账号,需要开通敏感词服务 注意(有accessKeyId和accessKeySecret)都不行,须开通服务
文档地址: https://help.aliyun.com/document_detail/70439.html?spm=a2c4g.11186623.6.701.1cea2188bMuZUi
调试地址:https://next.api.aliyun.com/api/Green/2018-05-09/TextScan
————————————————
版权声明:本文为优快云博主「craywen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_38893133/article/details/117294596

java代码(做一次笔记吧qaq)

  • 依赖

<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.16</version> </dependency>

 

@Slf4j
@Component
public class AliYunWordFilterHandler {

    private static final String region = "cn-beijing";

    @Value("${aliyun.oss.accessKeyId}")
    private String accessKeyId;

    @Value("${aliyun.oss.accessKeySecret}")
    private String accessKeySecret;

    //设置获取client
    private IAcsClient getClient() {
        IClientProfile profile = DefaultProfile.getProfile(region, accessKeyId, accessKeySecret);
        //下面走的是阿帕奇的,自行选择
        // DefaultProfile profile1 = DefaultProfile.getProfile(region, accessKeyId, accessKeySecret);         
        return new DefaultAcsClient(profile);
    }
    
    //设置请求头
    private CommonRequest getDefaultCommonRequest() {
        CommonRequest request = new CommonRequest();
        request.setProtocol(ProtocolType.HTTPS);
        request.setMethod(MethodType.POST);
        request.setDomain("green.cn-beijing.aliyuncs.com");
        request.setVersion("2018-05-09");
        request.setUriPattern("/green/text/scan"); //垃圾扫描    request.setUriPattern("/green/text/feedback"); // 垃圾反馈
        //设置超时时间
        request.setSysConnectTimeout(6000);
        request.setSysReadTimeout(6000);
        request.putHeadParameter("Content-Type", "application/json");
        return request;
    }
    
    //请求参数封装 map
    private Map<String, Object> getExecuteMap(List<String> tasks) {
        Map<String, Object> resultMap = new HashMap<>(2);
        List<Map<String, Object>> inputBodyList = new ArrayList<>();

        for (String task : tasks) {
            Map<String, Object> requestBodyMap = new HashMap<String, Object>();
            requestBodyMap.put("dataId", UUID.randomUUID().toString());
            requestBodyMap.put("content", task); // 待检测的文本,长度不超过10000个字符
            inputBodyList.add(requestBodyMap);
        }
        resultMap.put("scenes", Collections.singletonList("antispam")); // 检测场景,文本垃圾检测传递:antispam
        resultMap.put("tasks", inputBodyList);
        return resultMap;
    }
    
    //请求参数封装 JSONObject (linkhashMap)
    private JSONObject getExecuteJSONObject(List<String> tasks) {
        JSONObject resultMap = new JSONObject();
        JSONArray inputBodyList = new JSONArray();
        for (String task : tasks) {
            JSONObject requestBody = new JSONObject();
            requestBody.put("dataId", UUID.randomUUID().toString());
            requestBody.put("content", task); // 待检测的文本,长度不超过10000个字符*/
            inputBodyList.add(requestBody);
        }
        resultMap.put("scenes", Collections.singletonList("antispam")); // 检测场景,文本垃圾检测传递:antispam
        resultMap.put("tasks", inputBodyList);
        return resultMap;
    }

    //批量效验,阿里的api 详情批量限制100个,单个长度不能超过10000
    @TimerLog
    public List<AuditInfo> textReviews(List<String> content) {
        List<AuditInfo> result = new LinkedList<>();
        IAcsClient client = getClient();
        CommonRequest request = getDefaultCommonRequest();
        Map<String, Object> executeMap = getExecuteMap(content);
        log.info("阿里敏感词检测:[start]:\n {}", JSONUtils.toString(executeMap));
        request.setHttpContent(JSONUtils.toString(executeMap).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8.name(), JSON);
        try {
            CommonResponse response = client.getCommonResponse(request);
            log.info("阿里敏感词检测:[end]:\n {}", response.getData());
            HttpResponse httpResponse = response.getHttpResponse();
            if (httpResponse.isSuccess()) {
                log.info("敏感词效验 成功");
                String responseContent = new String(httpResponse.getHttpContent(), StandardCharsets.UTF_8);
                JSONObject scrResponse = JSONUtils.parseObject(responseContent, JSONObject.class);
                if (200 == scrResponse.getInteger("code")) {
                    JSONArray taskResults = scrResponse.getJSONArray("data");
                    for (int i = 0; i < taskResults.size(); i++) {
                        JSONObject taskResultObj = taskResults.getJSONObject(i);
                        AuditInfo auditInfo = new AuditInfo();
                        //如果被检测文本命中了自定义关键词词库中的关键词,则会返回当前字段,并将命中的关键词替换为星号(*)。
                        String filteredContent = taskResultObj.getString("filteredContent");
                        auditInfo.setContent(filteredContent);
                        if (200 == taskResultObj.getInteger("code")) {
                            JSONArray sceneResults = taskResultObj.getJSONArray("results");
                            for (int j = 0; j < sceneResults.size(); j++) {
                                JSONObject taskSubObject = sceneResults.getJSONObject(j);
                                //这里检测只使用一个 result 结果,检测文本为一个
                                String scene = taskSubObject.getString("scene");
                                //pass:文本正常,可以直接放行。 review:文本需要进一步人工审核。 block:文本违规,可以直接删除或者限制公开。
                                //@see https://help.aliyun.com/document_detail/70439.html?spm=a2c4g.11186623.6.701.1cea2188bMuZUi
                                String suggestion = taskSubObject.getString("suggestion");
                                String label = taskSubObject.getString("label");
                                double rate = taskSubObject.getDouble("rate");
                                auditInfo = convertMsg(label, auditInfo, rate);
                                result.add(auditInfo);
                            }
                        } else {
                            System.out.println("task process fail:" + taskResultObj.getInteger("code"));
                            log.error("阿里敏感词检测:请求超时!");
                        }
                    }
                } else {
                    log.error("检测状态失败 code:{}", scrResponse.getInteger("code"));
                }
            }
        } catch (ClientException e) {
            log.error("请求调用失败,检查是否是超时");
            e.printStackTrace();
        }
        return result;
    }
    
//标签效验
private AuditInfo convertMsg(String label, AuditInfo audit, double rate) {
        //正常放行  normal:正常文本 spam:含垃圾信息 ad:广告 flood:灌水  meaningless:无意义 customized:自定义(例如命中自定义关键词)
        //拦截 politics:涉政 terrorism:暴恐 abuse:辱骂 porn:色情 contraband:违禁
        audit.setResult(true);
        audit.setMsg("审核正常");
        switch (label) {
            case "normal":
                break;
            case "spam":
                if (rate > 50.0) {
                    audit.setResult(true);
                    audit.setMsg("含垃圾信息");
                }
                break;
            case "ad":
                if (rate > 50.0) {
                    audit.setResult(true);
                    audit.setMsg("广告");
                }
                break;
            case "politics":
                audit.setResult(false);
                audit.setMsg("涉政");
                break;
            case "terrorism":
                audit.setResult(false);
                audit.setMsg("暴恐");
                break;
            case "abuse":
                if (rate > 70.0) {
                    audit.setResult(false);
                    audit.setMsg("辱骂");
                }
                break;
            case "porn":
                if (rate > 90.0) {
                    audit.setResult(false);
                    audit.setMsg("色情");
                }
                break;
            case "flood":
                if (rate > 95.0) {
                    audit.setResult(true);
                    audit.setMsg("灌水");
                }
                break;
            case "contraband":
                audit.setResult(false);
                audit.setMsg("违禁");
                break;
            case "meaningless":
                if (rate > 95.0) {
                    audit.setResult(true);
                    audit.setMsg("无意义");
                }
                break;
            case "qrcode":
                if (rate > 60.0) {
                    audit.setResult(true);
                    audit.setMsg("二维码");
                }
                break;
            default:
                audit.setResult(true);
                audit.setMsg("自定义");
                break;
        }
        return audit;
    }


/**
 * @author: craywen
 * @date: 2021-05-25 14:23
 * @desc: 审核结果
 */
@Data
public class AuditInfo {

    /**
     * 审核结果
     */
    private boolean result;

    /**
     * 返回的消息
     */
    private String msg;

    /**
     * 内容
     */
    private String content;

}

————————————————
版权声明:本文为优快云博主「craywen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_38893133/article/details/117294596

 

5分钟搞定敏感词检测:创客API vs 阿里云 vs 腾讯云实战对比 本文对比了创客API、阿里云和腾讯云在敏感词检测领域的实战表现,帮助开发者快速选择适合的方案。从响应速度、准确率、易用性和成本模型等维度进行评测,特别推荐创客API的极简设计和免费额度,适合中小项目快速上线。 阅读详情

相关推荐

Text-Sensitivity:整合阿里云与腾讯云的敏感词检测API

Text-Sensitivity 敏感词汇检测系统 介绍 整合来自阿里云和腾讯云两大敏感词汇检测 API ,检测词汇采用双锁机制,当两大 API 均认为输入词汇是正常词汇时,才认定为正常词汇。 配置与使用 npm install ct-sensitivity --save 本工具使用 Promise 封装,在返回判断结果时,可通过 await 关键词获取判断结果,也可使用 Promise.then() 方法。 接受参数: 词汇 输出参数: 0 : 代表输入词汇为敏感词汇 1 : 代表输入词汇为正常词汇 示例 router.get("/textSensitivity", async function(req, res) { const order = require("url").parse(req.url, true).query.order; const result = awa

敏感词检测:整合阿里云与腾讯云相关API

前言 项目地址:Text-Sensitivity 笔者在开发小程序时,由于需要对用户输入内容进行敏感词检查,故需要使用现有服务商的相关API(自行开发NLP产品,难度大)。 我们技术团队初步使用的是腾讯云的文智,但由于我们的使用姿势不正确(腾讯云控制台密钥复制错误,导致鉴权总是失败),放弃了腾讯云的产品,转向对开发者更为友好的阿里云文本反垃圾API。 在成功将阿里云API投入到当前业务中运行后,我...

weixin_34383618的博客 8067

GD32F103实战:用ADC+DMA实现高精度多通道电压采集与OLED实时显示(附完整工程)

本文详细介绍了如何利用GD32F103的ADC+DMA技术实现高精度多通道电压采集,并通过OLED实时显示数据。文章包含硬件架构设计、ADC配置技巧、DMA传输优化及显示系统实现方案,提供完整工程代码和调试指南,适用于工业传感器和环境监测设备开发。

weixin_42567497的博客 402

【黑马头条】-day04自媒体文章审核-阿里云接口-敏感词分析DFA-图像识别OCR-异步调用MQ

day04自媒体文章审核-阿里云接口-敏感词分析DFA-图像识别OCR-异步调用MQ

bblb的博客 2827

rk3399 hdmi HDCP key烧录

1.key转换 使用 hdcp\ProvisioningTool_20170526\KeyConverterV2.02 目录下的KeyConvertor.exe工具将1.4key进行转换 转换后得到 TX00000001.skf 文件,将 TX00000001.skf 文件烧录到开发板上,烧录方式: 打开文件 hdcp\ProvisioningTool_20170526\ProvisioningTool20170526\ProvisioningTool.exe 选择烧录方式与烧录路...

qq_32645109的博客 3860

Scrapy实现微博关键词爬虫(爬虫结果写入mongodb)

话不多说,上代码: spiders文件夹下的microBlogSpider.py里这样写: # -*- coding: utf-8 -*- import scrapy from scrapy import Spider, Request, FormRequest from scrapy.selector import Selector import datetime import random from blogSpider.items import microBlogItem, keyWordItem f

qq_39360565的博客 1779

java黑马头条 day5自媒体文章审核 敏感词过滤算法DFA 集成RabbitMQ实现自动审核

做为内容类产品,内容安全非常重要,所以需要进行对自媒体用户发布的文章进行审核以后才能到app端展示给用户。2WmNews 中status代表自媒体文章的状态status字段:0 草稿 1 待审核 2 审核失败 3 人工审核 4 人工审核通过 8 审核通过(待发布) 9 已发布当自媒体用户提交发布文章之后,会发消息给RabbitMQ提交审核自媒体微服务提供消息监听,处理自动审核查询文章数据判断文章id是否为1 (只有1需要自动审核)

m0_73859807的博客 3555

icem二维非结构网格划分_ICEM CFD网格装配

正文共:718字7图 预计阅读时间:2分钟1 前言 对于一些大型的复杂的网格划分,可以将整个模型切分成多个子模型(二维几何用线切分,三维模型用面切分),然后对各个模型单独划分网格,最终装配在一起。这和机械设计的零件设计和装配设计有点相似,这个功...

weixin_39908758的博客 1625

头条系统-04-自媒体文章-自动审核-内容安全阿里云接口(图片和文本审核)、app端文章保存feign远程调用、spring异步调用、DFA自定义敏感词过滤、图片OCR识别、freemarker静态

me:自向箭头是内部代码就完成了,不需要调用其他微服务接口。 文章状态: 内容安全是识别服务,支持对图片、视频、文本、语音等对象进行多样化场景检测,有效降低内容违规风险。目前很多平台都支持内容检测,如阿里云、腾讯云、百度AI、网易云等国内大型互联网公司都对外提供了API。按照性能和收费来看,黑马头条项目使用的就是阿里云的内容安全接口,使用到了图片和文本的审核。阿里云收费标准:https://www.aliyun.com/price/product/?spm=a2c4g.11186623.2.10.41464

树叶子的博客 1911

广义标签多伯努利滤波器(GLMB):多目标跟踪中的动态身份维护理论与算法解析

目标集表示Xx1l1x2l2xNlNX{(x1​l1​x2​l2​xN​lN​)}xi∈Rdxi​∈Rd为目标状态(如位置、速度),li∈Lli​∈L为唯一标签(可数无限集,如自然数序列),N 为目标数(允许N0N=0N0,即空集)。GLMB 通过广义化标签多伯努利分布,将多目标跟踪从 “状态估计” 提升至 “动态身份 - 状态联合建模”,成为复杂场景下精准跟踪的核心技术。

qq_44965657的博客 1601

YOLOv13添加轻量化的EMA模块Faster_EMA,轻量又涨点!map50提升4.56个点,召回率提升9.66!

本文介绍了YOLOv13模型的优化移植方法,通过添加Faster_EMA模块和超参数调整,使模型性能显著提升。主要修改包括:1) 创建新的模型配置文件yolov13-Faster_EMA.yaml;2) 在tasks.py中添加新模块;3) 修改__init__.py和block.py文件,新增Partial_conv3和DropPath类。优化后模型mAP50提升4.56%,召回率提升9.66%,验证了改进方案的有效性。代码实现了局部卷积和随机深度等先进技术,为YOLO系列模型性能优化提供了新思路。

FJN110的博客 2605

04自媒体文章-自动审核(阿里云自动审核文章和图片、服务降级处理、异步调用@Async、自管理敏感词DFA、OCR识别图片文字、文章详情-静态文件生成)

内容安全是识别服务,支持对图片、视频、文本、语音等对象进行多样化场景检测,有效降低内容违规风险。目前很多平台都支持内容检测,如阿里云、腾讯云、百度AI、网易云等国内大型互联网公司都对外提供了API。按照性能和收费来看,黑马头条项目使用的就是阿里云的内容安全接口,使用到了图片和文本的审核。

qq_56947957的博客 1457

计算机毕设:线性回归 Xgboost LSTM 预测黄金价格实战 完整代码数据视频讲解 可直接运行

线性回归 Xgboost LSTM 预测黄金价格实战 完整代码数据视频讲解 可直接运行

1762

文本内容安全审核

短文本过滤实例,可用于智能识别各种违法违规内容,如涉黄、涉政、暴恐、辱骂、广告、灌水… 当前监管越发严重,如何避免用户发布的内容给平台造成风险,内容安全审核是避规内容风险的主要方式。 内容安全审核一般分为机审和人审两种方式并行的策略,各云厂商一般已经集成成接口服务,包括文本、图像、语音、视频等,同时也支持私有化部署。 本文只调研关于文本的内容安全审核,文本和图像还是可以自己做的。功能:提供图片、视频、文本、语音、网页等形式内容违规检测API,覆盖暴恐、涉政、涉黄、广告、辱骂、不良场景等风险检测能力。技术:鉴

大漠帝国的博客 3万+

CATIA二次开发——遍历几何图形集下的轴系及控制轴系生成位置

CATIA二次开发——轴系相关问题1.遍历几何图形集下的轴系2.解决轴系生成位置的问题 1.遍历几何图形集下的轴系 近期遇到的问题:遍历轴系的时候发现,AxisSystem属性的轴系只有放在轴系集合下,才能被找到,放在几何图形集或其他位置均不能被找到。本来想遍历几何图形集下的轴系元素,但是发现没有对应的属性,只能查找 几何图形集、几何元素、草图等元素,无法直接遍历轴系。 解决办法:(加入选择集,在选择集中筛选轴系类型) HybridBody axisHB = activePart.HybridBodies

WorkMan的博客 2731

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

阿里云内容审核(企业项目全部使用流程)+全部代码流程+对返回内容封装

开通阿里安全内容管理账号,获取AccessKey_ID、AccessKey_Secret。

kk_lina的博客 3935

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

04-自媒体文章-自动审核

自媒体文章-自动审核 1)自媒体文章自动审核流程 1 自媒体端发布文章后,开始审核文章 2 审核的主要是审核文章的内容(文本内容和图片) 3 借助第三方提供的接口审核文本 4 借助第三方提供的接口审核图片,由于图片存储到minIO中,需要先下载才能审核 5 如果审核失败,则需要修改自媒体文章的状态,status:2 审核失败 status:3 转到人工审核 6 如果审核成功,则需要在文章微服务中创建app端需要的文章 2)内容安全第三方接口 2.1)概述 内容安全是识别服务,支持对图片、视频

shall_zhao的博客 2089

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

黑马头条Day4_自媒体文章自动审核

自媒体文章自动审核

做一个善良的人,做好自己的事,如果愿意,再发一份光。 911

黑马头条--day04--文章审核

1 自媒体端发布文章后,开始审核文章2 审核的主要是审核文章的内容(文本内容和图片)3 借助第三方提供的接口审核文本4 借助第三方提供的接口审核图片,由于图片存储到minIO中,需要先下载才能审核5 如果审核失败,则需要修改自媒体文章的状态,status:2 审核失败 status:3 转到人工审核6 如果审核成功,则需要在文章微服务中创建app端需要的文章。

可爱的鸡仔的博客 2426

98 自媒体文章审核

自媒体文章审核1 自动审核流程介绍2 内容安全第三方接口对接2.1 内容安全接口选型2.2 阿里云服务介绍2.2.1 准备工作2.2.2 阿里云安全-文本内容垃圾检测2.2.3 阿里云安全-图片审核3.1 依赖引入3.2 引入图片上传工具类3.3 新建配置文件3.4 测试4 敏感词过滤算法DFA4.1 DFA实现原理4.2 代码实现5 自媒体文章审核5.1 表结构说明5.2 准备远程调用接口5.3 审核接口实现5.3 单元测试6 集成RabbitMQ实现自动审核6.1 同步调用与异步调用6.2 安装Rab

THE ORDER 375

某项目文章审核

这里面又涉及到从minio下载图片,这个放到后面章节再说,这里面又涉及到base64的转换,因为之前用的内容安全,图片接口是byte数组的list,现在视觉智能用的String类型的list,所以要讲byte数组转换为String,同时这里也涉及到tess4j,从图片提取文字,现在只是初级版本,还未升级,后期会使用百度OCR,然后敏感词算法这里用的是DFA算法,前面已经给出了,就是那个大名鼎鼎非0即1的算法。剩下的内容会继续更新,敬请期待,别忘一键三连哟。分为了几步,以下分别列出每步的方法。

2301_82147294的博客 591

微服务项目实战-黑马头条(五):自媒体端-自动审核流程

文章目录一、自媒体文章自动审核流程二、内容安全第三方接口2.1 概述2.2 准备工作2.3 文本内容审核接口2.4 图片审核接口2.5 项目集成三、app端文章保存接口3.1 表结构说明3.2 分布式id3.3 思路分析3.4 feign接口四、自媒体文章自动审核功能实现4.1 表结构说明4.2 实现4.3 feign远程接口调用方式4.4 单元测试4.5 服务降级处理五、发布文章提交审核集成5.1 同步调用与异步调用5.2 Springboot集成异步线程调用六、文章审核功能-综合测试6.1 服务启动列表

shendaiyan的博客 1814

一套小连招搞定文章评论审核!Java实战篇(结合DeepSeek实现)

本文介绍了一套高效的多层次评论内容审核方案,针对公开网站防止恶意评论和违禁内容。作者比较了本地词库、开源组件和第三方API等主流方案后,提出融合四种技术的综合方案:本地Trie树敏感词库、开源组件、第三方API和AI审核,通过权重判定提高准确率至99.99%。重点讲解了基于Trie树的本地敏感词检测实现,包括树结构构建和Java代码示例,并指出该方案兼顾准确性与成本效益,尤其适合中小型网站。

小柯的的博客 1006

JavaWeb_LeadNews_Day4-阿里云内容安全, 雪花算法, app文章保存, 自媒体文章审核

JavaWeb_LeadNews_Day4-阿里云内容安全, 雪花算法, app文章保存, 自媒体文章审核

Y_cen的博客 2014
下一篇: SQL调优简单总结
猿伺服
博客等级 码龄5年 102粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值