在NLP的情感分析过程中,往往是对评论逐条处理分析,但有时也会进行分组分析,如以商家、省份、某个场景为研究单元。这时能最直接的方法就是逐个进行计算,如果场景比较多,那么肯定是不能逐个挨着挨着算的,但由于每个场景他的样本量都是不同的,因此数据集是一个非平衡的,即在10000条数据中,第一个场景的数据是[1,100],第二个场景的范围是[101,230]....以此类推
因此若我们要使用for循环则需要将其进行处理,即以场景数为循环单位。这里可以分为几种处理情况:
case1:基于词典的情感分析
基于词典的情感分析是对词进行赋值并计算情感,所以评论的长度对最后的结果并不会有影响,即我们可以在计算前按照上述分类聚合思想进行分组处理,处理好了过后再进行情感量化。代码如下:
df = pd.read_excel('data.xlsx') grouped = df.groupby('idcode') result = grouped['content'].unique() result2 = result.reset_index() result2['new_group'] = result2['content'].apply(lambda x: ';'.join(x))
case2:基于机器学习、深度学习等训练模型的情感分析
这种情况下就必须先计算,再分组求平均:
按照'code'分组求'satisfaciton'的均值并存放在新列'avg'中 data['avg']=data.groupby('code')['satisfaction'].mean() 或data['avg']=data.groupby('code').mean()['satisfaction']