百度文本内容审核

2023-11-07

百度提供了免费的文本内容审核 响应时间在1秒左右
第一步:在百度开发账号中创建应用,获取配置信息

/**
 * 百度图片审核配置信息
 */
public class BaiduSensitiveConfig {
    /**
     * 1.app id
     */
    public static final String APP_ID = "";
    /**
     * 2.api key
     */
    public static final String API_KEY = "";
    /**
     * 3.secret key
     */
    public static final String SECRET_KEY = "";
    /**
     * 4.文字认证接口
     */
    public static final String WORD_URL="https://aip.baidubce.com/rest/2.0/antispam/v2/spam";

}

第二部创建应用对象 采用单例模式

	   /**
 * 实例化百度处理客户端
 */
private static class SingletonHolder{
    private final static AipContentCensor instance= new AipContentCensor(BaiduSensitiveConfig.APP_ID, BaiduSensitiveConfig.API_KEY, BaiduSensitiveConfig.SECRET_KEY);
}
public static AipContentCensor getClientInstance(){
    return SingletonHolder.instance;
}

第三步

/** 
 *  敏感词过滤 工具类
 */  
public class BaiduSensitiveWord {
	//调用两种方式对比速度
    public static void main(String[] args) {
        String content = "asdfv";
        DecimalFormat df=new DecimalFormat("0.00");
        long start= System.currentTimeMillis();
        System.out.println(check(content));
        long end = System.currentTimeMillis();
        System.out.println("耗时"+df.format((float)(end-start)/1000)+"s");
        long start2= System.currentTimeMillis();
        System.out.println(checkBySDK(content));
        long end2 = System.currentTimeMillis();
        System.out.println("耗时"+df.format((float)(end2-start2)/1000)+"s");
    }
    /**
     * 百度检查文字输入是否合格
     * 调api接口实现
     * @param content
     * @return
     */
    public static boolean check(String content){
        HttpClient client = HttpClientBuilder.create().build();
        String url = BaiduSensitiveConfig.WORD_URL+"?access_token="+AuthService.getAuth();
        HttpPost post = new HttpPost(url);

        JSONObject response = null;
        try {
            StringEntity s = new StringEntity("content="+content);
            s.setContentEncoding("UTF-8");
            s.setContentType("application/x-www-form-urlencoded");
            post.setEntity(s);
            HttpResponse res = client.execute(post);
            //200
            if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
                String result = EntityUtils.toString(res.getEntity());
                // 返回json格式:
                System.out.println(result);
                response = JSONObject.parseObject(result);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

        if (response.containsKey("result")){
            int result = JSONObject.parseObject(response.get("result").toString()).getInteger("spam");
            if (result==0) {return true;}
        }

        return false;

    }

    /**
     * 百度验证文件合法
     * 调SDK实现
     * @return
     */
    public static boolean checkBySDK(String content){
        AipContentCensor client = BaiduSensitiveImg.getClientInstance();
        org.json.JSONObject response = client.antiSpam(content, null);
        System.out.println(response.toString());
        if (response.has("result")){
            int result = JSONObject.parseObject(response.get("result").toString()).getInteger("spam");
            if (result==0) {return true;}
        }
        return false;
    }
}  

注:调用api接口时需要获取access_token,方法在百度文档中可以找到。

package com.mwztc.utils.baidu;

import com.mwztc.config.BaiduSensitiveConfig;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;

/**
 * 获取百度云接口调用token
 */
public class AuthService {

    /**
     * 获取权限token
     * @return 返回示例:
     * {
     * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
     * "expires_in": 2592000
     * }
     */
    public static String getAuth() {
        // 官网获取的 API Key 更新为你注册的
        String clientId = "百度云应用的AK";
        // 官网获取的 Secret Key 更新为你注册的
        String clientSecret = "百度云应用的SK";
        return getAuth(BaiduSensitiveConfig.API_KEY, BaiduSensitiveConfig.SECRET_KEY);
    }

