情感分析 Sentiment Analysis

  • 本文主要是对优达学城 深度学习 第二部分卷积神经网络中Lesson2的一个总结,主要在代码层面
  • 目标:利用BP神经网络判断一段影评是正面评价(Positive)还是负面评价(Negative)
  • 代码以及Solution可以在 这里进行下载(运行在jupyter notebook)

Project 1

项目1并没有直接开始搭建网络,而是从直观上对我们的数据进行分析,并且掌握一些有用的库,具体包括

  • 数据的读取
  • Counter类的使用
  • 将文本数字化,提出一种似乎可行的解决方案

读取数据

import numpy as np
import pandas as pd
reviews = pd.read_csv('reviews.txt', header=None)
reviews.head()
0
0 bromwell high is a cartoon comedy . it ran at …
1 story of a man who has unnatural feelings for …
2 homelessness or houselessness as george carli…
3 airport starts as a brand new luxury pla…
4 brilliant over acting by lesley ann warren . …
labels = pd.read_csv('labels.txt', header=None)
labels.head()
0
0 positive
1 negative
2 positive
3 negative
4 positive

Counter 类的使用

  • 统计词汇在所有影评中出现的次数,并且同时统计正向的和负向的
  • Counter是一种用于统计个数的类,非常好用
  • split(’ ‘)可以对一条影评以空格进行分割
from collections import Counter
positive_counts = Counter()
negative_counts = Counter()
total_counts = Counter()
for review, label in zip(reviews.values, labels.values):words = review[0].split(' ')total_counts.update(words);if label == 'positive':positive_counts.update(words)else:negative_counts.update(words)
len(total_counts)

74074

positive_counts.most_common(20)

[(”, 550468),
(‘the’, 173324),
(‘.’, 159654),
(‘and’, 89722),
(‘a’, 83688),
(‘of’, 76855),
(‘to’, 66746),
(‘is’, 57245),
(‘in’, 50215),
(‘br’, 49235),
(‘it’, 48025),
(‘i’, 40743),
(‘that’, 35630),
(‘this’, 35080),
(’s’, 33815),
(‘as’, 26308),
(‘with’, 23247),
(‘for’, 22416),
(‘was’, 21917),
(‘film’, 20937)]

negative_counts.most_common(20)

[(”, 561462),
(‘.’, 167538),
(‘the’, 163389),
(‘a’, 79321),
(‘and’, 74385),
(‘of’, 69009),
(‘to’, 68974),
(‘br’, 52637),
(‘is’, 50083),
(‘it’, 48327),
(‘i’, 46880),
(‘in’, 43753),
(‘this’, 40920),
(‘that’, 37615),
(’s’, 31546),
(‘was’, 26291),
(‘movie’, 24965),
(‘for’, 21927),
(‘but’, 21781),
(‘with’, 20878)]

那么,我们如何让神经网络“认识”这些影评呢?

  • 影评都是文字,神经网络无法对文本进行直接处理,因此我们需要数字化这些影评
  • 这10w条影评,经过统计一共出现了74074个单词,74074并不大
  • 我们可以想到一种“一个萝卜一个坑”的方法,具体是,输入层共74074个输入,也就是说每个单词都“占了一个坑”,输入值就是这个单词出现次数

  • 上图很好的解释了这种想法,假设我们有一条影评” It’s horrible and terrible”,那么horrible和terrible的位置上为1(当然,It’s的位置应该也是1,但是上图没有显示),其他都是0
  • 基于上面的想法,我们需要对每个单词进行“指派门牌号”,让单词的位置进行固定,因此我们接下来进行word2index
  • word2indx:给定一个单词,返回该单词在输入层上的位置
word2index = dict()
for idx,word in enumerate(total_counts.keys()):word2index[word] = idx
word2index['apple']

25600

End Project 1

  • 我们将文本数字化,接下去我们将实现一个神经网络对我们的想法进行验证

