跳到主要内容

文本异步识别

1. 接口介绍

对长文本中的色情、涉政、暴恐、敏感、广告、谩骂等违法低质内容进行识别及过滤,并将检测结果通过回调形式通知调用方。

  • 字数限制:异步文本识别接口最大支持 20, 000 个字符识别。

支持语种:文本审核默认识别中文,如需识别其他语种(例如,英文、日语、韩语、泰语、越南语、马来语、印尼语、印地语、菲律宾语、阿拉伯语、土耳其语、俄语、德语、法语、意大利语、西班牙语、葡萄牙语等)中的风险内容,请联系我们进行相应配置,以保证识别效果。

2. 请求

2.1 请求地址

区域请求地址
国内https://api.text.tuputech.com/v3/recognition/text/async/<secretId>
国外https://api-oversea.text.tuputech.com/v3/recognition/text/async/<secretId>
提示

<secretId> 需替换为您的应用 SID,请联系客户经理为您开通及配置。关于 SID 详见 常见问题(FAQ)

2.2 请求方法

POST

2.3 请求头

Content-Type: application/json

2.4 QPS 限制

  • 1 秒最多允许请求 50 次;
  • 测试期最多允许同时处理 3 个文本,正式使用请与我们沟通协商

如有特殊并发需求,请联系我们。

2.5 请求参数说明

参数名称类型是否必填说明
contentString待检测的文本内容,可以为词语或句子, 最大支持 20,000 字符
contentIdString客户自定义信息,方便根据该 ID 找到相关的文本, 建议可设置为 secretId + 当前时间 + 随机数,参考请求示例
userIdString用户 ID
forumIdString板块 ID
timestampNumber当前服务器的 Unix 时间戳
nonceNumber随机数
signatureString

RSA-SHA256 算法签名。签名步骤:

  1. 将参与签名的参数(secretIdtimestampnonce)用英文半角逗号 , 拼接,得到 SignString
  2. 使用您的私钥以 RSA-SHA256 算法对 SignString 签名,然后进行 Base64 编码,得到 signature 字符串。
  • 点击 数字证书 下载私钥。私钥有 rsapkcs8 两种格式,通常 Golang,Python 使用 rsa 格式私钥,Java 使用 pkcs8 格式私钥
  • 点击 签名及验证示例 查看签名示例

2.6 请求示例

{
"contentId": "your_contentId",
"content": "32132131",
"callbackUrl": "http://your_cb.com",
"userId": "your_userId",
"forumId": "your_forumId",
"timestamp": 1541499770,
"nonce": 0.8469537531104208,
"signature": "CsIMcHuWqn/QFEnHWcFEhrB7ydcg5xTKawpRpNqA9Nw2WlCVIDR5jDcyUF85"
}

3. 响应及回调

注意

同步响应及异步回调结果都是此结构,不同的是 json 里的信息

3.1 请求的同步响应

json 字段数据示例:

{
"requestId": "611b896c0d2b6305747aeb55",
"code": 0,
"message": "success",
"nonce": "0.01627771095362096",
"timestamp": 1552391372490
}

3.2 响应参数说明

参数名称类型是否必有说明
requestIdString客户提交的文本审核的唯一请求 ID,后续可以通过该 ID 查到文本的相关信息

3.3 异步回调参数说明

参数名称类型是否必有说明
requestIdString客户提交的文本审核的唯一请求 ID,后续可以通过该 ID 查到文本的相关信息
<taskId>Object任务 ID 对应的审核结果,具体数据结构见 TaskId 对象中的数据结构

TaskId

57c4036c557603652aeeb222

TaskId 对象中的数据结构

参数名称类型是否必有说明
contentString检测的文本内容
actionString检测结果, pass : 通过, block : 不通过, review : 复审
labelString命中的风险标签,详见返回标签说明
reviewBool是否需要复审, true :需要, false :不需要
rateFloat吻合分数,值越高机器对判定结果越有把握,取值为 0 到 1 之间或者空值 null(外语语种审核不返还分数)
detailsArray命中的关键词详细信息,如果 actionspass ,则 details 为空数组,详见以下Details 数据结构
contentIdString客户自定义信息
userIdString用户 ID
forumIdString版块 ID

Details 数据结构

参数名称类型是否必有说明
mainLabelInt命中的标签,详见 任务返回标签说明
subLabelString命中的二级标签
keywordString命中的关键词。

1. 若命中算法模型,值为空字符串;
2. 若命中单个关键词,值为关键词字符串,例如:习近平
3. 若同时命中多个关键词(组合规则),值为通过 + 拼接且被括号包裹的字符串,例如:(加+微信)。其中 (A+B) 表示关键词 A 与 B 之间未按顺序匹配,{A+B} 表示关键词 A 与 B 之间按照顺序匹配
hintString检测文本中的违规内容片段,例如原文为 那我先加您微信,发您一下,值为:加您微信
startPosNumber违规片段所在文本区间的起始位置,从检测文本的第一个字符起,以 0 开始计数。关于文本区间,请参看下文 常见问题 部分。
endPosNumber违规片段所在文本区间的结束位置,从检测文本的第一个字符起,以 0 开始计数。关于文本区间,请参看下文 常见问题 部分。

