使用 ANNdotNET 进行情感分析





5.00/5 (3投票s)
使用 ANNdotNET 进行情感分析
文章中使用的完整工作示例可在此处下载:此处。
2018 年 10 月的 MSDN 杂志刊登了由 James McCaffrey 撰写的文章“使用 CNTK 进行情感分析”。我想知道是否可以像 McCaffrey 博士在杂志上写的那样,在 ANNdotNET 中实现这个解决方案。事实上,我在不到 5 分钟的时间内就实现了完整的解决方案。
在这篇博文中,我将引导你完成这篇 MSDN 文章中非常出色且写得很好的示例。我不会重复 MSDN 文章中的内容,因此建议你先阅读该文章,然后再回到这里并在 ANNdotNET 中实现示例。由于 ANNdotNET 是一个 GUI 工具,因此在模型训练和评估过程中,看到所有出色的可视化效果会很有趣。此外,ANNdotNET 通过提供混淆矩阵、ROC 曲线和其他二元性能参数来进行完整的二元模型评估,这使得这个示例更具趣味性和价值。
整个示例分为五个步骤实现。
步骤 1:准备文件和文件夹结构
首先,我们需要创建几个文件夹和文件,以便创建一个空的 annproject。手动创建文件夹是必要的,因为 ANNdotNET v1.0 没有创建空项目的选项。这将在下一个版本中添加。
因此,首先创建以下一组分层组织的文件夹
- SentimentAnalysis
- MoveReview
- data
- MoveReview
下图显示了这组文件夹
步骤 2:下载示例中使用的数据集
我们只需要 MSDN 文章中的训练和测试数据集。数据可以从 MSDN 示例下载:Code_McCaffreyTestRun1018.zip。下载 zip 文件后,解压示例,然后将文件:imdb_sparse_train_50w.txt 和 indb_sparse_test_50w.txt 复制到 data 文件夹,如下图所示。
步骤 3:创建 MoviewReview.ann 和 LSTM-Net.mlconfig 文件
- 打开记事本并创建具有以下内容的文件
project:|Name:MovieReview |Type:NoRawData |MLConfigs:LSTM-Net
data:|RawData:MovieReview_rawdata.txt
parser:|RowSeparator:rn |ColumnSeparator: ; |Header:0 |SkipLines:0
将文件保存在 SentimentAnalysis 文件夹中,文件名为 MovieReview.ann。下图显示了磁盘上保存的 annproject 文件。
现在再次打开记事本,创建一个新的空文件。这个空文件应该是 mlconfig 文件,内容如下所示。不用担心文件的内容,因为一旦我们用 ANNdotNET 打开它,所有这些细节都会显示出来。如果你想了解更多关于 mlconfig 文件结构的信息,请参阅 ANNdotNET 项目的这个 wiki 页面。
configid:msdn-oct-2018-issue-sentiment-analysis-article
metadata:|Column02:y;Category;Label;Random;0;1
features:|x 129892 1
labels:|y 2 0
network:|Layer:Embedding 50 0 0 None 0 0 |Layer:LSTM 25 25 0 TanH 1 1 |Layer:Dense 2 0 0 Softmax 0 0
learning:|Type:AdamLearner |LRate:0.01 |Momentum:0.85 |Loss:CrossEntropyWithSoftmax |Eval:ClassificationAccuracy |L1:0 |L2:0
training:|Type:Default |BatchSize:250 |Epochs:400 |Normalization:0 |RandomizeBatch:0 |SaveWhileTraining:0 |FullTrainingSetEval:1 |ProgressFrequency:1 |ContinueTraining:0 |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
该文件应保存在 MovieReview 文件夹中,文件名为 LSTM-Net.mlconfig。下一张图片显示了 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
- 输出层,维度为 2(二元问题)
- 学习参数
- AdamLearner,学习率为 0.01,动量为 0.85
- 损失函数是
CrossEntropywithSoftmax
- 评估函数是
ClassificationAccuracy
- NNetwork Designer 显示典型的 LSTM 循环网络
步骤 5:示例的训练和评估
现在我们已经回顾了网络设置,我们可以切换到训练选项卡页面,回顾训练参数。由于我们已经在 mlconfig 文件中设置了训练参数,因此无需更改任何内容。
通过点击“运行应用程序”命令开始训练过程。一段时间后,我们应该会看到以下结果
如果我们切换到评估页面,我们可以进行一些统计分析,以评估模型是否好。一旦显示评估选项卡页面,点击“刷新”按钮以针对训练和验证数据集评估模型。
左侧的统计数据是针对训练数据集的,左侧是针对验证数据集的。可以看出,模型完美预测了训练数据集中的所有数据,而对验证数据集的准确率约为 70%。当然,这个模型不像我们期望的那样适合生产环境,但对于这个演示来说已经足够了。还有两个按钮可以显示 ROC 曲线和这两个数据集的其他二元性能参数,读者可以自行测试。
以上就是设置和运行完整的感情分析示例所需的一切。如果你想要完整的 ANNdotNET 项目,可以从此处下载。
历史
- 2018 年 10 月 17 日:初始版本