技术标签: 情感分析模型python
Python之ML–情感分析
深入研究自然语言处理(natual language processing,NLP)领域的一个分支–情感分析(sentiment analysis)
主要知识点如下:
清洗和准备数据
基于文本文档构建特征向量
训练机器学习模型用于区分电影的正面与负面评论
使用out-of-core学习处理大规模文本数据集
一.获取IMDb电影评论数据集
情感分析,有时也称为观点挖掘(opinion mining),是NLP领域一个非常流行的分支;它分析的是文档的情感倾向(polarity).情感分析的一个常见任务就是根据作者对某一主题所表达的观点或是情感来对文档进行分类
我们使用互联网电影数据库(Internet Movie Database,IMDb)数据集来进行测试.此数据集包含50000个关于电影的正面或负面的评论,正面的意思是影片在IMDb数据集中的评分高于6星,而负面的意思是影片的评分低于5星.我们可以通过链接:http://ai.stanford.edu/~amaas/data/sentiment/,下载电影评论数据集
aclImdb.zip
在成功提取数据集后,我们现在着手将从压缩文件中得到的各文本文档组合为一个CSV文件.把电影的评论读取到pandas的DataFrame对象中.为了实现对处理过程的可视化,同时能够预测剩余处理时间,我们将用到pyprind包
import pyprind
import pandas as pd
import os
pbar=pyprind.ProgBar(50000)
labels={'pos':1,'neg':0}
df=pd.DataFrame()
for s in ('test','train'):
for l in ('pos','neg'):
path="./data/aclImdb/%s/%s"%(s,l)
for file in os.listdir(path):
with open(os.path.join(path,file),'rb') as infile:
txt=infile.read()
df=df.append([[txt,labels[l]]],ignore_index=True)
pbar.update()
df.columns=['review','sentiment']
0% [##############################] 100% | ETA: 00:00:00
Total time elapsed: 00:03:46
执行上述代码,我们首先初始化了一个包含50000次迭代的进度条对象pbar,这也是我们准备读取的文档的数量.使用嵌套的for循环,我们迭代读取aclImdb目录下的train和test两个子目录,以及pos和neg二级子目录下的文本文件,并将其附加到DataFrame对象df中,同时加入的还有文档对应的整数型类标(1代表正面,0代表负面)
由于集成处理过后数据集中的类标是经过排序的,我们现在将使用np.random子模块下的permutation函数对DataFrame对象进行重排
import numpy as np
np.random.seed(0)
df=df.reindex(np.random.permutation(df.index))
df.to_csv('./data/movie_data.csv',index=False)
读取并输出前5个样本摘要,以此来快速确认数据以按正确格式存储
df=pd.read_csv('./data/movie_data.csv')
df.head(5)
review
sentiment
0
b’In 1974, the teenager Martha Moxley (Maggie …
1
1
b"OK… so… I really like Kris Kristofferson…
0
2
b’SPOILER Do not read this, if you think…
0
3
b’hi for all the people who have seen this won…
1
4
b’I recently bought the DVD, forgetting just h…
0
二.词袋模型简介
我们将介绍词袋模型(bag-of-words model),它将文本以数值特征向量的形式来表示.词袋模型的理念很简单,可描述如下:
我们在整个文档集上为每个词汇创建了唯一的标记,例如单词
我们为每个文档构建一个特征向量,其中包含每个单词在此文档中出现的次数
1.将单词转换为特征向量
根据每个文档中的单词数量构建词袋模型,我们可以使用scikit-learn中的CountVectorizer类.CountVectorizer以文本数据数组作为输入,其中文本数据可以是个文档或仅仅是个句子,返回的就是我们所要构建额词袋模型
import numpy as np
from sklearn.feature_extraction.text import CountVectorizer
count=CountVectorizer()
docs=np.array([
'The sum is shining',
'The weather is sweet',
'The sum is shining and the weather is sweet'
])
bag=count.fit_transform(docs)
通过调用CountVectorizer的fit_transform方法,我们构建了词袋模型的词汇库,并将下面三个
FLASH和EEPROM的最大区别FLASH和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会..._eeprom成功率
首先下载Apache2.x的源码包,地址:http://httpd.apache.org/当前(2013年03月26日)的最新版本为Apache HTTP Server 2.4.4,下载地址:http://httpd.apache.org/download.cgi#apache241、解压下载的源码包 tar -xjvf httpd-2.4.4.tar.bz2 或者..._linux 手动编译安装apache2
目录背景目的组图操作步骤总结背景工作需要,通过学习使用华为模拟软件eNSP对自身知识和技能进行提升。目的熟练掌握远程管理交换机组图如下:操作步骤第一步:安装eNSP并打开第二部:新建拓扑,拖动二个交换机到工作区第三步:拖动一个PC进工作区并对其串口进行设置设置串口第四步:连接二台交换机第五步:启动设备启动完成,如下图所示第六步:进入交换机,进行配置先进行必打命令设置配置设备IP,测试网络连通性查看vlan进入vlan设置ip,开启通道,设置密码,设_怎么远程交换机
首先需要焊接eaidk310的串口debug引脚。在这个位置。然后通过ust-ttl模块将开发板与电脑usb口相连。打开putty。设置好参数。默认波特率为:1500000。默认系统的用户名和密码都为openailab。通过这个就可以顺利登录了。..._如何使用putty 设置波特率
一.实验目的:了解和使用VC集成开发环境;熟悉常用的功能菜单命令;掌握C语言中的输入输出;掌握变量定义和使用;理解顺序结构程序设计方法 。二、实验内容和步骤2.简单的数据输入输出实验(1)输入下面的程序,运行并分析结果。(注意: 绝对值函数fabs(x)。)#include <math.h>#include <stdio.h>int main( void ){ double question =-45.35, answer; answer
最近写专利时看到了一种基于浏览记录的反爬虫方法,该方法基于 “在前端页面中以埋点或者提取页面日志的方式,获取用户的前端浏览记录,计算用户行为指标并进行人机验证” 。用户行为指标用户行为指标的计算基于前端浏览记录中的浏览地址与浏览时间。根据所述浏览时间和所述地址数量计算预设单位时长内访问次数;根据所述地址数量与所述总浏览时长计算每个浏览地址的平均浏览时长;利用预设的指标函数对所述地址数量、总浏览时长、平均浏览时长和预设单位时长访问次数进行计算,得到用户行为指标。其中,f 为用户行为指标,A_反爬虫数据记录
Linux万花筒系列之——流编辑器sed——系统性讲解: 上一节课讲了sed的结构,底层原理和调试方法,这节课我们来看几个sed中的基础概念/术语/名词,地址规范(Address Specification),模式空间(Pattern Space),保持空间(Hold Space)
一、查看服务器是否安装了rsh一般情况下,linux服务器都有rsh功能,但出于保险起见,最好查看一下,作者本人就因为某台服务器rsh命令所需要的系统包没安装(或被人误删了)而在其他地方找了半天原因,结果可想而知。查..._rsh 互信
建立一个dao接口,建立一个dao实现类public interface CustomerDao {//插入方法,传一个Customer对象进去 public void insert(Customer custname);//根据名字查询 public Customer selectByName(String custname);//根据用户名和密码查询 p..._public list selectall(){
MATLAB2016b不能与M文件关联最近安装MATLAB 2016b之后,发现不能自动关联.m格式的文件。每次双击.文件都不能找到MATLAB打开,只能先打开MATLAB软件,然后再找到m文件打开。太麻烦。。。参考网上的资料解决了这个问题,让我们看一下步骤吧系统环境:window7 64bitMATLAB版本:MATLAB2016b解决方法:1、 首先下载压缩包 下载链接..._matlab r2016b】关联m文件
我们建立了一个IP为6.6.6.6内网DNS服务器群,所在网段为10.211.77.0/24,而我们要实现的是在PC端(网段10.211.66.0/24)能ping通6.6.6.6,同时执行命令dig www.baidu.com @6.6.6.6 A,能得到文章最开始的dig 8.8.8.8类似的返回结果。_ipv4 任播 dns
基于单片机的酒精浓度测试仪的设计本文设计了一款便携式的酒精浓度测试仪,该设计方案采用的是89C52单片机和MQ-3酒精浓度传感器。待检测到气体信号时,酒精传感器采集得到的信号经过模数转换模块进行转换,再送至单片机进行处理分析,最后由LCD1602显示酒精浓度值,以达到警示驾驶员的作用。除此之外还可根据不用的环境用小键盘来调整测试仪的浓度警报阈值以适应不同的场合。经过大量数据调查显示,半导体型酒精浓度测试仪具有操作简单,便携等优点,相比于传统的酒精浓度测试仪,具有精度高,稳定性优良等优点。因此酒精浓度测试_51单片机酒精浓度测试仪初始化流程