标签: 机器学习
该项目通过分析影评进行判断该评价的情感方向
项目准备:
1. 关于影评的数据集
2. 关于影评的情感标签
3. python的各种运算库
关于影评的数据集与情感标签点击此处下载
运算库请自行下载
(好吧,图文无关)
实现思想
对影评的每一个单词进行提取,通过神经网络找到单词之间与情绪的联系,进而进行预测
实现效果
准确率达85%以上,运算速率可达7000条影评/秒
现在开始我们的项目代码
1.首先我们要读入影评与情感标签
g = open('reviews.txt','r') # What we know!
reviews = list(map(lambda x:x[:-1],g.readlines()))
g.close()
g = open('labels.txt','r') # What we WANT to know!
labels = list(map(lambda x:x[:-1].upper(),g.readlines()))
g.close()
2.引入需要使用的库
from collections import Counter
import numpy as np
import time
import sys
import numpy as np
3.实现神经网络
class SentimentNetwork:
def __init__(self, reviews,labels,min_count = 10,polarity_cutoff = 0.1,hidden_nodes = 10, learning_rate = 0.1):
np.random.seed(1)
################神经网络的数据预处理#################
self.pre_process_data(reviews, labels, polarity_cutoff, min_count)
##########神经网络的数据初始化###########
self.init_network(len(self.review_vocab),hidden_nodes, 1, learning_rate)
###################################################
#############神经网络的数据预处理函数实现#############
###################################################
def pre_process_data(self, reviews, labels, polarity_cutoff, min_count):
###建立三个计数器分别对正面,负面,所有,进行计数
positive_counts = Counter()
negative_counts = Counter()
total_counts = Counter()
#对正面评论的单词进行计数
for i in range(len(reviews)):
if(labels[i] == 'POSITIVE'):
for word in reviews[i].split(