目前就中文情感分析方面,我感觉我们国内的一些企业搞的免费的接口不太好,比如说百度的API,我使用了一些感觉非常差劲效果,虽然可以免费很多次,但是最终得出的结果不敬人意,很多都是中立的语句,对我们调查分析产生了很大的误导。
现在我发现了用TextBlob来对我们爬取的评论和回答进行进行情感分析。
TextBlob是一个用于处理文本数据的Python库,它将NLTK和Pattern两者很好地配合。它提供了一个一致的 API,用于深入研究常见的自然语言处理 (NLP) 任务,例如词性标记、名词短语提取、情绪分析等。
但是这个是一个对英文文本情感分析。
所以我需要对中文文本进行翻译,目前翻译的软件我觉得有道词典的效果就很不错。所以我先用有道词典的API翻译,再使用TextBlob进行情感分析。
代码部分如下:
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 6 23:25:34 2023
@author: TXS
"""
import pandas as pd
from textblob import TextBlob
from translate import Translator
import time
import json
import requests
# 翻译函数,word 需要翻译的内容
def translate(word):
# 有道词典 api
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null'
# 传输的参数,其中 i 为需要翻译的内容
key = {
'type': "AUTO",
'i': word,
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"ue": "UTF-8",
"action": "FY_BY_CLICKBUTTON",
"typoResult": "true"
}
# key 这个字典为发送给有道词典服务器的内容
response = requests.post(url, data=key)
# 判断服务器是否相应成功
if response.status_code == 200:
# 然后相应的结果
return response.text
else:
print("有道词典调用失败")
# 相应失败就返回空
return None
data1 = pd.read_excel('557665216--海天酱油为啥突然翻车了.xlsx')
data2 = pd.read_excel('557679215--海天声明称「用食品添加剂误导消费者认为中国食品比外国食品差是不明真相别有用心」哪些信息值得关注.xlsx')
data3 = pd.read_excel('557861088--如何看待媒体谈海天酱油事件消费者对食品添加剂的使用有哪些误解.xlsx')
data4 = pd.read_excel('558022684--你还会买海天酱油吗.xlsx')
data5 = pd.read_excel('558176809--行业人士称海天事件将让中国酱油行业提前年进入零添加剂时代你认可吗追求零添加有无意义.xlsx')
negative_prob=[]
positive_prob=[]
for i in data5['回答内容']:
list_trans = translate(i)
result = json.loads(list_trans)
t = result['translateResult'][0][0]['tgt']
blob = TextBlob(t)
sentiment = blob.sentiment.polarity
time.sleep(0.5)
negative_prob.append(sentiment)
# print(na)
# print(po)
na_data = pd.DataFrame(negative_prob)
data5['消极']=na_data
data5.to_csv('data5.csv',encoding="utf_8_sig")