词典法——词典法情感分析数词操作并输出结果到csv文件中

准备工作

import jieba
import numpy as np
import pandas as pd
  1. 定义读取情感词典到列表中的函数
#读取情感词典到列表中的函数
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
  1. 定义判断文档中的词语有多少在情感词典中,并计数的函数
#判断文档中的词语有多少在情感词典中,并计数
def count_words(file,dictionary):
    count = 0
    for word in file:
        if word in dictionary:
            count+=1
    return count
  1. 定义返回文档从情感词出现的次数列表的函数,此函数用到了上面count_words()函数
#返回文档从情感词出现的次数列表
#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的文件了。
截图示例如下:
在这里插入图片描述

发布了27 篇原创文章 · 获赞 1 · 访问量 1175

猜你喜欢

转载自blog.csdn.net/weixin_43919570/article/details/104316043
今日推荐