    /**
     * 获取API访问token
     * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
     * @param ak - 百度云官网获取的 API Key
     * @param sk - 百度云官网获取的 Securet Key
     * @return assess_token 示例:
     * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
     */
    public static String getAuth(String ak, String sk) {
        // 获取token地址
        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
        String getAccessTokenUrl = authHost
                // 1. grant_type为固定参数
                + "grant_type=client_credentials"
                // 2. 官网获取的 API Key
                + "&client_id=" + ak
                // 3. 官网获取的 Secret Key
                + "&client_secret=" + sk;
        try {
            URL realUrl = new URL(getAccessTokenUrl);
            // 打开和URL之间的连接
            HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
            connection.setRequestMethod("GET");
            connection.connect();
            // 获取所有响应头字段
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍历所有的响应头字段
            for (String key : map.keySet()) {
                System.err.println(key + "--->" + map.get(key));
            }
            // 定义 BufferedReader输入流来读取URL的响应
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String result = "";
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
            /**
             * 返回结果示例
             */
            System.err.println("result:" + result);
            JSONObject jsonObject = new JSONObject(result);
            String access_token = jsonObject.getString("access_token");
            return access_token;
        } catch (Exception e) {
            System.err.printf("获取token失败!");
            e.printStackTrace(System.err);
        }
        return null;
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

百度文本内容审核 的相关文章

  • 如何修复无效的 API 密钥、IP 或操作权限错误?

    这是币安加密货币交易所 API 我试图获取帐户信息 但我无法做到这一点 它是官方 C Api 这是github链接 https github com binance exchange binacpp 这是终端上的错误 回答问题时 请轻松一点
  • Alamofire 使用公共键和多个值传递参数?

    我需要在我的项目中执行此操作 如果我手动将字符串附加到 Alamofire 中的 URL 我可以轻松完成此操作 但我不希望这样做 我想要的参数为范围 object 参数的一个公共键中有多个值 我一直在做什么 public func find
  • 我们可以使用 axios 的 onDownloadProgress 来加载 API 吗?

    我需要使用 axios 创建一个用于在 React 项目中加载 API 的进度条 我为此发现了 onDownloadProgress 函数 但我不知道我们是否可以使用它来获取诸如加载百分比之类的信息 或者它是否仅用于文件下载 所以我不确定我
  • 在 AtTask PUT 请求中发送多个更新

    我想知道 AtTask 的 API 中是否有一种方法可以在单个 URL 请求中发布多个更新 例如 我需要更新 1 000 条记录的 extRefID 我是否可以对 API 进行 1 000 次调用 就开销而言成本高昂 或者我可以使用包含如下
  • 使用 PHP 发布到 Blogger

    我在使用 PHP 的 Blogger API 时遇到问题 我需要的是能够将新的博客文章发布到我的博客帐户 我使用的代码取自 Google API 页面 http code google com intl nl apis blogger do
  • Android 添加新日历

    我已经检查了所有从 Android 应用程序中创建新日历的方法 我见过的唯一方法是在最新的 api 版本中使用新的 Calendar API 但这似乎只有在您使用时才有效CalendarContract ACCOUNT TYPE LOCAL
  • 通过 Office API 将多个 Word 文档保存为 HTML

    我有大量的Word文档需要解析 由于它们都是从同一个模板创建的 我认为最好的方法是将它们保存为 HTML 文件并解析 HTML 本身 虽然将单个 Word 文档保存为 HTML 相当容易 但我还没有找到从 Word 内部执行批量过程的方法
  • Swift:转义闭包捕获非转义参数“onCompletion”

    我的 swift 有问题 我正在尝试发送 API 请求 然后检索数据 但收到以下错误消息 Swift 转义闭包捕获非转义参数 onCompletion 有谁知道我该如何解决这个问题 提前致谢 Code class RestApiManage
  • 如何在 Google Maps API 中指示语言?

    就像你访问一样maps google com tw or maps google co kr or maps google co jp 您可以看到每个国家 地区都显示自己的语言 我可以在 Google 地图 API 中使用任何属性来动态设置
  • 通过API更新Twitter背景

    我在通过 Twitter 的 API 更新背景时遇到了一些问题 target url http www google com logos 11th birthday gif ch curl init curl setopt ch CURLO
  • 如何在 NodeJS 中允许表单数据

    我最近创建了一个接受文件的 API 我正在尝试使用 Postman 测试 API 如果我使用发出帖子请求x wwww form urlencoded身体类型 一切正常 我得到了所有预期的数据 唯一的问题是它不允许发送文件 如果我使用form
  • 适用于 iPhone 和 HTTP 直播的实时视频聊天

    所以一般来说 我想为 iPhone 制作一个具有视频聊天功能的应用程序 但经过多次搜索 我仍然找不到任何成功的结果 是否有任何公共或私有 API 可用于在 iPhone 上执行此操作 如果您的答案是 是 请帮助我 基本上 我想要的是读取连接
  • 使用 PRAW 帮助获取 Reddit 帖子链接到的 URL

    我正在尝试使用 Praw 获取 Reddit 提交标题中链接的帖子 例如提交 http www reddit com r AdviceAnimals comments 1adu71 apparently people still need
  • 寻找Android源代码

    Android API 是开源的吗 如果是这样 我想看看他们如何实现 ListView 对象的 smoothscroll 方法 这是在 API 级别 8 中实现的 但我想针对早期的 API 级别进行构建 我该如何找到这个 是的 它是开源的
  • Twitter 的推文按钮有回调吗?

    有没有办法在 Twitter 的推文按钮上注册回调 我希望能够跟踪我网站上的哪些特定用户在 Twitter 上发布了链接 我无法添加 onClick 事件 因为它是跨域 iFrame 还有其他想法吗 我见过一种方法 https stacko
  • 端点按资源 swagger 注释分组?

    我正在使用 Spring 进行 REST API 开发 我有一些 API 其中有很多端点 当我打开 swagger ui 时 它看起来很拥挤 我刚刚读过this https swagger io docs specification gro
  • SSDT SQL Server 数据库项目中用于架构比较的命令行/API?

    在 Visual Studio 2012 中 我们有Schema Compare http msdn microsoft com en us library hh272690 28v vs 103 29 aspx in SSDT http
  • 有没有办法以编程方式访问 Google 的搜索引擎结果? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 谷歌是否提供了一种以编程方式查看特定查询的搜索引擎结果的方法 我想构建一个跟踪应用程序 以便用户可以看
  • 生产者程序中的 kafka 网络处理器错误(ArrayIndexOutOfBoundsException:18)

    我有下面的 kafka Producer Api 程序 我对 kafka 本身是新手 下面的代码从 API 之一获取数据并将消息发送到 kafka 主题 package kafka Demo import java util Propert
  • 将 CURL 命令行转换为 VBA

    在 CURL 中 我可以使用这一行 curl data DataToBeSent https example com resource cgi 我正在努力将此类行转换为在 VBA 中使用 这是我到目前为止的尝试 Sub POST Metho

随机推荐

  • AdaDelta算法

    记录一下自己的学习过程 也能让自己的印象更深吧 AdaDelta算法主要是为了解决AdaGrad算法中存在的缺陷 下面先介绍一下AdaGrad算法优点和以及存在的问题 AdaGrad的迭代公式如下所示 x t
  • C#异常处理18条最佳实践

    首先 异常处理应该是系统设计规约的一部分出现在系统设计文档中 而不仅仅是一种技术实现 作为设计文档的一部分 异常处理应该着眼于系统容错性和稳定性 正如楼主提到的那样 然后在根据这个规约 再来具体讨论和选择异常处理中使用的各种技术细则 比如
  • 飞机大战小游戏

    欢迎来到程序小院 飞机大战 玩法 单机屏幕任意位置开始 点击鼠标左键滑动控制飞机方向 射击打掉飞机 途中遇到精灵吃掉可产生联排发送子弹 后期会有Boss等来战哦 开始游戏https www ormcc com play gameStart
  • 文字点选验证码识别(上)-YOLO位置识别

    声明 本文以教学为基准 本文提供的可操作性不得用于任何商业用途和违法违规场景 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任 如有侵权 请联系我进行删除 文章中没有代码 只有过程思路 请
  • mysql8设置sql_mode

    原文 mysql8报错 在mysql配置文件下设置 sql mode NO AUTO VALUE ON ZERO STRICT TRANS TABLES NO ZERO IN DATE NO ZERO DATE ERROR FOR DIVI
  • 重磅!阿里推出国产开源的jdk!

    简介 Alibaba Dragonwell 是一款免费的 生产就绪型Open JDK 发行版 提供长期支持 包括性能增强和安全修复 阿里巴巴拥有最丰富的Java应用场景 覆盖电商 金融 物流等众多领域 世界上最大的Java用户之一 Alib
  • 同样25岁,为什么有人事业有成,有人却一无所有?

    文章来源知乎 https www zhihu com question 21726594 文 陈彬 我刚过24周岁的生日 虚岁的话也算是25了 说下自己吧 我是农村孩子 我爸是木工 初中文化 我妈是农村妇女 小学没上完 算认得几个字 我上面
  • shell 向 awk 传递变量参数

    本文翻译自StackOverflow提问 How do I use shell variables in an awk script 但更改了文章段落结构和部分表述 方式1 使用 v 选项 最好的方式 兼容性最佳 使用 v选项 P S 记得
  • eclipse 快捷键大全

    1 Eclipse常用快捷键 1 Ctrl Space 说明 内容助理 提供对方法 变量 参数 javadoc等得提示 应运在多种场合 总之需要提示的时候可先按此快捷键 注 避免输入法的切换设置与此设置冲突 2 Ctrl Shift Spa
  • Windows系统route add delete change路由增加改变删除

    1 管理员身份打开命令行cmd 注 如遇到需上升操作权限 是因为没有使用管理员身份运行cmd 搜索输入cmd 右击 以管理员身份 或者win10右击win图标 选择命令提示符 管理员 2 route 路由 详细操作 输入route 可以看到
  • 聊聊ChatGPT是如何组织对话的

    为什么要组织对话 总所周知 ChatGPT的训练大致可分为下图中展示的几个阶段 其中 在Pretraining阶段 模型的训练数据是纯文本 目标是根据上文预测下一个token 而在后面的几个阶段中 为了让模型具备对话的能力 相应的就需要使用
  • 腾讯QQ 桌面版的内存优化探索与总结

    大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 相比用户停留时间短 用完即走的 Web 页面 桌面 QQ 用户在一次登录后 可能会挂机一周以上 这段期间 如果没有严格控制好 QQ 内存
  • 07 Vue中样式绑定方法 三种方法汇总

    1 第一种方法 使用class 进行绑定样 通过 activated 真假来控制 div div div div
  • Redis数据类型

    目前Redis数据库支持5种数据类型 分别是String 字符串 Hash 哈希 List 列表 Set 集合 Sorted Set 有序集合 1 字符串 String 字符串类型是Redis中最基本的数据类型 它是二进制安全的 任何形式的
  • usb otg type-c的硬件介绍

    一 usb硬件接口 Type A Type B Type C Mini usb Micro usb 1 typeA 2 Type b 3 Type c 4 Mini usb 5 Micro usb 二 usb线序 1 Usb2 0 usb2
  • 【数据库软件(MySQL)学习】day01

    数据库 database 保存有组织的数据的容器 通常是一个文件或一组文件 DBMS 数据库管理系统 即数据库管理软件 数据库是通过DBMS创建和操纵的容器 表 table 某种特定类型数据的结构化清单 模式 scheme 关于数据库和表的
  • QT开发之过滤器

    1 使用 需要先添加 ui gt lineEdit gt installEventFilter this 在窗体上为lineEdit1安装过滤器 头文件声明 bool eventFilter QObject QEvent 过滤器 bool
  • 成功解决:RuntimeError: DataLoader worker (pid(s) XXX) exited unexpectedly

    num workers是用来指定开多进程的数量 默认值为0 表示不启用多进程 将num workers改为0即可 0是默认值
  • iTab浏览器插件安装教程

    iTab浏览器插件 iTab是一个好看好用的自定义卡片式浏览器新标签页扩展 安装iTab标签页扩展后 您将告别呆板无趣的原生标签页 享受iTab标签页为您带来的个性化新体验 离线资源下载 iTab资源 安装教程 IE 浏览器 1 打开浏览器
  • 百度文本内容审核

    百度提供了免费的文本内容审核 响应时间在1秒左右 第一步 在百度开发账号中创建应用 获取配置信息 百度图片审核配置信息 public class BaiduSensitiveConfig 1 app id public static fin