百度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呢,花了一些时间。

猜你喜欢

转载自www.cnblogs.com/demo-deng/p/10885585.html