资源简介
微博情感倾向性分析,自己做的作业,代码已调通,可用。
代码片段和文件信息
# _*_ 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
- 上一篇:硬件课程设计-频率发生器
- 下一篇:在线卡密生成无需数据库
评论
共有 条评论