在本文中,将探讨如何使用ANNdotNET工具来实现情感分析。情感分析是一种自然语言处理技术,用于识别和提取文本数据中的情感倾向。将通过一个具体的示例,展示如何使用ANNdotNET来构建和训练一个情感分析模型。
首先,需要创建一些文件夹和文件,以便创建一个空的annproject。由于ANNdotNETv1.0没有提供创建空项目的选项,因此需要手动创建文件夹。以下是需要创建的文件夹结构:
SentimentAnalysis
└───MoveReview
└───data
请确保按照上述结构创建文件夹。
需要从MSDN文章中获取训练和测试数据集。可以从以下链接下载数据集:
https://example.com/Code_McCaffreyTestRun1018.zip
下载并解压文件后,将以下文件复制到data文件夹中:
imdb_sparse_train_50w.txt
imdb_sparse_test_50w.txt
打开记事本,创建一个名为MovieReview.ann的文件,并输入以下内容:
<?xml version="1.0" encoding="utf-8"?>
<project:|Name:MovieReview |Type:NoRawData |MLConfigs:LSTM-Net>
<data:|RawData:MovieReview_rawdata.txt>
<parser:|RowSeparator:rn |ColumnSeparator: ; |Header:0 |SkipLines:0>
保存文件到SentimentAnalysis文件夹中。接下来,创建一个名为LSTM-Net.mlconfig的空文件,并输入以下内容:
<?xml version="1.0" encoding="utf-8"?>
<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文件夹中。
现在已经准备好了所有必要的文件,可以使用ANNdotNET工具打开并训练情感分析示例。由于ANNdotNET基于CNTK实现,因此数据集是兼容的,可以直接读取。为了获得更好的结果,稍微调整了学习参数,使用了AdamLearner代替SGD。
如果还没有安装ANNdotNET工具,请访问以下链接下载最新版本:
https://github.com/bhrnjica/anndotnet
下载并解压后,运行anndotnet.wnd.exe文件。打开ANNdotNET后,点击打开应用程序命令,选择MoveReview.ann文件。几秒钟后,应用程序将加载项目和相应的mlconfig文件。从项目资源管理器中,点击LSTM-NET三项,应该会出现以下内容:
<input layer with 129892 dimensions>
<output layer with 2 dimensions (binary problem)>
<learning parameters: AdamLearner, with 0.01 lr and 0.85 momentum>
<loss function is CrossEntropywithSoftmax>
<evaluation function is ClassificationAccuracy>
<NNetwork Designer shows typical LSTM recurrent network>
现在已经检查了网络设置,可以切换到训练标签页,查看训练参数。由于已经在mlconfig文件中设置了训练参数,因此不需要进行任何更改。
点击运行应用程序命令开始训练过程。经过一段时间,应该看到以下结果:
<if we switch to Evaluation page, we can perform some statistics analysis in order to evaluate if the model is good or not. Once the evaluation tab page is shown, click on Refresh button to evaluate the model against training and validation data stets.>
<the left statistics are for the training dataset, and the left side is for the validation data set. As can be seen, the model perfectly predicted all data from the training data set, and about 70% of accuracy described the validation data set. Of course, the model is not good as we expected for the production, but for this demonstration is good enough. There are also two buttons to show ROC curve, and other binary performance parameters, for both data sets, which the reader may test.>
https://example.com/complete-anndotnet-project.zip