功能描述

关键词检测是对文本检测的最简单的一种方式,本文章对一段文本进行关键词的匹配,判断是否包含特定关键词。​

HTTP 接口描述

场景(scene)中文名 场景(scene) 分类(label) 备注
关键词检测 keyword normal 正常文本
关键词检测 keyword spam 含违规信息
关键词检测 keyword ad 广告
关键词检测 keyword politics 渉政
关键词检测 keyword terrorism 暴恐
关键词检测 keyword porn 色情
关键词检测 keyword contraband 违禁
关键词检测 keyword customized 自定义(比如命中自定义关键词)

​​​​

1.2 文本关键词检测 (uri: /green/text/scan)

检测文本是否为命中特定关键词。请求body是一个结构体,说明如下:​

字段 类型 是否必须 说明
bizType 字符串 可选 业务类型,调用方从绿网申请所得。每个bizType对应不同的算法/模型。根据配置,后端可根据该字段对请求做不同处理。属于高级用法
scenes 字符串数组 必须 字符串数组,场景定义参考1.1小节;关键词检测,scenes请填写keyword
tasks JSON数组 必须 文本检测任务列表;每个元素是个结构体,最多支持100个,即100段文本的检测.参见下表。

JSON数组中的每个元素是一个结构体,有如下字段:

字段 类型 是否必须 说明
clientInfo JSON结构体 可选 客户端信息,参考[调用方式/公共请求参数/公共查询参数]小节中ClientInfo结构体描述。服务器会把[调用方式/公共请求参数/公共查询参数]小节中全局的clientInfo和这里的独立的clientInfo合并。独立的clientInfo优先级更高。
dataId 字符串 可选 调用者通常保证一次请求中,所有的dataId不重复
content 字符串 必须 待检测文本
time 整形 可选 内容创建/编辑时间,单位ms
category 字符串 可选 内容类别,取值范围为[“post”, “reply”, “comment”, “title”, “others”];也可以自定义的其他类型,但长度不超过64字节
action 字符串 可选 操作类型,取值范围为[“new”, “edit”, “share”, “others”];也可以自定义的其他操作类型,但长度不超过64字节
relatedDataId 字符串 可选 相关dataId;当contentType为reply或comment时,该字段设置相关的主贴或对应的comment的dataId
relatedContent 字符串 可选 相关字符串;当contentType为reply或comment时,该字段设置为主贴内容或对应的comment

返回body中的Data字段是JSON数组,每一个元素有如下字段:

字段 类型 是否必须 说明
code 整形 必须 错误码,和http的status code一致
msg 字符串 必须 错误描述信息
dataId 字符串 可选 对应的请求中的dataId
taskId 字符串 必须 绿网服务器返回的唯一标识该检测任务的ID
content 字符串 可选 对应的请求中的content
results 数组 可选 当成功时(code == 200),该结果的包含一个或多个元素。每个元素是个结构体。参见下表。

上表results中包含的元素说明:

字段 类型 是否必须 说明
scene 字符串 必须 风险场景
suggestion 字符串 必须 建议用户处理,取值范围:[“pass”, “review”, “block”], pass:文本正常,review:需要人工审核,block:文本违规,可以直接删除或者做限制处理
label 字符串 必须 该文本的分类,取值范围参考1.1小节
rate 浮点数 必须 结果为该分类的概率;值越高,越趋于该分类;取值为[0.00-100.00], 分值仅供参考,您只需要关注label和suggestion的取值即可
extras JSON对象 可选 附加信息,命中的上下文.该值将来可能会调整,建议不要在业务上进行依赖

各语言SDK依赖开发环境准备

请参照 https://develop.aliyun.com/sdk/java?spm=5176.doc28430.2.1.Qp3LL4 准备阿里云SDK依赖环境, 进行开发.

添加依赖包 maven
内容检测API SDK包含阿里云Java SDK公共部分和内容检测部分,公共部分依赖 aliyun-java-sdk-core , 内容检测部分依赖 aliyun-java-sdk-green

Maven Dependencies

  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>aliyun-java-sdk-core</artifactId>
  4. <version>3.0.7</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.aliyun</groupId>
  8. <artifactId>aliyun-java-sdk-green</artifactId>
  9. <version>3.0.0</version>
  10. </dependency>

代码实现
1.1 config.properties

阿里云accessKeyId、accessKeySecret
accessKeyId=你的accessKeyId
accessKeySecret=你的accessKeySecret
调用阿里绿网服务的regionId,目前服务有两个集群,支持cn-hangzhou、cn-shanghai
regionId=cn-hangzhou

1.2 BaseSample.java

import java.io.IOException;
import java.util.Properties;

