百度AI文本审核API使用说明
虽然,虽然,虽然,今天:
百度发布了2019年第一季度未经审计的财务报告。本季度百度营收241亿元人民币(约合35.9亿美元),同比增长15%,移除业务拆分收入影响,同比增长21%。低于市场预期242.7亿元。净亏损为人民币3.27亿元(约合4900万美元),去年同期净利润为人民币66.94亿元。这也是百度上市以来的首个季度亏损。
但我还是要肯定百度科技公司要做的工作,尤其是在AI的商业落地方面,做出了不少贡献,其开源的一系列资源供大多数科研工作者、企业工作者等摸索前进,心怀感恩,开放包容。
我做NLP这块,用到了百度AI平台的文本审核功能,也就是文本分类,判别文本的内容是否有违禁、暴恐、涉黄等内容。访问了它的API,一些工作记录如下:
百度AI文本审核地址:http://ai.baidu.com/solution/censoring
单例样本体验地址:http://ai.baidu.com/tech/textcensoring?track=cp:ainsem|pf:pc|pp:chanpin-neirongshenhe|pu:neirongshenhe-wenben-1|ci:|kw:10002031
批量访问:
1)python工具
2)步骤1:申请access token,代码如下:
def get_access_key(): # client_id 为官网获取的AK, client_secret 为官网获取的SK host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】' request = urllib.request.Request(host) request.add_header('Content-Type', 'application/json; charset=UTF-8') response = urllib.request.urlopen(request) content = response.read() if (content): print(content)
从content中抽取,access token字段
3)文本审核,代码如下:
def check_content(): request_url = 'https://aip.baidubce.com/rest/2.0/antispam/v2/spam?access_token=【你自己的access token哦!!!】' items = {'1':'暴恐违禁', '2':'文本色情', '3':'政治敏感', '4':'恶意推广', '5':'低俗辱骂', '6':'低质灌水'} with open('./baidu_data/checked_data_1.txt', 'r', encoding='utf8') as fr: with open('./baidu_data/data_1_check_result.txt', 'a', encoding='utf8') as fw: for i, each in enumerate(fr.readlines()): print('正在检测样本:{}'.format(i)) params = {'content': each.strip().split('\t')[-1]} result = requests.post(request_url, headers={'Content-Type': 'application/x-www-form-urlencoded'}, data=params).text predict_res = (json.loads(result).get('result')).get('reject') print(predict_res) if len(predict_res) == 0: # 普通直接保存 fw.write('普通\t'+'0\t###\t'+each) else: # 获取拒绝得分最高的那个 score = [] content = [] for each_hit in predict_res: score.append(each_hit.get('score')) temp = each_hit.get('hit') content.append(str(each_hit.get('label'))+'\t'+','.join(each_hit.get('hit'))+'\t') # 找到得分最大的那个索引 max_score_index = score.index(max(score)) tag_label = content[max_score_index] # 写入 fw.write('{}\t'.format(items.get(tag_label.split('\t')[0]))+tag_label+each)
我这里是根据任务,找到结果中我需要的信息,流程是没问题的,你可以根据你的需求改正哦
就这么简单,为什么api文档中不给出样例demo呢,花了一些时间。
时刻记着自己要成为什么样的人!