您的位置:首页 > 编程语言 > Python开发

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

2017-12-13 18:53 876 查看
百度AI开放平台是一个年轻的平台,2017年1月发布了词法分析,评论观点对抽取,短文本相似度等5种基础技术接口。

本篇文章使用python接入百度AI评论观点对抽取的接口,进行酒店评论文本数据的观点对抽取工作。

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

示例如下:



要利用该接口,首先要做的是参考百度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 urllib2
import requests
import json
import sys
reload(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 0

if __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编码,所以在编码问题上要多花一些心思。

运行结果:

积极观点:

评论对象:服务————>观点:好

消极观点:

评论对象:房间————>观点:小

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 开放平台 百度