使用ANNdotNET进行情感分析
2018年10月的MSDN杂志上发表了由James McCaffrey撰写的文章“使用CNTK的情感分析” 。在这篇博文中,我将向您介绍这篇非常好且写得很好的MSDN文章示例。我不打算重复MSDN文章中所写的文本,因此建议首先阅读该文,然后返回此处并在ANNdotNET中实现该示例。事实上,我已经在不到5分钟的时间内实施了完整的解。由于ANNdotNET是GUI工具,因此在模型培训和评估过程中看到所有出色的可视化效果很有趣。此外,ANNdotNET通过提供混淆矩阵,ROC曲线和其他二进制性能参数来提供完整的二进制模型评估,这个示例使得阅读更有趣和有价值。
整个示例分五步实施。
第1步:准备文件和文件夹结构
首先,我们需要创建几个文件夹和文件,以创建空的annproject。手动创建文件夹是必要的,因为ANNdotNET v1.0没有创建Empty项目的选项。这将在下一个版本中添加。
首先,创建以下一组按层次排序的文件夹:
- SentimentAnalysis
- MoveReview
- 数据
- MoveReview
下图显示了这组文件夹。
第2步:下载示例中使用的数据集。
我们在MSDN文章中只需要训练和测试数据集。可以从MSDN示例下载数据:Code_McCaffreyTestRun1018.zip。下载zip文件后,解压缩示例,并将文件:imdb_sparse_train_50w.txt和indb_sparse_test_50w.txt复制到数据文件夹,如上图所示。
第3步:创建MoviewReview.ann和LSTM-Net.mlconfig文件
- 打开记事本并使用以下内容创建文件:
project:|Name:MovieReview |Type:NoRawData |MLConfigs:LSTM-Net
data:|RawData:MovieReview_rawdata.txt
parser:|RowSeparator:rn |ColumnSeparator: ; |Header: |SkipLines:
将文件保存在SentimenAnalysis文件夹中作为MovieReview.ann。下图显示了磁盘上保存的annproject文件。
现在再次打开记事本,创建一个新的空文件。空文件应该是mlconfig文件,其内容如下所示。不要担心文件的内容,因为一旦我们用ANNdotNET打开它,所有这些细节都将可见。如果您想了解更多有关mlconfig文件结构的信息,请参阅ANNdotNET项目的这个wiki页面。
configid:msdn-oct--issue-sentiment-analysis-article
metadata:|Column02:y;Category;Label;Random;;
features:|x
labels:|y
network:|Layer:Embedding None |Layer:LSTM TanH |Layer:Dense Softmax
learning:|Type:AdamLearner |LRate:0.01 |Momentum:0.85 |Loss:CrossEntropyWithSoftmax |Eval:ClassificationAccuracy |L1: |L2:
training:|Type:Default |BatchSize: |Epochs: |Normalization: |RandomizeBatch: |SaveWhileTraining: |FullTrainingSetEval: |ProgressFrequency: |ContinueTraining: |TrainedModel:
paths:|Training:data\imdb_sparse_train_50w.txt |Validation:data\imdb_sparse_test_50w.txt |Test:data\imdb_sparse_test_50w.txt |TempModels:temp_models |Models:models |Result:LSTM-Net_result.csv |Logs:log
该文件应使用LSTM-Net.mlconfig文件名保存在MovieReview文件夹中。下图显示了mlconfig文件的存储位置。
步骤4.使用ANNdotNET GUI工具打开annproject文件
现在我们已经设置了所有内容,以便用ANNdotNET打开和训练情绪分析示例。由于ANNdotNET实现MLEngine其基于CNTK,数据集是兼容的,并且可以由训练者读取。为了获得更好的结果,我们稍微改变了学习参数。我们使用AdamLearner代替SGD。
如果您的计算机上没有安装ANNdotNET工具,只需转到发布部分并下载最新版本。或者克隆GitHub存储库并在Visual Studio中运行它。有关如何将ANNdotNET作为独立应用程序或Visual Studio解决方案运行的所有信息,请访问GitHub页面https://github.com/bhrnjica/anndotnet。
在机器上简单解压缩ANNdotNET的二进制文件后,只需选择anndotnet.wnd.exe文件即可运行它。ANNdotNET运行后,单击“打开应用程序”命令并选择MoveReview.ann文件。在一秒钟内,应用程序使用相应的mlconfig文件加载项目。从项目浏览器中,单击LSTM-NET三项,并出现与下图相似的内容。
我们写入mlconfig文件的所有内容现在都显示在网络设置标签页中。
- 输入图层,尺寸为129892
- 具有二维的输出层(二进制问题)
- 学习参数:
- AdamLearner,动量为0.01 lr和0.85,
- 损失函数是CrossEntropywithSoftmax
- 评估功能是ClassificationAccuracy
- NNetwork Designer显示典型的LSTM循环网络
步骤5.示例的训练和评估
现在我们检查了网络设置,我们可以切换到列车标签页,并查看培训参数。由于我们已经在mlconfig文件中设置了训练参数,因此我们无需进行任何更改。
单击“运行应用程序”命令启动培训过程。一段时间后,我们应该看到以下结果:
如果我们切换到评估页面,我们可以执行一些统计分析,以评估模型是否良好。显示评估选项卡页面后,单击“刷新”按钮以根据培训和验证数据评估模型。
左侧统计数据用于训练数据集,左侧用于验证数据集。可以看出,该模型完美地预测了来自训练数据集的所有数据,并且大约70%的准确度描述了验证数据集。关闭cource,模型并不像我们预期的那样好,但是这个演示已经足够了。还有两个按钮可以显示ROC曲线,以及其他二进制性能参数,这两个数据集都是读者的口味。
这是完成情感分析例程设置和运行所需的全部内容。如果您想要完整的ANNdotNET项目,可以从这里下载。
使用ANNdotNET进行情感分析的更多相关文章
- 朴素贝叶斯算法下的情感分析——C#编程实现
这篇文章做了什么 朴素贝叶斯算法是机器学习中非常重要的分类算法,用途十分广泛,如垃圾邮件处理等.而情感分析(Sentiment Analysis)是自然语言处理(Natural Language Pr ...
- Stanford NLP学习笔记:7. 情感分析(Sentiment)
1. 什么是情感分析(别名:观点提取,主题分析,情感挖掘...) 应用: 1)正面VS负面的影评(影片分类问题) 2)产品/品牌评价: Google产品搜索 3)twitter情感预测股票市场行情/消 ...
- 情感分析的现代方法(包含word2vec Doc2Vec)
英文原文地址:https://districtdatalabs.silvrback.com/modern-methods-for-sentiment-analysis 转载文章地址:http://da ...
- SA: 情感分析资源(Corpus、Dictionary)
先主要摘自一篇中文Survey,http://wenku.baidu.com/view/0c33af946bec0975f465e277.html 4.2 情感分析的资源建设 4.2.1 情感分析 ...
- 爬虫再探实战(五)———爬取APP数据——超级课程表【四】——情感分析
仔细看的话,会发现之前的词频分析并没有什么卵用...文本分析真正的大哥是NLP,不过,这个坑太大,小白不大敢跳...不过还是忍不住在坑边上往下瞅瞅2333. 言归正传,今天刚了解到boson公司有py ...
- Python爬虫和情感分析简介
摘要 这篇短文的目的是分享我这几天里从头开始学习Python爬虫技术的经验,并展示对爬取的文本进行情感分析(文本分类)的一些挖掘结果. 不同于其他专注爬虫技术的介绍,这里首先阐述爬取网络数据动机,接着 ...
- C#编程实现朴素贝叶斯算法下的情感分析
C#编程实现 这篇文章做了什么 朴素贝叶斯算法是机器学习中非常重要的分类算法,用途十分广泛,如垃圾邮件处理等.而情感分析(Sentiment Analysis)是自然语言处理(Natural Lang ...
- R语言做文本挖掘 Part5情感分析
Part5情感分析 这是本系列的最后一篇文章,该.事实上这种单一文本挖掘的每一个部分进行全部值获取水落石出细致的研究,0基础研究阶段.用R里面现成的算法,来实现自己的需求,当然还參考了众多网友的智慧结 ...
- 如何科学地蹭热点:用python爬虫获取热门微博评论并进行情感分析
前言:本文主要涉及知识点包括新浪微博爬虫.python对数据库的简单读写.简单的列表数据去重.简单的自然语言处理(snowNLP模块.机器学习).适合有一定编程基础,并对python有所了解的盆友阅读 ...
随机推荐
- mysql传统主从配置与主从监控
主从简介 在现代企业中,数据显得尤为重要,而存储数据的数据库选择又五花八门,但无论是何种数据库,均存在着一种隐患. 当数据规模非常大,读写量也很高时,一台数据库已经无法负担全部读写任务,就需要多台数据 ...
- U3D一些使用
1,UGUI Button同时监听点击事件和长按事件:https://blog.csdn.net/yye4520/article/details/80844870
- 京东Alpha平台开发笔记系列(三)
摘要:通过前面两篇文章的讲述,大致了解了JdAlpha平台前端开发的主要流程.接下来本篇文章主要讲述后台服务器端开发的主要流程.这里会涉及到后台服务器的搭建的内容,本篇文章就不以赘述,如需了解请读下面 ...
- [转]BSD系统正在死亡?一些安全研究人员这样认为
摘要:在代码安全上被关注太少,漏洞没有被报告修补,FreeBSD.OpenBSD和NetBSD还能活下来吗? 在德国莱比齐的34c3网站上,IOActive的渗透测试主管Ilja von Sprund ...
- ADO.NET MSSSQLServer 操作简要总结
1).数据库操作首先应该是链接,链接的方式有多种,不论怎样实现最终都是把链接字符串赋值给实现了 继承自DbConnection 类的SqlConnection类实例的ConnectionString属 ...
- webapi使用swagger出现“Cannot read property 'parameters' of null”
前端时间在webapi项目使用swagger来提供接口文档及测试工具,按网上方法(http://wmpratt.com/swagger-and-asp-net-web-api-part-1)配置好之后 ...
- jquery validate 校验使用总结
一.jquery.validator表单验证id和name问题 因为后台是struts,表单提交,所有输入框的值保存在name=对象.名字中,而jquery.validator表单验证用的是name, ...
- macOS终端开启TAB键自动补全功能(不区分大小写)
1.在当前用户根目录(~)下,修改~/.inputrc这个文件(如果文件不存在,则新建该文件),文件内容如下: set show-all-if-ambiguous on set completion- ...
- 解决weblogic 部署环境后出现的乱码问题
1.在startWebloci.cmd 中 set CLASSPATH=%SAVE_CLASSPATH% 下增加一行 JAVA_OPTIONS="${JAVA_OPTIONS} -Dfile ...
- 关于C++用法的学习心得
通过大一一学期对C++语言的学习,我感觉c++是一门有一定难度并且很有挑战性的科目,在c++学习过程中,我们懂得了其有很多的用法. 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确. ...