神经网络之文本情感分析(一)相关推荐

  1. 神经网络之文本情感分析(三)

    Project 3 在Project 2中,我们构建并训练了一个两层的神经网络用于情感的分析,但是准确率不尽人意 在这个Project中,我们将对问题进行分析,思考如何提高准确率 到底出了什么问题? ...

  2. 神经网络之文本情感分析(二)

    Projet 2 在Project 1 中,我们学习了如何处理和统计reviews 基于上一个Project"一个萝卜一个坑"的思想,我们将文本进行了数字化,使得文本可以作为输入进 ...

  3. 神经网络之文本情感分析(四)

    Project 4 在Project 3中,我们对神经网络做了一丢丢的改变就使得准率上升了一大截 在这个Project中,我们将对神经网络进行改进,使得训练的速度更快. 如何实现呢?我们的网络存在很多 ...

  4. TensorFlow-RNN循环神经网络 Example 2:文本情感分析

    TensorFlow-RNN文本情感分析 之前用全连接神经网络写过一个文本情感分析 http://blog.csdn.net/weiwei9363/article/details/78357670 现 ...

  5. [深度学习TF2][RNN-LSTM]文本情感分析包含(数据预处理-训练-预测)

    基于LSTM的文本情感分析 0. 前言 1. 数据下载 2. 训练数据介绍 3. 用到Word2Vector介绍 wordsList.npy介绍 wordVectors.npy介绍 4 数据预处理 4 ...

  6. [深度学习]-基于tensorflow的CNN和RNN-LSTM文本情感分析对比

    基于tensorflow的CNN和LSTM文本情感分析对比 1. 背景介绍 2. 数据集介绍 2.0 wordsList.npy 2.1 wordVectors.npy 2.2 idsMatrix.n ...

  7. 让机器有温度:带你了解文本情感分析的两种模型

    摘要:本篇博文从模型和算法的视角,分别介绍了基于统计方法的情感分析模型和基于深度学习的情感分析模型. 文本情感分析(Sentiment Analysis)是指利用自然语言处理和文本挖掘技术,对带有情感 ...

  8. python英文文本情感分析_sentimentpy模块进行中文文本情感分类

    sentimentpy是我根据R语言的一个文本情感分析包sentiment进行开发的, 开发的初衷有: R的sentiment已经被弃坑, 没人维护 Python比R更擅长文本处理 sentiment ...

  9. 基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种

    基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种 ,含数据集可直接运行 完整代码下载地址:基于LSTM三分类的文本情感分 ...

最新文章

  1. OpenStack Swift源码安装
  2. SVN合并(merge)的使用
  3. java集群解析文件_干货:一文详解Redis集群原理核心内容
  4. 实例1.2:获得应用程序主窗口指针
  5. 44 MM配置-采购-条件-定价过程-定义条件类型
  6. 培养宝贝惊人记忆力10妙招哦
  7. CVPR | 基于LiDAR的3D物体检测新框架
  8. 暑假攻略:怎样让孩子过一个充实又省钱的假期
  9. 一段最短的代码,用上js所有关键字
  10. mysql数据库函数详解_MySQL数据库之字符函数详解
  11. 读 zepto 源码之工具函数
  12. 关于.h 与 汇编中的.inc文件
  13. 在Linux下安装GmSSL
  14. 快速批量打印工程图,这个工具少不了
  15. Java实现POS打印机无驱打印(转)
  16. 如何制作WindowsPE启动盘(极简)
  17. 华为手机上html怎么打开,华为手机root权限怎么开启?详细的步骤以及图文教程...
  18. java处理 mysql中json类型
  19. springboot中报415错误怎么解决?
  20. e2e 测试 出现的错误

热门文章

  1. wcdma系统随机接入过程的流程图_WCDMA终端的随机接入过程的射频测试
  2. NUC980开发板Linux系统EC20模块 移植 串口 PPP拨号
  3. elastichd的使用教程_ElasticSearch可视化工具ElasticHD安装
  4. printf打印结构体_工程师:这道题80%初学者都没做对!你确定搞懂结构体内存对齐了?...
  5. go get如何删除_在Go使用Sqlite和Accsee
  6. css样式有行内式还有什么,在行内式CSS样式中,属性和值的书写规范与CSS样式规则不相同...
  7. 外观模式和代理模式的联系和区别_设计模式之代理设计模式
  8. c创建python虚拟机_cpython大致数据结构实现笔记
  9. 博客系统的设计与实现_企业车辆管理系统设计与实现
  10. python 网站模板_使用Python抓取模板之家的CSS模板