/**
* Created by liqingfeng.lh on 17/01/12.

public class BaseSample {

protected static String accessKeyId;
protected static String accessKeySecret;protected static String regionId;static {Properties properties = new Properties();try {properties.load(BaseSample.class.getResourceAsStream("config.properties"));accessKeyId = properties.getProperty("accessKeyId");accessKeySecret = properties.getProperty("accessKeySecret");regionId = properties.getProperty("regionId");} catch(IOException e) {e.printStackTrace();}}protected static String getDomain(){if("cn-shanghai".equals(regionId)){return "green.cn-shanghai.aliyuncs.com";}return "green.cn-hangzhou.aliyuncs.com";
}protected static String getEndPointName(){return regionId;
}

}

1.3 TextKeywordScanSample.java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.green.model.v20170112.TextScanRequest;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;

/**
* Created by liqingfeng on 16/3/2.
* 文本检测
*/
public class TextKeywordScanSample extends BaseSample {

public static void main(String[] args) throws Exception {//请替换成你自己的accessKeyId、accessKeySecretIClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);DefaultProfile.addEndpoint(getEndPointName(), regionId, "Green", getDomain());IAcsClient client = new DefaultAcsClient(profile);TextScanRequest textScanRequest = new TextScanRequest();textScanRequest.setAcceptFormat(FormatType.JSON); // 指定api返回格式textScanRequest.setContentType(FormatType.JSON);textScanRequest.setMethod(com.aliyuncs.http.MethodType.POST); // 指定请求方法textScanRequest.setEncoding("UTF-8");textScanRequest.setRegionId(regionId);List<Map<String, Object>> tasks = new ArrayList<Map<String, Object>>();Map<String, Object> task1 = new LinkedHashMap<String, Object>();task1.put("dataId", UUID.randomUUID().toString());task1.put("content", "你想要检测的关键字");tasks.add(task1);JSONObject data = new JSONObject();data.put("scenes", Arrays.asList("keyword"));data.put("tasks", tasks);textScanRequest.setContent(data.toJSONString().getBytes("UTF-8"), "UTF-8", FormatType.JSON);/*** 请务必设置超时时间*/textScanRequest.setConnectTimeout(3000);textScanRequest.setReadTimeout(6000);try {HttpResponse httpResponse = client.doAction(textScanRequest);if(httpResponse.isSuccess()){JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getContent(), "UTF-8"));System.out.println(JSON.toJSONString(scrResponse, true));if (200 == scrResponse.getInteger("code")) {JSONArray taskResults = scrResponse.getJSONArray("data");for (Object taskResult : taskResults) {if(200 == ((JSONObject)taskResult).getInteger("code")){JSONArray sceneResults = ((JSONObject)taskResult).getJSONArray("results");for (Object sceneResult : sceneResults) {String scene = ((JSONObject)sceneResult).getString("scene");String suggestion = ((JSONObject)sceneResult).getString("suggestion");//根据scene和suggetion做相关的处理//do somethingSystem.out.println("args = [" + scene + "]");System.out.println("args = [" + suggestion + "]");}}else{System.out.println("task process fail:" + ((JSONObject)taskResult).getInteger("code"));}}} else {System.out.println("detect not success. code:" + scrResponse.getInteger("code"));}}else{System.out.println("response not success. status:" + httpResponse.getStatus());}} catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();} catch (Exception e){e.printStackTrace();}
}

}

请求body例子:

  1. {
  2. "scenes":[
  3. "keyword"
  4. ],
  5. "tasks":[
  6. {
  7. "dataId":"f14cde88-a5d3-44f7-b1a1-80d95b474f99",
  8. "content":"balala1"
  9. },
  10. {
  11. "dataId":"4a57e971-62b1-4a75-9563-cc2703b28244",
  12. "content":"balala2"
  13. }
  14. ]
  15. }

响应例子:

  1. {
  2. "msg":"OK",
  3. "code":200,
  4. "data":[
  5. {
  6. "msg":"OK",
  7. "code":200,
  8. "dataId":"f14cde88-a5d3-44f7-b1a1-80d95b474f99",
  9. "results":[
  10. {
  11. "rate":99.91,
  12. "suggestion":"block",
  13. "extras":{
  14. "hitContext":"balala"
  15. },
  16. "label":"porn",
  17. "scene":"keyword"
  18. }
  19. ],
  20. "content":"balala",
  21. "taskId":"6cb22909-bb61-4848-8fab-0d4bc8dc4b9c-1494295749828"
  22. },
  23. {
  24. "msg":"OK",
  25. "code":200,
  26. "dataId":"4a57e971-62b1-4a75-9563-cc2703b28244",
  27. "results":[
  28. {
  29. "rate":99.91,
  30. "suggestion":"block",
  31. "extras":{
  32. "hitContext":"balala"
  33. },
  34. "label":"spam",
  35. "scene":"keyword"
  36. }
  37. ],
  38. "content":"balala",
  39. "taskId":"1249a8c2-5bb3-477c-98d9-f78dad8ae15b-1494295749828"
  40. }
  41. ],
  42. "requestId":"96B928F4-1668-4F43-A3ED-4480ACBDA24C"
  43. }

总结
根据返回根据scene(场景)和suggetion(pass or block)做相关的处理,

阿里云文本关键词过滤检测相关推荐

  1. 解密阿里云高效病原体基因检测工具

    1.背景介绍 病原体基因检测,为各种严重感染的诊断提供了基础.病原体检测流程分成五个步骤:(1)采集病人的样本,比方说静脉血,痰液,肺泡灌洗液,或者脑脊髓液等.(2)对样本进行培养,提取样本中的核酸组 ...

  2. 阿里云服务器由于被检测到对外攻击,已阻断该服务器对其它服务器端口的访问...

    问题: (系统:CentOS 7.2 ) 前几天在阿里云服务器安装了Redis, 刚开始没有设置redis密码, 后台阿里云发送多次邮件提示如下: 经过几次波折才发现并彻底解决了问题: 原因: 估计是 ...

  3. C#实现文本关键词过滤

    思路来自编译原理,当然跟编译原理的算法相比还错的很多, 上代码: /// <summary>/// 关键词标识方法/// </summary>/// <param nam ...

  4. ThinkPHP5 如何介入阿里云反文本垃圾敏感词过滤【附源码】

    很多时候我们给与客户端在发布内容的时候,就很担心被客户输入恶意敏感词等信息,如若不慎还可能网站被封等:为了减少后台人工审核的成本,我们接入阿里云反文本垃圾. 第一步:在阿里云申请accessKeyId ...

  5. 阿里云盾控制台在哪里?360网站安全检测不支持阿里云主机网站解决方法

    阿里云盾控制台在哪里?360网站安全检测不支持阿里云主机网站解决方法 用了阿里云快3年了,不二版本感觉阿里云的服务器用户体验做得相当好,这也是为什么选择阿里云的原因,但是最近发现一个美中不足的问题,阿 ...

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

    前言 项目地址:Text-Sensitivity 笔者在开发小程序时,由于需要对用户输入内容进行敏感词检查,故需要使用现有服务商的相关API(自行开发NLP产品,难度大). 我们技术团队初步使用的是腾 ...

  7. 如何在实际场景中使用异常检测?阿里云Prometheus智能检测算子来了

    作者|梵登.白玙 审核&校对:白玙 编辑&排版:雯燕 背景 异常检测作为智能运维(AIOps)系统中基础且重要功能,其旨在通过算法自动地发现 KPI 时间序列数据中的异常波动,为后续的 ...

  8. 对接阿里云内容安全服务(机审视频检测)

    阿里云内容安全异步检测文档地址: https://help.aliyun.com/document_detail/70436.htm?spm=a2c4g.11186623.0.0.6da625ecGm ...

  9. 端口开通情况检测工具的阿里云服务器

    阿里云服务器端口开通是在安全组中设置的,如何查看阿里云服务器端口是否连同?在云服务器ECS控制台自助问题排查工具可以一键检测云服务器端口开放情况,阿里云百科分享阿里云服务器端口检测工具: 阿里云服务器 ...

最新文章

  1. ACMMM2017 | 电子科大斩获最佳论文!中科院自动化所多媒体计算组获得IEEE期刊最佳论文!
  2. 【转】杀人后一个孩子的做法…不看你会后悔的…
  3. 余弦信号频谱表达式_信号傅里叶变换系列文章(1):傅里叶级数、傅里叶系数以及傅里叶变换...
  4. cocos2d精灵教程(三篇)
  5. 选择对话框 android_Android日期时间选择器对话框
  6. CListCtrl控件的使用指南
  7. python基础和软件测试
  8. java接口压力测试
  9. m7405d粉盒清零方法_联想打印机 多功能一体机全系列硒鼓清零方法
  10. Altium Designer中的长度单位如何转换?
  11. 微信扫码登陆 无需开放平台实现方案
  12. 微信小程序 启动页自动跳转
  13. VS2010:X64和X86冲突问题
  14. [内网渗透学习]内网收集Fscan扫描探测工具
  15. python制作查询网页_Python制作简单的网页爬虫
  16. 2022年4月编程语言排行
  17. SMT32F407+FreeRTOS+LWIP+LAN8720使用Cube MX情况下无法实现网线热插拔
  18. 创建DAO模式的步骤
  19. Effective前端6:避免页面卡顿
  20. 在应用程序中将OJB作为一个存储层使用(二) (转)

热门文章

  1. 官方 AppStore 下载的 OS X 10.11.6 El Capitan 制作 iso 镜像
  2. IDEA 老版本历史版本下载地址
  3. web版凑发票计算器经验总结
  4. Python采集黄色软件剧本杀数据并做可视化
  5. 2021高考江门成绩查询,2021年江门高考最高分多少分 历年江门高考状元
  6. 单片机实现秒表倒数计数器
  7. 修改AIX的内核参数
  8. 【SpringMVC笔记05】SpringMVC中的视图解析器
  9. 小和尚学习-CSS选择器
  10. 勇敢说:「要求加薪」,不必低声下气(下)