【Qbot】3.加入内容审核功能

该项目计划长期进行维护更新,欢迎star:
前言
在上线Q群不久,不少人对其进行了测试,但随着时间的延续,测试话题逐渐走向失控,迫使我不得不紧急暂停 。
对同胞素质的过高预期换来的往往是无下限的不断试探,因此加入内容审查功能变得至关重要 。
本地内容审核
在上找到了这个可用项目()
该方法是根据本地预先设定的词构建搜索树,然后将需要检测的内容进行匹配 。
不过实测发现该方法当添加词汇过多时,会存在匹配不准确的问题 。

【Qbot】3.加入内容审核功能

文章插图
第三方审核接口
由于需要审核的内容字典难以获取,因此另一种简单方式就是调用的第三方内容审核服务 。
下面调研了三家平台服务 。
阿里内容审核
网站:#-cic-j6w-c0s
看了下阿里的文档,申请入口一下子没找到,就没继续尝试 。
网易易盾
网站:
【Qbot】3.加入内容审核功能

文章插图
新用户似乎有7天的免费试用,不过申请之后,发现需要一天多的审核时间,并且会有人打电话来进行确认,比较麻烦 。
百度内容审核平台
网站:
【【Qbot】3.加入内容审核功能】百度这个平台的申请挺容易的,直接秒过,并且有总量5万次文本审核调用量,对于我这样的小应用来说足够使用 。
并且,官网给出了详细的调用示例,兼容和:
import sysimport jsonimport base64# 保证兼容python2以及python3IS_PY3 = sys.version_info.major == 3if IS_PY3:from urllib.request import urlopenfrom urllib.request import Requestfrom urllib.error import URLErrorfrom urllib.parse import urlencodefrom urllib.parse import quote_pluselse:import urllib2from urllib import quote_plusfrom urllib2 import urlopenfrom urllib2 import Requestfrom urllib2 import URLErrorfrom urllib import urlencode# 防止https证书校验不正确import sslssl._create_default_https_context = ssl._create_unverified_contextAPI_KEY = '自己的API_KEY'SECRET_KEY = '自己的SECRET_KEY 'IMAGE_CENSOR = "https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/v2/user_defined"TEXT_CENSOR = "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined""""TOKEN start """TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token'"""获取token"""def fetch_token():params = {'grant_type': 'client_credentials','client_id': API_KEY,'client_secret': SECRET_KEY}post_data = http://www.kingceram.com/post/urlencode(params)if (IS_PY3):post_data = post_data.encode('utf-8')req = Request(TOKEN_URL, post_data)try:f = urlopen(req, timeout=5)result_str = f.read()except URLError as err:print(err)if (IS_PY3):result_str = result_str.decode()result = json.loads(result_str)if ('access_token' in result.keys() and 'scope' in result.keys()):if not 'brain_all_scope' in result['scope'].split(' '):print('please ensure has check theability')exit()return result['access_token']else:print('please overwrite the correct API_KEY and SECRET_KEY')exit()"""读取文件"""def read_file(image_path):f = Nonetry:f = open(image_path, 'rb')return f.read()except:print('read image file fail')return Nonefinally:if f:f.close()"""调用远程服务"""def request(url, data):req = Request(url, data.encode('utf-8'))has_error = Falsetry:f = urlopen(req)result_str = f.read()if (IS_PY3):result_str = result_str.decode()return result_strexceptURLError as err:print(err)if __name__ == '__main__':# 获取access tokentoken = fetch_token()# 拼接图像审核urlimage_url = IMAGE_CENSOR + "?access_token=" + token# 拼接文本审核urltext_url = TEXT_CENSOR + "?access_token=" + tokenfile_content = read_file('./image_normal.jpg')result = request(image_url, urlencode({'image': base64.b64encode(file_content)}))print("----- 正常图调用结果 -----")print(result)file_content = read_file('./image_advertise.jpeg')result = request(image_url, urlencode({'image': base64.b64encode(file_content)}))print("----- 广告图调用结果 -----")print(result)text = "我们要热爱祖国"result = request(text_url, urlencode({'text': text}))print("----- 正常文本调用结果 -----")print(result)text = "我要爆粗口啦"result = request(text_url, urlencode({'text': text}))print("----- 粗俗文本调用结果 -----")print(result)