- 背景
- 实现
- 获取 access_token
- 请求情感分析接口
- 读取文本 *** 作
我姐的毕业论文中,要用到情感分析,他已经利用爬虫软件爬取了微博各个账号,关于某话题的正文和评论,存储在excel中。
打算利用百度智能云中,自然语言处理 -> 情感倾向分析
API官方文档
要使用到这两个参数
- client_id: 必须参数, 应用的API Key;
- client_secret: 必须参数, 应用的Secret Key;
这两个参数的具体位置:
- 首先用百度账号登录官网: https://login.bce.baidu.com/?account=
- 找到你的产品 : 自然语言处理
- 应用中,新建应用,随便输入一个名字和描述
- 就可以看到我们需要的两个参数 API Key 和 Secret Key 复制下来,替换我下面的代码就可以了。
def get_token(): API_Key = '上图复制粘贴' Scret_Key = '上图复制粘贴' url3 = 'https://aip.baidubce.com/oauth/2.0/token' data3 = { "grant_type":"client_credentials", # 固定值 "client_id":API_KEY2, # "client_secret":s_key2 } resp3 = requests.post(url3,data=data3) print("access_token:" ,resp3.json()['access_token'])请求情感分析接口
import requests import json,time import re,os # 通过 re 模块去除文本中的HTML代码和表情符号 def re_delete(content): dr = re.compile(r'<[^>]+>', re.S) emoji = re.compile("["u"U0001F600-U0001F64F"u"U0001F300-U0001F5FF" u""u"U0001F680-U0001F6FF"u"U0001F1E0-U0001F1FF""]+", flags=re.UNICODE) content = dr.sub('', content) content = emoji.sub('', content) return content # 请求百度接口,返回积极概率,置信度,消极概率,分类结果 0负向,1中性,2正向 def fenxi(tex = "我爱祖国"): # headers = {'Content-Type': 'application/json'} # 不加也能请求到 tex = re_delete(tex) # 如果你的文本没有HTML和表情符什么的,可以不用这个 if not tex: return [] access_token = '24.37f133deb9fefa877cf39583244079f8.2592000.1640158969.282335-25209811' url = f'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?access_token={access_token}&charset=UTF-8' if len(tex.encode()) < 2048: # 文档中写的文本字节长度最多2048个字节,差不多就是680个汉字 body = {'text' : tex} # 将python 字典类型转成json类型 body = json.dumps(body) # print(body) resp1 = requests.post(url=url,data=body) try: items = resp1.json()['items'][0] # round(x,3) 表示将浮点数x 保留三位小数 return [round(items['positive_prob'],3), round(items['confidence'],3), round(items['negative_prob'],3), items['sentiment']] except: print("请求有误n",resp1.text) # 打印出来的错误代码,可以对照官方文档进行对比 return ["请求有误"] else: print("字节编码长度超过2048n",tex) # 因为我的文本一般没有这么长,所以我就没继续往下分析了,你可以在这里将文本进行拆分再进行调用接口 return ["长度超了"] if __name__ == '__main__': # get_token() result = fenxi("我爱祖国") print(result)
官方文档 : https://cloud.baidu.com/apiexplorer/index.html?Product=GWSE-p64nCQphmTY&Api=GWAI-7WcMrFnWb8M
可以在上面那个网址进行查看参数说明和在线调用尝试,感觉比之前那个文档写的详细。
- 请求接口成功了,接下来就差代码批量读取文本进行请求了
- 每个人的文本不一样,可能csv,excel,txt 等等,就不在这详细写了
- 提醒一点就是,百度有个QPS限制,就是一秒最多请求几次,请求多了就返回错误
- 你在请求时,就加上time.sleep(0.5)就行了,0.5这个数字就是1/qQPS
- 当然,你也可以花钱,他请求次数就会很多,你可以多找几个百度账号,多获取access_token就可以了
- pycharm 可以同时运行多个py代码的(同一个账号申请不同应用的access_token还是有限制)
- 谢谢阅读,觉得有用的话,不如点个赞再走
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)