赞
踩
import jieba
import numpy as np
import pandas as pd
#读取情感词典到列表中的函数
def read_dic(dic_type):
with open(dic_type+'_extended.txt',encoding="utf-8") as f:
positive_extended = f.readlines()
temp=[]
for row in positive_extended:
temp.append(row.split())
pos_dic = []
for row in temp:
for column in row:
pos_dic.append(column)
return pos_dic
#判断文档中的词语有多少在情感词典中,并计数
def count_words(file,dictionary):
count = 0
for word in file:
if word in dictionary:
count+=1
return count
#返回文档从情感词出现的次数列表
#cutWords_list:此形参应该传入已经分好词并去除停用词的嵌套列表(见上),type_list应该传入不同的情感词列表
def count_list(cutWords_list,type_list): #type_list形参传入不同的情感词列表
negative_count=[]
for each_file in cutWords_list:
negative_count.append(count_words(each_file,type_list))
return negative_count
函数定义的准备工作完成,进入主函数:
with open('cutWords_list.txt',encoding="utf-8") as file: #读入了已经分词并去停用词的文件
cutWords_list = [k.split() for k in file.readlines()]
这里我没有进行分词并去停用词的操作,直接读取了已经分词后的结果。
#1.首先生成六个词典。 positive_list=read_dic("positive") negative_list=read_dic("negative") modalstrong_list=read_dic("modalstrong") modalweak_list=read_dic("modalweak") uncertainty_list=read_dic("uncertainty") litigious_list=read_dic("litigious") #2.然后生成六个结果列表。 positive_count=count_list(cutWords_list,positive_list) negative_count=count_list(cutWords_list,negative_list) modalstrong_count=count_list(cutWords_list,modalstrong_list) modalweak_count=count_list(cutWords_list,modalweak_list) uncertainty_count=count_list(cutWords_list,uncertainty_list) litigious_count=count_list(cutWords_list,litigious_list) #3.最后将结果输出到csv文件中 dataframe = pd.DataFrame({'positive_count':positive_count, 'negative_count':negative_count, 'modalstrong_count':modalstrong_count, 'modalweak_count':modalweak_count, 'uncertainty_count':uncertainty_count, 'litigious_count':litigious_count }) #将DataFrame存储为csv,index表示是否显示行名,default=True dataframe.to_csv("emotion_count.csv",index=False,sep=',') #写入文件并保存
然后就可以打开这个emotion_count.csv的文件了。
截图示例如下:
下文是整体过程:
写在前面:文档指的是一条记录,占一行。
下文是对情感法进行简单情感分析的过程博客,并不涉及对词语的加权、对程度副词加权和对否定词取反的操作,仅仅对词典中的词语进行计数。
输入:待计数文档,已有的六个情感词典。
输出:对六个词典中出现的词语进行计数得到的六列数据。
顺序见下:
分词并去停用词返回嵌套列表并保存到本地
https://blog.csdn.net/weixin_43919570/article/details/104316316
从母词及其扩充的情感词典txt文件读取到列表list中
https://blog.csdn.net/weixin_43919570/article/details/104311270
判断文档中的词语有多少在情感词典中并计数
https://blog.csdn.net/weixin_43919570/article/details/104312714
批量输出情感词计数结果到列表中
https://blog.csdn.net/weixin_43919570/article/details/104315090
其实4是对3加了一个循环得到的,应该将3和4看成一体,作用是输出计数列表。
词典法情感分析数词操作并输出结果到csv文件中
https://blog.csdn.net/weixin_43919570/article/details/104316043
第5篇文章是对以上四篇文章的汇总使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。