利用百度AI开放平台的语言处理基础技术(Python)

来源:互联网 发布:上海java培训哪个好 编辑:程序博客网 时间:2024/05/17 08:43

百度AI开放平台是一个年轻的平台,2017年1月发布了词法分析,评论观点对抽取,短文本相似度等5种基础技术接口。
本篇文章使用python接入百度AI评论观点对抽取的接口,进行酒店评论文本数据的观点对抽取工作。

评论观点抽取的功能是自动分析评论关注点和评论观点,并输出评论观点标签及评论观点极性。百度AI平台目前支持13类产品用户评论的观点抽取,包括美食、酒店、汽车、景点等,可帮助商家进行产品分析,辅助用户进行消费决策。——评论观点抽取NLP

示例如下:
百度AI评论观点对抽取


要利用该接口,首先要做的是参考百度AI平台给出的技术文档。
其实具体步骤和腾讯AI的接入差不多(可参考我的第一篇文章),主要区别在于鉴权认证机制。

‘Access Token获取’的技术文档对百度AI的鉴权认证机制介绍地很清楚,相关代码也有给出。我做出了一些微调,将代码打包在一个函数中,方便下一步的调用

具体代码(python2.7)如下

# -*- coding: utf-8 -*-"""-------------------------------------------------   File Name:     baidu_api   Description :   Author :       YOUQING   date:          2017/11/20-------------------------------------------------   Change Activity:                   2017/11/20:-------------------------------------------------"""import urllib2import requestsimport jsonimport sysreload(sys)sys.setdefaultencoding('utf-8')'''鉴权认证机制'''def get_access_token():    # client_id 为官网获取的AK, client_secret 为官网获取的SK    host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的API Key】&client_secret=【官网获取的Secret Key】'    request = urllib2.Request(host)    request.add_header('Content-Type', 'application/json; charset=UTF-8')    response = urllib2.urlopen(request)    content = response.read()    content=json.loads(content)    if content:        return content["access_token"]'''接口接入,返回json格式数据'''def get_content(text):    access_token = get_access_token().strip()    url = "https://aip.baidubce.com/rpc/2.0/nlp/v2/comment_tag?access_token="+access_token  # API    headers = {"Content-Type": "application/json"}    data={"text":text,"type":1}#type包含13个类别,其中1代表酒店行业,其他行业参考技术文档    try:        data=json.dumps(data, encoding="gbk",ensure_ascii=False).encode('gbk')        r = requests.post(url, data=data, headers=headers)        return r.text    except Exception,e:        print 'a', str(e)        return 0if __name__ == '__main__':    text='服务态度好,但是房间比较小'#评论内容(要求GBK编码),最大10240字节    contents=get_content(text.encode('gbk'))    contents = json.loads(contents)  # str转成dict    if contents.has_key('items'):        for i in range(len(contents['items'])):                        if contents['items'][i]['sentiment']==0:#判断感情极性                print '消极观点:'                print '评论对象:'+contents['items'][i]['prop']+'————>'+'观点:' + contents['items'][i]['adj']            if contents['items'][i]['sentiment']==1:                print '中性观点:'                print '评论对象:'+contents['items'][i]['prop']+'————>'+'观点:' + contents['items'][i]['adj']            if contents['items'][i]['sentiment'] == 2:                print '积极观点:'                print '评论对象:' + contents['items'][i]['prop'] + '————>' + '观点:' + contents['items'][i]['adj']

注:
1、【官网获取的API Key】和【官网获取的Secret Key】在登陆平台—>创建应用后会得到,每个人不一样。
2、由于传入的text要求是GBK编码,所以在编码问题上要多花一些心思。

运行结果:
积极观点:
评论对象:服务————>观点:好
消极观点:
评论对象:房间————>观点:小

原创粉丝点击