3.4 返回标签说明

labelmainLabel 值说明

label 值说明
Normal正常
Terror暴恐
Porn色情
Politics涉政
Sensitive敏感
ADs广告
Abuse谩骂
UserDefine自定义

3.5 响应示例

{
"57c4036c557603652aeeb222": {
"contentId": "test-contentId",
"userId": "user-id",
"forumId": "test-id",
"content": "2014年6月15号的下午,3名手持凶器的暴徒在对新疆和田市一家棋牌室内的市民进行疯狂砍杀的时候,遭到市民的奋力反击,很快被警民联手制伏,3名暴徒当中,两人因伤重不治而亡,一人被擒。昨天,在当地的看守所,记者见到了被抓获的犯罪嫌疑人木尔扎提。 木尔扎提头上的伤是在案发时遭群众反击留下的。警察来了把他带到了医院,医生把他头上的伤缝好。 监控显示,案发前,木尔扎提3人曾在棋牌室门前逗留了一分半钟,密谋袭击行动。照他们原来的想法是在这里搞袭击,一是容易得手且不容易被警察发现,二是可以顺利逃跑。 木尔扎提先观察了5秒钟,随后跟一起进去的人拿着斧头开始砍,也朝一个人开始砍。 木尔扎提选择的第一个袭击对象是监控画面中唯一的一位女士。 木尔扎提同伙有跟他们说砍人要分年龄,见人就砍。 想着没机会逃跑了 袭击行动开始后,暴徒们却感到了一丝恐惧。 木尔扎提当时有一些怕,乘客用椅子桌子朝他们打过来,他表示发生这种事(激烈反抗)真的有一些害怕。看到人们并没有被他们吓到,三名暴徒企图逃跑,可当他们跑出棋牌室后却发现其实已经无路可逃。 在外面群众拿着棍子朝他们过来,当时他想的就是他们没有机会逃跑了。面对人们组成的包围圈,暴徒们慌不择路继续实施砍杀。可越来越多的群众加入到了围堵的行动中。这时,正在附近巡逻的武装力量也及时赶到了现场,3名暴徒被彻底制伏。 能活着被警察抓获 木尔扎提也很庆幸自己能被警察抓获。木尔扎提表示,现在还活着,如果我能出去的话,再不会干这种事了。我会好好地在家照顾父母。 据当地警方介绍,该团伙成员深受宗教极端思想影响,相信通过杀戮可以换取进入天堂的资格。 木尔扎提表示,他们跟我讲关于“圣战”的事情,说只要进行“圣战”而死,死后就可以不受“审判”直接进入天堂。",
"action": "block",
"label": "Abuse",
"review": false,
"rate": 1,
"details": [
{
"keyword": "昨天在当地的看守所记者见到了被抓获的犯罪嫌疑人木尔扎提",
"hint": "",
"mainLabel": "Sensitive",
"startPos": 91,
"endPos": 121
},
{
"keyword": "警察",
"hint": "警察",
"mainLabel": "Sensitive",
"subLabel": "Social_Negative_Events",
"startPos": 144,
"endPos": 167
},
{
"keyword": "警察",
"hint": "警察",
"mainLabel": "Sensitive",
"subLabel": "Social_Negative_Events",
"startPos": 205,
"endPos": 246
},
{
"keyword": "砍人",
"hint": "砍人",
"mainLabel": "Sensitive",
"subLabel": "Social_Negative_Events",
"startPos": 314,
"endPos": 338
},
{
"keyword": "警察",
"hint": "警察",
"mainLabel": "Sensitive",
"subLabel": "Social_Negative_Events",
"startPos": 570,
"endPos": 597
},
{
"keyword": "警方",
"hint": "警方",
"mainLabel": "Sensitive",
"subLabel": "Social_Negative_Events",
"startPos": 640,
"endPos": 683
}
]
},
"requestId": "619205955c56844be4f7fbde",
"code": 0,
"message": "success",
"nonce": 0.932176752285591,
"timestamp": 1636959639392
}

4. 常见问题

  1. Q:违规片段所在的文本区间是指什么?什么是文本区间位置?
    A:文本区间指的是违规片段所在的句子。返回的文本区间位置是指,违规片段所在句子在检测文本中的大致位置,用于定位违规片段。

  2. Q: 文本区间划分的依据是什么?
    A: 按句子进行区间划分。一般是以句号、问号、感叹号、分号作为句子结束标志,中英文字符均适用。若原句过短则可能呈现的是多个句子合并后的区间。

  3. Q: 为什么只能返回文本区间位置,不能返回违规片段在文本中的精确位置?
    A: 检测文本可能含有违规拼音或者谐音字等,nlp 识别会先对文本内容进行预处理,导致无法匹配到原文,所以只返回违规片段所在句子区间的大致位置。