当前位置:   article > 正文

词典法——词典法情感分析数词操作并输出结果到csv文件中_如何保存情感输出值

如何保存情感输出值

准备工作

import jieba
import numpy as np
import pandas as pd
  • 1
  • 2
  • 3
  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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 定义判断文档中的词语有多少在情感词典中,并计数的函数
#判断文档中的词语有多少在情感词典中,并计数
def count_words(file,dictionary):
    count = 0
    for word in file:
        if word in dictionary:
            count+=1
    return count
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

主函数

函数定义的准备工作完成,进入主函数:

with open('cutWords_list.txt',encoding="utf-8") as file:  #读入了已经分词并去停用词的文件
    cutWords_list = [k.split() for k in file.readlines()]
  • 1
  • 2

这里我没有进行分词并去停用词的操作,直接读取了已经分词后的结果。

#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=',')       #写入文件并保存
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

然后就可以打开这个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篇文章是对以上四篇文章的汇总使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/72851
推荐阅读
相关标签
  

闽ICP备14008679号