百度ai情感分析如何调用

大致步骤

  1. 在百度ai情感分析网站中获取API等
  2. 生成access token
  3. 测试分析文本编码
  4. 生成情感分析结果并保存

第一大板块 获取百度AI情感分析API

这里指路调用百度情绪倾向分析API_python调用百度大脑的api接口进行情感分析-CSDN博客

博主写的很详细。

主要总结为

  1. 注册
  2. 创建情感分析应用
  3. 开通付费(网站有50万次免费额度,开通是为了获取额度)
  4. 找到API

第二大板块 生成分析代码

以下部分内容参考了这篇博文调用百度情绪倾向分析API_python调用百度大脑的api接口进行情感分析-CSDN博客

一 生成access token

这里先要使用第一板块中获得的API,生成acces token

代码如下:

import requests

ak = '你的API key'
sk = '你的secret key'

host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}'.format(ak,
                                                                                                                     sk)

res = requests.post(host)
print(res.text)

然后就会输出一段字符,找到里面access token后面跟着的内容,只提取双引号内的的部分,保存,到这里第一部分结束。

二 检测文件编码

我遇到的问题都是来自这一部分。所以在运行代码前检测一下数据文件的编码是什么。
代码如下:

import chardet

with open(r"你的文件地址", "rb") as f:
    result = chardet.detect(f.read())
    print(result)

运行后,会输出一段文字。

记录'encoding': 'UTF-16'。

三 分析数据文件代码

这里注意,需要替换的信息:

  1. access token,在第一部分得到
  2. 数据文件编码类型,在第二部分得到
  3. 数据文件地址
  4. 输出结果的文件地址

注意:我的数据文件为txt,所以,下面这段代码是根据分析txt类型编写的,如果是其他后缀的数据文件,比如csv、xls等,需要自行修改。

import urllib3
import json

# 百度AI情感分析API的Access Token
access_token = '第一部分获取的access token'
http = urllib3.PoolManager()
url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?access_token=' + access_token

# 读取TXT文件
def read_txt(file_path):
    try:
        with open(file_path, 'r', encoding='你的数据文件编码类型') as file:
            text = file.read()
        return text
    except Exception as e:
        print(f"读取TXT文件失败: {e}")
        return None

# 调用百度AI情感分析API
def analyze_sentiment(text):
    params = {'text': text}
    encoded_data = json.dumps(params).encode('UTF-8')
    request = http.request(
        'POST',
        url,
        body=encoded_data,
        headers={'Content-Type': 'application/json'}
    )
    result = json.loads(request.data.decode('UTF-8'))
    return result

# 主函数
def main():
    # TXT文件路径
    file_path = r"你的数据文件地址"  # 替换为你的TXT文件路径
    output_file_path = r"输出结果地址"  # 输出文件路径

    # 读取TXT文件
    text = read_txt(file_path)
    if text is None:
        return

    # 分段处理文本(每段最多1000字符)
    segment_size = 1000
    segments = [text[i:i + segment_size] for i in range(0, len(text), segment_size)]

    # 存储分析结果
    results = []

    # 逐段分析文本
    for segment in segments:
        try:
            # 调用API分析文本
            sentiment_result = analyze_sentiment(segment)

            # 检查API返回结果
            if "error_code" in sentiment_result:
                print(f"文本分析失败, 错误: {sentiment_result['error_msg']}")
                results.append(f"文本: {segment}\n错误: {sentiment_result['error_msg']}\n")
            elif "items" in sentiment_result and sentiment_result["items"]:
                # 提取情感分析结果
                result = {
                    "text": segment,
                    "sentiment": sentiment_result["items"][0].get("sentiment", "N/A"),
                    "confidence": sentiment_result["items"][0].get("confidence", "N/A"),
                    "positive_prob": sentiment_result["items"][0].get("positive_prob", "N/A"),
                    "negative_prob": sentiment_result["items"][0].get("negative_prob", "N/A")
                }
                results.append(json.dumps(result, indent=4, ensure_ascii=False) + "\n")
            else:
                error_msg = "文本分析失败: API返回结果中无有效数据"
                print(error_msg)
                results.append(f"文本: {segment}\n错误: {error_msg}\n")
        except Exception as e:
            error_msg = f"分析文本失败, 错误: {e}"
            print(error_msg)
            results.append(f"文本: {segment}\n错误: {error_msg}\n")

    # 将结果写入输出文件
    with open(output_file_path, 'w', encoding='utf-8') as output_file:
        for result in results:
            output_file.write(result + "\n")

    print(f"情感分析完成,结果已保存到 {output_file_path}")

# 运行主函数
if __name__ == "__main__":
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值