这个错误通常是因为return语句在函数之外使用所致。请检查你的代码,确保所有的return语句都在函数内部使用。
在这个特定的错误中,最后一行的return语句可能没有正确地缩进到extract_opinion函数内部。请尝试将该行代码缩进到函数内部,并确保它与for循环和if/elif语句具有相同的缩进级别。修改后的代码如下:
```
import pandas as pd
import jieba.posseg as pseg
# 读取数据
data = pd.read_excel('华为.xlsx')
# 定义函数,用于提取PROP和ADJ
def extract_opinion(text):
words = pseg.cut(text)
prop_list = []
adj_list = []
for word, flag in words:
if flag == 'prop':
prop_list.append(word)
elif flag == 'adj':
adj_list.append(word)
return prop_list, adj_list # 将return语句缩进到函数内部
# 对每条评论进行观点提取,并将结果添加到新的列中
data[['PROP', 'ADJ']] = data['评价内容'].apply(lambda x: pd.Series(extract_opinion(x)))
# 统计总条数和各自占比
total_count = len(data)
positive_count = len(data[data['情感倾向'] == 'Positive'])
neutral_count = len(data[data['情感倾向'] == 'Neutral'])
negative_count = len(data[data['情感倾向'] == 'Negative'])
positive_ratio = positive_count / total_count
neutral_ratio = neutral_count / total_count
negative_ratio = negative_count / total_count
# 输出若干项抽取的PROP和ADJ
print(data[['评价内容', 'PROP', 'ADJ']].head(10))
# 输出总条数和各自占比
print('总条数:', total_count)
print('正向占比:', positive_ratio)
print('中立占比:', neutral_ratio)
print('负向占比:', negative_ratio)
# 将结果保存