demo-deng

虽然,虽然,虽然,今天:

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

分类:

技术点:

相关文章: