• 大小: 1.52MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-12-26
  • 语言: 其他
  • 标签: 倾向性  

资源简介

微博情感倾向性分析,自己做的作业,代码已调通,可用。

资源截图

代码片段和文件信息

# _*_ coding: utf-8 _*_

#好评good.txt(1列)和坏评bad.txt(1列)停用词stop.txt(1列)

#获取文本字符串
import nltk

from nltk.collocations import  BigramCollocationFinder

from nltk.metrics import  BigramAssocMeasures

#安装结巴,进入D:\software\Python\Python35\scripts,执行pip3 install jieba即可;卸载使用pip3  uninstall jieba即可

import jieba


def text():

     f1 = open(‘d:/positive.txt‘‘r‘encoding=‘utf-8‘)

     f2 = open(‘d:/negative.txt‘‘r‘encoding=‘utf-8‘)

     line1 = f1.readline()

     line2 = f2.readline()

     str = ‘‘

     while line1:

         str += line1

         line1 = f1.readline()

     while line2:

         str += line2

         line2 = f2.readline()

     f1.close()

     f2.close()

     return str

#返回分词列表如:[[‘我‘‘爱‘‘北京‘‘天安门‘][‘你‘‘好‘][‘hello‘]],一条评论一个
import os
import codecs
def read_file(filename):

#   with codecs.open(‘d:/stop.txt‘‘r‘‘utf-8‘) as rf:
#       with open()
     stop = [line.strip() for line in  codecs.open(‘d:/stop.txt‘‘r‘‘utf-8‘).readlines()]#停用词

     f = codecs.open(filename‘r‘‘utf-8‘)

     line = f.readline()

     str = []

     while line:

         s = line.split(‘\t‘)

         fenci = jieba.cut(s[0]cut_all=False)#False默认值:精准模式

         str.append(list(set(fenci)-set(stop)))

         line = f.readline()

     return str


#安装nltk,进入D:\software\Python\Python35\scripts,执行pip3 install  nltk即可

from nltk.probability import  FreqDistConditionalFreqDist

from nltk.metrics import  BigramAssocMeasures


#获取信息量最高(前number个)的特征(卡方统计)

def jieba_feature(number):

     posWords = []

     negWords = []

     for items in read_file(‘d:/positive.txt‘):#把集合的集合变成集合

         for item in items:

            posWords.append(item)

     for items in read_file(‘d:/negative.txt‘):

         for item in items:

            negWords.append(item)


     word_fd = FreqDist() #可统计所有词的词频

     cond_word_fd = ConditionalFreqDist() #可统计积极文本中的词频和消极文本中的词频

     for word in posWords:

         word_fd[word] += 1

         cond_word_fd[‘pos‘][word] += 1

     for word in negWords:

         word_fd[word] += 1

         cond_word_fd[‘neg‘][word] += 1


     pos_word_count = cond_word_fd[‘pos‘].N() #积极词的数量

     neg_word_count = cond_word_fd[‘neg‘].N() #消极词的数量

     total_word_count = pos_word_count + neg_word_count


     word_scores = {}#包括了每个词和这个词的信息量

     for word freq in word_fd.items():

         pos_score = BigramAssocMeasures.chi_sq(cond_word_fd[‘pos‘][word]  (freq pos_word_count) total_word_count) #计算积极词的卡方统计量,这里也可以计算互信息等其它统计量

         neg_score = BigramAssocMeasures.chi_sq(cond_word_fd[‘neg‘][word]  (freq neg_word_count) total_word_count) #同理

         word_scores[word] = pos_score + neg_score #一个词的信息量等于积极卡方统计量加上消极卡方统计量


     best_vals = sorted(word_scores.items() key=lambda item:item[1]  reverse=True)[:number] #把词按信息量倒序排序。number是特征的维度,是可以不断调整直至最优的

     best_words = set([w for ws in best

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7057  2017-05-14 14:06  微博情感倾向性分析\代码\emotion.py

     文件         65  2017-05-15 15:32  微博情感倾向性分析\代码\readme.txt

     文件       6099  2017-05-13 12:06  微博情感倾向性分析\代码\senti_python.py

     文件    2027971  2017-05-13 16:58  微博情感倾向性分析\数据集\negative.txt

     文件    1810399  2017-05-13 16:47  微博情感倾向性分析\数据集\positive.txt

     文件      15183  2016-10-24 18:26  微博情感倾向性分析\数据集\stop.txt

     目录          0  2017-05-15 15:52  微博情感倾向性分析\代码

     目录          0  2017-05-15 15:52  微博情感倾向性分析\数据集

     目录          0  2017-11-13 14:56  微博情感倾向性分析

----------- ---------  ---------- -----  ----

              3866774                    9


评论

共有 条评论