最近在用python做一个文本的情感分析的项目,用到tensorflow,需要用python3的版本,之前因为《机器学习实战》那本书的缘故,用的是python27所以目前的情况是要两个版本共存,之前看到身边有人为了解决这个问题,居然装了两款软件,pycharm用来做python27的开发,另一款用来做python36的开发,估计一定是不知道python的虚拟环境工具virtualenv本文就来讲述一下这个工具是怎么用的,同时也讲一下,如何在pycharm中使用virtualenv
1 virtualenv的安装
virtualenv的安装和其它python上的软件安装一样,有两种方法,pip 和setup方法安装。
值得注意的是,我们说virutalenv的安装是为了解决多版本python共存的问题,暗含了,你的至少有一个python版本是已经存在,并且可以正常工作的。
我这里的主环境是python27
11 pip安装virtualenv
pip install virtualenv
当然了,卸载就是:pip uninstall virtualenv
如果pip没有安装的话,可以看下面的第二种安装virtualenv的方法,顺带将pip也安装了。
12 源码安装virtualenv
在virtualenv的官网下载最新的targz包:
将targz包解压后,目录切换到virutualenv的目录下,然后在执行一下命令:
c:\virtualenv-1510>python setuppy install
如果pip没有安装,就按照上面方法,下载最新pip的targz包安装即可。
2 用virtualenv配置python虚拟环境
说到用virtualenv配置python的虚拟环境,其实就是将某个特定项目(或者说目录下)配置成某个python版本。
如下:
现在要将c:\PythonProj\sjtu-cs 这个项目(我认为说成目录更准确些)配置成python36的版本,因为这个目录下全部是python35的东西,用python27去运行显然是有问题的。也就是说要用virtualenv去创建python361的虚拟环境。值得一提的是,虚拟什么版本的python,一定是这个python提前已经装好了。
首先:准备对哪个目录进行虚拟,就先进入到这个目录下(这里是c:\PythonProj\sjtu-cs ),然后运行命令:
virtualenv -p c:\Python36\pythonexe HigEnv
说明: -p就是python的版本(需要带上路径,这是因为在我们的环境变量里只有python27) HigEnv就是虚拟的环境变量。
如果不知道virtual,可以执行下面的命令进行查看:
上面都解释的很清楚,这里不再赘述。
我们看一下现在我们配置的是否生效了:
显然没有生效,因为需要激活。
3 激活虚拟环境变量
c:\PythonProj\sjtu-cs>cd HigEnv/Scripts
c:\PythonProj\sjtu-cs\HigEnv\Scripts>activate
验证一下:
>>> python "hello ,world"
python3和python2最明显的一个区别就是print由打印语句变成函数了。
退出激活环境用下面的命令:
(HigEnv) c:\PythonProj\sjtu-cs\HigEnv\Scripts>deactivate
值得注意的是,退出终端,重新进来的时候,如果没有激活,我们配置的虚拟环境是不会生效的,linux就不一样了,一直生效,不用每次都激活,目前还在研究中。
4 在pycharm中使用virtualenv
pycharm开发工具是我目前见过最好的python开发工具,非常强大,本身已经集成了virtualenv工具,所以我们如果用它做开发,根本无需手工安装virtualenv,
不过话又说回来,在windows下的virtualenv使用方法和linux大同小异,会了windows,linux一通百通。
41 新建项目,自由选择python版本
当导入已有项目时,pychar会自动选择相匹配的python版本,当然你也可以选,方法在后面。另外python2和python3分别向下兼容,你不会除了这两个版本还有其余版本吧。
42 在pycharm中创建virtualenv的虚拟环境:
当然了,你也可以不用创建环境变量,直接选择你需要的就可以了:
打开你需要选择python版本的项目,然后直接选择需要的project interpreter
OK!
计算机毕业设计
基于Python的SIFT和KCF的运动目标匹配与跟踪 毕业论文+项目源码
基于Python决策树算法的学生学习行为数据分析 设计报告+代码及数据
基于Sring+bootstrap+MySQL的住房公积金管理系统 课程报告+项目源码及数据库文件
基于C++的即时通信软件设计 毕业论文+项目源码
基于JavaWeb+MySQL的图书管理系统 课程报告+项目源码及数据库文件
基于Android Studio+Android SDK的手机通讯录管理软件设计 课程报告+项目源码
基于JSP+MySQL的校园网上订餐系统 毕业论文+项目源码及数据库文件
基于AndroidStudio的花艺分享平台APP设计 报告+源码及APK文件
基于Python的酒店评论情感分析 课程报告+答辩PPT+项目源码
基于QT的教务选课管理系统设计与实现 毕业论文+项目源码
基于Android+Springboot+Mybatis+Mysql的个人生活APP设计 说明书+项目源码
基于Vuejs+Go的Web3D宇宙空间数据可视化系统 设计报告+前后端源码及数据
基于java+android+SQLite的保健型果饮在线销售APP设计 毕业论文+源码数据库及APK文件
基于Vuejs+SpringBoot+MyBatis+MySQL的高校综合资源发布分享社交二手平台 毕业论文+项目源码及数据库文件+演示视频
基于Delphi+MySQL的大学生竞赛发布及组队系统 设计报告+源码数据库及可执行文件+使用说明书
基于Android的名片信息管理系统设计与实现 毕业论文+任务书+外文翻译及原文+演示视频+项目源码
基于Python的**数据可视化分析系统 设计报告+答辩PPT+项目源码
基于JavaWeb的企业公司管理系统设计与实现 毕业论文+答辩PPT+演示视频+项目源码
高校成绩管理数据库系统的设计与实现 毕业论文+项目源码
基于JavaWeb的家庭食谱管理系统设计与实现 毕业论文+项目源码及数据库文件
基于Python+SQLSERVER的快递业务管理系统的设计与实现 毕业论文+项目源码及数据库文件
基于Python的语音词频提取云平台 设计报告+设计源码
在推荐系统中引入 Serendipity 的算法研究 毕业论文+参考文献+项目源码
基于Html+Python+Django+Sqlite的机票预订系统 毕业论文+项目源码及数据库文件
基于Python的卷积神经网络的猫狗图像识别系统 课程报告+项目源码
基于C++的云安全主动防御系统客户端服务端设计 毕业论文+项目源码
基于JavaSSM的学生成绩管理APP系统设计与实现 毕业论文+答辩PPT+前后台源码及APK文件
基于JavaSwing+MySQL的清朝古代名人数据管理系统设计 毕业论文+任务书+项目源码及数据库文件
基于Python_Django的社会实践活动管理系统设计与实现 毕业论文
基于Servlet WebSocket MySQL实现的网络在线考试系统 毕业论文+项目源码
基于JavaWEB+MySQL的学生成绩综合管理系统 毕业论文+项目源码及数据库文件
基于SpringBoot+Vue和MySQL+Redis的网络课程平台设计与实现 毕业论文+任务书+开题报告+中期报告+初稿+前后台项目源码
基于Java的毕业设计题目收集系统 课程报告+项目源码
基于Java+Python+html的生产者与消费者算法模拟 毕业论文+任务书+项目源码
基于JavaWeb+MySQL的学院党费缴费系统 毕业论文+项目源码及数据库文件
基于Java+MySQL的学生成绩管理系统 毕业论文+任务书+答辩PPT+项目源码及数据库文件
基于Java+MySQL的学生和客户信息管理系统 课程报告+项目源码及数据库文件
基于Java的长整数加减法算法设计 毕业论文+项目源码
基于vue+MySQL的毕业设计网上选题系统 毕业论文+项目源码
基于背景建模和FasterR-CNN的视频前景和目标检测 毕业论文+答辩PPT+项目源码
基于Python的智能视频分析之人数统计的多种实现 毕业论文+答辩PPT+项目源码
基于C#+SQL server的校园卡消费信息管理系统 毕业论文+项目源码及数据库文件
来源 | 雪晴数据网
利用机器学习可以很方便的做情感分析。本篇文章将介绍在R语言中如何利用机器学习方法来做情感分析。在R语言中,由Timothy PJurka开发的情感分析以及更一般的文本挖掘包已经得到了很好的发展。你可以查看下sentiment包以及梦幻般的RTextTools包。实际上,Timothy还写了一个针对低内存下多元Logistic回归(也称最大熵)的R包maxtent。
然而,RTextTools包中不包含朴素贝叶斯方法。e1071包可以很好的执行朴素贝叶斯方法。e1071是TU Wien(维也纳科技大学)统计系的一门课程。这个包的主要开发者是David Meyer。
我们仍然有必要了解文本分析方面的知识。用R语言来处理文本分析已经是公认的事实(详见R语言中的自然语言处理)。tm包算是其中成功的一部分:它是R语言在文本挖掘应用中的一个框架。它在文本清洗(词干提取,删除停用词等)以及将文本转换为词条-文档矩阵(dtm)方面做得很好。这里是对它的一个介绍。文本分析最重要的部分就是得到每个文档的特征向量,其中词语特征最重要的。当然,你也可以将单个词语特征扩展为双词组,三连词,n-连词等。在本篇文章,我们以单个词语特征为例做演示。
注意,在R中用ngram包来处理n-连词。在过去,Rweka包提供了函数来处理它,感兴趣的可以查看这个案例。现在,你可以设置RTextTools包中create_matrix函数的参数ngramLength来实现它。
第一步是读取数据:
创建词条-文档矩阵:
现在,我们可以用这个数据集来训练朴素贝叶斯模型。注意,e1071要求响应变量是数值型或因子型的。我们用下面的方法将字符串型数据转换成因子型:
测试结果准确度:
显然,这个结果跟python得到的结果是相同的(这篇文章是用python得到的结果)。
其它机器学习方法怎样呢?
下面我们使用RTextTools包来处理它。
首先,指定相应的数据:
其次,用多种机器学习算法训练模型:
现在,我们可以使用训练过的模型做测试集分类:
准确性如何呢?
得到模型的结果摘要(特别是结果的有效性):
结果的交叉验证:
结果可在我的Rpub页面找到。可以看到,maxent的准确性跟朴素贝叶斯是一样的,其它方法的结果准确性更差。这是可以理解的,因为我们给的是一个非常小的数据集。扩大训练集后,利用更复杂的方法我们对推文做的情感分析可以得到一个更好的结果。示例演示如下:
推文情感分析
数据来自victornep。victorneo展示的是用python对推文做情感分析。这里,我们用R来处理它:
读取数据:
首先,尝试下朴素贝叶斯
然后,尝试其他方法:
这里,我们也希望得到正式的测试结果。包括:
1analytics@algorithm_summary:包括精确度,召回率,准确率,F-scores的摘要
2analytics@label_summary:类标签摘要
3analytics@document_summary:所有数据和得分的原摘要
4analytics@ensemble_summary:所有 精确度/覆盖度 比值的摘要
现在让我们看看结果:
与朴素贝叶斯方法相比,其它算法的结果更好,召回精度高于095。结果可在Rpub查看
原文链接:http://wwwxueqingcc/cms/article/107
既然你已经学到了数据分析,那么基本的语法应该大都知道了吧。
这无非就是筛选数据的问题,先搞清楚什么是“无意义的评论”,它满足什么条件,再遍历评论,如果满足这个“无意义”的条件,那么就删除掉就是了。
2016年, Tableau便发布了 TabPy的试用版本,一个可以在 Tableau工作簿中运行 Python代码的新 API 。当你通过 Tableau使用 TabPy时,你可以在 Python中定义计算字段,从而在你的可视化作品中充分挖掘大量机器学习库的潜力。
这个在 Tableau中与 Python的集成应用,为用户提供了强大的解决方案。例如,它只需几行 Python代码就能得到一个线上零售商所售商品的情感分析。然后你可以在 Tableau中从很多方面探索获得的结果。
你可能只想看到负面评价并且希望理解这些内容背后的原因。你可能想得到一个顾客列表,并与他们联系。或者你可能想可视化整体情绪随时间变化的情况。
R/Python整合:Rserve/TabPy Server
你可以很容易在电脑上或者远程服务器上安装 TabPy服务器。在 Tableau Desktop中,通过点击帮助 >设置与性能 >管理外部服务连接,在其中输入服务 URL ,你就可以完成配置。然后你可以使用 Python脚本作为 Tableau中计算字段的一部分,就像从 Tableau 81开始你可以利用 R的那样。
TabPy使用流行的 Anaconda环境,这能够预装和准备许多包括 scipy , numpy和 scikit-learn在内的常见 Python包。你可以在你的脚本中安装使用任何 Python库。
如果在公司里你有一个数据分析团队来开发定制模型, TabPy还可以通过发布模型很方便与其他那些想要在 Tableau中利用模型的人分享。
一旦发布,无论模型的类型与复杂性如何,你就只需要在 Tableau中运行一个只有一行 Python代码来运行该机器学习模型。
使用已发布的模型有几个好处。在预服务环境中,复杂的功能变得容易使用,分享和以部署方式重用。你可以在后端提升和更新模型,或者修改代码,而 Tableau中的计算字段并不需要额外的操作即可保证正常工作。
看到 Python在 Tableau中的应用,你是不是有点手痒了?亟不可待的想尝试一下?小编在这里推荐一篇新手实用教程,如果你以前没有使用过 Python ,不用担心 ——这对新手来说绝对是可以实现的。继续看下去吧!
Python实用案例分享
本次教程使用的数据集来源 Makeover Monday(点击了解详情) ,关于最流行的前100首歌曲的歌词。
1设置你的环境
1 确保你使用的是 Tableau 10版本
2 打开含有 top-song数据的 TDE文件
3 安装 TabPy
2在 Tableau中连接 TabPy
现在是时候在 Tableau中设置 TabPy了。在 Tableau中,转到帮助 >设置和性能 >管理外部连接。输入 “localhost” ,因为你在自己的计算机上运行 TabPy 。默认端口为 9004 ,因此除非你手动更改它,否则应该将其保留。
3创建 TabPy计算
TabPy Github页面具有你应该在 Tableau计算中使用 Python的详细文档。我简单地重新调整了在 #data 16 TabPy部分的一个计算演示。这里可以看重播。复制下方链接至浏览器查看重播:
现在,你可以使用视图中的这个 [Word]计算字段来处理情绪评分了!缺点是,由于这是一个表计算并且还使用了 ATTR函数,因此你不能在一个详细级别表达式中使用它。也就是说,你不能使用这个例子和数据结构来计算歌曲细节级别的情感总和。
情感分析(Sentiment Analysis)
第一步,就是确定一个词是积极还是消极,是主观还是客观。这一步主要依靠词典。
英文已经有伟大词典资源:SentiWordNet 无论积极消极、主观客观,还有词语的情感强度值都一并拿下。
但在中文领域,判断积极和消极已经有不少词典资源,如Hownet,NTUSD但用过这些词典就知道,效果实在是不咋滴(最近还发现了大连理工发布的情感词汇本体库,不过没用过,不好评价)。中文这方面的开源真心不够英文的做得细致有效。而中文识别主客观,那真的是不能直视。
中文领域难度在于:词典资源质量不高,不细致。另外缺乏主客观词典。
第二步,就是识别一个句子是积极还是消极,是主观还是客观。
有词典的时候,好办。直接去匹配看一个句子有什么词典里面的词,然后加总就可以计算出句子的情感分值。
但由于不同领域有不同的情感词,比如看上面的例子,“蓝屏”这个词一般不会出现在情感词典之中,但这个词明显表达了不满的情绪。因此需要另外根据具体领域构建针对性的情感词典。
如果不那么麻烦,就可以用有监督的机器学习方法。把一堆评论扔到一个算法里面训练,训练得到分类器之后就可以把评论分成积极消极、主观客观了。
分成积极和消极也好办,还是上面那个例子。5颗星的评论一般来说是积极的,1到2颗星的评论一般是消极的,这样就可以不用人工标注,直接进行训练。但主客观就不行了,一般主客观还是需要人来判断。加上中文主客观词典不给力,这就让机器学习判断主客观更为困难。
中文领域的难度:还是词典太差。还有就是用机器学习方法判断主客观非常麻烦,一般需要人工标注。
另外中文也有找到过资源,比如这个用Python编写的类库:SnowNLP 就可以计算一句话的积极和消极情感值。但我没用过,具体效果不清楚。
到了第三步,情感挖掘就升级到意见挖掘(Opinion Mining)了。
这一步需要从评论中找出产品的属性。拿手机来说,屏幕、电池、售后等都是它的属性。到这一步就要看评论是如何评价这些属性的。比如说“屏幕不错”,这就是积极的。“电池一天都不够就用完了,坑爹啊”,这就是消极的,而且强度很大。
这就需要在情感分析的基础上,先挖掘出产品的属性,再分析对应属性的情感。
分析完每一条评论的所有属性的情感后,就可以汇总起来,形成消费者对一款产品各个部分的评价。
接下来还可以对比不同产品的评价,并且可视化出来。如图。
这一步的主要在于准确挖掘产品属性(一般用关联规则),并准确分析对应的情感倾向和情感强度。因此这需要情感分析作为基础。首先要找到评论里面的主观句子,再找主观句子里的产品属性,再计算属性对应的情感分。所以前面基础不牢固,后面要准确分析就有难度。
中文这个领域的研究其实很完善了,技术也很成熟。但需要完善前期情感分析的准确度。
总的来说,就是中文词典资源不好,工作做得不是很细很准。前期的一些基础不牢固,后面要得到准确的分析效果就不容易了。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)