有一说一,我没有女朋友,emm,老标题党了,嘿嘿。
1.文本情感分析简介
文本情感分析:又称意见挖掘、倾向性分析等。简单而言,是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。互联网(如博客和论坛以及社会服务网络如大众点评)上产生了大量的用户参与的、对于诸如人物、事件、产品等有价值的评论信息。这些评论信息表达了人们的各种情感色彩和情感倾向性,如喜、怒、哀、乐和批评、赞扬等。基于此,潜在的用户就可以通过浏览这些主观色彩的评论来了解大众舆论对于某一事件或产品的看法。
2.注册/登录 百度智能云
应该百度账号就能登录的。
3. 语言处理应用技术
登录完成后进入“语言处理应用技术”。
https://console.bce.baidu.com/ai/#/ai/speech/overview/index
进入“管理中心”界面。如下图。
4. 创建应用,获得KEY
写好相关的信息(纯靠xia bian),本次示例是文本情感分析,一定要勾选“情感倾向分析”。全选了就行,反正也不要钱。
创建完毕:
5. 获取 access_token
这里需要一段代码来获取access_token。
# encoding:utf-8
#空白模板
import requests
# client_id 为官网获取的API Key, client_secret 为官网获取的Secret Key
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[你的API Key,不需要方括号]&client_secret=[你的Secret Key,不需要方括号]'
response = requests.get(host)
if response:
print(response.json())
# encoding:utf-8
import requests
#下面是我的client_id,client_secret,请替换成你自己的
# client_id 为官网获取的API Key, client_secret 为官网获取的Secret Key
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=NtmIpPMmMu2nOfBlhLwwDSoT&client_secret=UnOPGxpqS7aCpPKNND1inEvXvaTFOz1i'
response = requests.get(host)
if response:
print(response.json())
上面这段代码是我的,直接替换就行。
务必注意host后面的字符串是一体的,不要有空格什么的,我用vscode,他下面是有一条线。
运行完之后是这样的,虽然很多内容,但是都不是很重要,主要是“access_token”:
6. 文本情感分析代码
import re
import requests
import json
# 将text按照lenth长度分为不同的几段
def cut_text(text, lenth):
textArr = re.findall('.{' + str(lenth) + '}', text)
textArr.append(text[(len(textArr) * lenth):])
return textArr # 返回多段值
def get_emotion( data): # 情感分析
# 定义百度API情感分析的token值和URL值
token = '24.a8a388b8d09b25d18e181d5a7dcc68c1.2592000.1629196679.282335-24567257' #记得替换成你的access_token
url = 'https://aip.baidubce.com/rpc/2.0/nlp/v1/sentiment_classify?charset=UTF-8&access_token={}'.format(token)
# 百度情感分析API的上限是2048字节,因此判断文章字节数小于2048,则直接调用
if (len(data.encode()) < 2048):
new_each = {
'text': data # 将文本数据保存在变量new_each中,data的数据类型为string
}
new_each = json.dumps(new_each)
res = requests.post(url, data=new_each) # 利用URL请求百度情感分析API
# print("content: ", res.content)
res_text = res.text # 保存分析得到的结果,以string格式保存
result = res_text.find('items') # 查找得到的结果中是否有items这一项
positive = 1
if (result != -1): # 如果结果不等于-1,则说明存在items这一项
json_data = json.loads(res.text)
negative = (json_data['items'][0]['negative_prob']) # 得到消极指数值
positive = (json_data['items'][0]['positive_prob']) # 得到积极指数值
print("这句话的积极成分:",positive)
print("这句话的消极成分:",negative)
# print(positive)
if (positive > negative): # 如果积极大于消极,则返回2
return 2
elif (positive == negative): # 如果消极等于积极,则返回1
return 1
else:
return 0 # 否则,返回0
else:
return 1
else:
data = cut_text(data, 1500) # 如果文章字节长度大于1500,则切分
# print(data)
sum_positive = 0.0 # 定义积极指数值总合
sum_negative = 0.0 # 定义消极指数值总和
for each in data: # 遍历每一段文字
# print(each)
new_each = {
'text': each # 将文本数据保存在变量new_each中
}
new_each = json.dumps(new_each)
res = requests.post(url, data=new_each) # 利用URL请求百度情感分析API
# print("content: ", res.content)
res_text = res.text # 保存分析得到的结果,以string格式保存
result = res_text.find('items') # 查找得到的结果中是否有items这一项
if (result != -1):
json_data = json.loads(res.text) # 如果结果不等于-1,则说明存在items这一项
positive = (json_data['items'][0]['positive_prob']) # 得到积极指数值
negative = (json_data['items'][0]['negative_prob']) # 得到消极指数值
sum_positive = sum_positive + positive # 积极指数值加和
sum_negative = sum_negative + negative # 消极指数值加和
# print(positive)
print(sum_positive)
print(sum_negative)
if (sum_positive > sum_negative): # 如果积极大于消极,则返回2
return 2
elif (sum_positive == sum_negative): # 如果消极等于于积极,则返回1
return 1
else:
return 0 # 否则,返回0
def main():
txt1 = "这人也太坏了吧"
txt2 = "每天都要开开心心啦"
print("txt1测试结果:",get_emotion(txt1))
print("txt2测试结果:",get_emotion(txt2))
if __name__ == "__main__":
main()
运行结果:
这里的文本我只是简单的测试,也可以通过文件获取,或者语音转文字等方式进行获取。
7.完结撒花
相信你一定学废了,所以是得不到我的女朋友的!