百度api——python大批量数据情感分析

最近琢磨了如何用百度api进行文本批量情感分析,最终成效挺好,能稳定批量分析大量数据。在膜拜了各大博文后主要解决了在进行批量分析文本时的各种奇怪问题(有说的不对的地方请多多指出):

  1. 貌似是QPS受限制,使得文本情感分析不出来(不是很懂但是设置一个循环可解决)
  2. 网页访问受限制,分析过程中在进行到中途会报错,可能是访问网页的问题。

最终能完成8000+条文本的情绪分析,较为稳定。

首先是调用百度api分析情感的函数:

def sentiment_classify(text):
    raw = {"text":"内容"}
    raw['text'] = text
    data = json.dumps(raw).encode('utf-8')
    
	host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]'
	# API Key 和 Secret Key的获取防范见下方博客链接
	
    request = urllib.request.Request(url=host,data=data)
    request.add_header('Content-Type', 'application/json')
    response = urllib.request.urlopen(request)
    content = response.read().decode('utf-8')
    rdata = json.loads(content)
    return rdata

本代码以及API Key 和 Secret Key的获取参考下方博客链接

https://blog.csdn.net/ChenVast/article/details/82682750?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

接着是主函数

if __name__ == '__main__':
    file = 'F:/...(文件目录)'
    text = pd.read_excel(file)
    review = text['txt']
    length = len(review)
    
    #初始化用来存储情感分析结果的列表
    sentiment = ['blank']*length
    confidence = ['blank']*length
    positive_prob = ['blank']*length

    time_start = time.time()#计时
    i = 0
    for content in review:
        content = content[:512]#百度api限制512个字符,过长也会导致出错
        op = True #利用循环和输出条件来保证获取到情绪分析的结果
        while op:
            maxTryNum = 50 #设置最大尝试访问的次数,通过多次访问保证不会因为访问受限制而得不到结果(可修改)
            for tries in range(maxTryNum):
                try:
                    result = sentiment_classify(content)
                    break
                except:
                    if tries < (maxTryNum - 1):
                        continue
                    else:
                        print('尝试了 %d 次都失败了!!!',maxTryNum)
                        break
            #因为发现如果能够成功调用api则输出结果长度为3,失败了长度为2,故将其设为控制输出的条件
            if len(result)==3:
                op = False
            else:
                op = True

        result1 = result.get('items')
        item = result1[0]
        sentiment[i] = item['sentiment']
        confidence[i] = item['confidence']
        positive_prob[i] = item['positive_prob']

		#方便观察进度
        print('第 ' + str(i+1) + ' 条评论已分析完成, 一共 ' + str(length) + ' 条评论')
        i = i+1

    time_end = time.time()
    print('分析评论一共耗时:' ,time_end-time_start)

    text['sentiment'] = sentiment
    text['confidence'] = confidence
    text['positive_prob'] = positive_prob

	#保存
    text.to_excel('F:/互联网+/data/情绪分析结果/湖北_37_result.xlsx',index=None)
    print(file + "    result写入成功!")

最终可以完成大批量数据的情绪分析,还借鉴了该篇博文的思想,即设立循环多次尝试访问。最大的缺点就是大约每秒只能分析2条文本,数据量大时会花费很多时间。

https://blog.csdn.net/haoaiqian/article/details/70228025?utm_source=blogxgwz3

在这里插入图片描述

  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值