当前位置:   article > 正文

python利用百度AI做情感倾向分析的一个demo_positive_prob

positive_prob

python利用百度AI做情感倾向分析的一个demo
背景:能不能根据某一段文字,来分析这段文字所表达的情感是积极的还是消极的呢?那么接下来所说的方法或许对你有所帮助!
1.首先我们需要在百度AI开放平台 “创建应用”,根据提示写一些描述,接着就可以生成我们自己的应用,
包括:应用名称、AppID、API Key、Secret Key(最后这两个Key是我们访问其API的关键)。
2.由于我们是使用python调用api的方式,所以接下来根据API使用文档,需要先获取Access Token(详见https://cloud.baidu.com/doc/NLP/s/Tk6z52d7c#%E8%8E%B7%E5%8F%96access-token)
授权服务地址:https://aip.baidubce.com/oauth/2.0/token,
发送请求方式推荐使用POST
URL需携带的参数:
grant_type: 必须参数,固定为client_credentials;
client_id: 必须参数,应用的API Key;
client_secret: 必须参数,应用的Secret Key;

示例:https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&

正常请求返回结果格式如下:
{
  "refresh_token": "25.b55fe1d287227ca97aab219bb249b8ab.315360000.1798284651.282335-8574074",
  "expires_in": 2592000,
  "scope": "public wise_adapt",
  "session_key": "9mzdDZXu3dENdFZQurfg0Vz8slgSgvvOAUebNFzyzcpQ5EnbxbF+hfG9DQkpUVQdh4p6HbQcAiz5RmuBAja1JJGgIdJI",
  "access_token": "24.6c5e1ff107f0e8bcef8c46d3424a0e78.2592000.1485516651.282335-8574074",
  "session_secret": "dfac94a3489fe9fca7c3221cbf7525ff"
}

3.通过上一步,已经可以获取到access_token了,接下来进入正题,如何做情感倾向分析:
情感倾向分析包括通用版和定制版,
(情感分析 - 通用版) (由于缺少模型数据,所以我们仅使用一下通用版,已能满足正常使用,如有特殊需求,可使用下面的定制版)
HTTP方法: POST 请求URL: https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify

(情感分析 - 定制版,注意需要先保证定制模型生效成功再调用,否则接口会报错) 
HTTP方法: POST 请求URL: https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify_custom
URL参数:

参数            值
access_token    通过API Key和Secret Key获取的access_token,参考“Access Token获取”
Header如下:

参数            值
Content-Type    application/json

Body请求示例:

{"text": "华为是一家伟大的公司"}

请求格式
POST方式调用

返回示例:
{
    "text":"华为是一家伟大的公司",
    "items":[
        {
            "sentiment":2,    //表示情感极性分类结果
            "confidence":0.40, //表示分类的置信度
            "positive_prob":0.73, //表示属于积极类别的概率
            "negative_prob":0.27  //表示属于消极类别的概率
        }
    ]
}

4.接下来看一下完整的代码:

  1. import requests
  2. import json
  3. App_Key = '自己申请的AK'
  4. Secret_Key = '自己申请的SK'
  5. # 情感分析
  6. def getEmotion(inputText, access_token):
  7. url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?access_token=' + access_token
  8. header = {'Content-Type ': 'application/json'}
  9. body = {'text': inputText}
  10. requests.packages.urllib3.disable_warnings()
  11. res = requests.post(url=url, data=json.dumps(body), headers=header, verify=False)
  12. # 返回接口格式:
  13. # {
  14. # "log_id": 7475291888689599393, # 请求唯一标识码
  15. # "text": "我最好看", #
  16. # "items": [
  17. # {
  18. # "positive_prob": 0.999976, # 表示属于积极类别的概率 ,取值范围[0,1]
  19. # "confidence": 0.999946, # 表示分类的置信度,取值范围[0,1]
  20. # "negative_prob": 2.42354e-05, # 表示属于消极类别的概率,取值范围[0,1]
  21. # "sentiment": 2 # 表示情感极性分类结果,0:负向,1:中性,2:正向
  22. # }]
  23. # }
  24. if res.status_code == 200:
  25. info = json.loads(res.text)
  26. print(info)
  27. if 'items' in info and len(info['items']) > 0:
  28. sentiment = info['items'][0]['sentiment']
  29. if sentiment == 2:
  30. print(inputText+' 情感分析结果是:正向')
  31. elif sentiment == 1:
  32. print(inputText + ' 情感分析结果是:中性')
  33. else:
  34. print(inputText + ' 情感分析结果是:负向')
  35. # 获取token
  36. def getToken():
  37. # client_id 为官网获取的AK, client_secret 为官网获取的SK
  38. host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+App_Key + '&client_secret=' + Secret_Key
  39. response = requests.get(host)
  40. if response.status_code == 200:
  41. info = json.loads(response.text) # 将字符串转成字典
  42. access_token = info['access_token'] # 解析数据到access_token
  43. return access_token
  44. return ''
  45. #主函数
  46. def main():
  47. inputText = input('请输入需要分析的语句:')
  48. accessToken = getToken()
  49. getEmotion(inputText, accessToken)
  50. if __name__ == '__main__':
  51. main()


以上仅为个人写的一点demo心得,如有不足之处,欢迎指正~(友情提示,由于个人版百度账号对API的请求次数是有上限的,且用且珍惜)。通过以上的方法,是不是会有更进阶的想法了呢?这里就不再展示了,嘻嘻~
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/528478
推荐阅读
相关标签
  

闽ICP备14008679号