1. 程式人生 > >使用ANNdotNET進行情感分析

使用ANNdotNET進行情感分析

pyw designer 讀者 href ali mpm 切換 ati 建議

2018年10月的MSDN雜誌上發表了由James McCaffrey撰寫的文章“使用CNTK的情感分析” 。在這篇博文中,我將向您介紹這篇非常好且寫得很好的MSDN文章示例。我不打算重復MSDN文章中所寫的文本,因此建議首先閱讀該文,然後返回此處並在ANNdotNET中實現該示例。事實上,我已經在不到5分鐘的時間內實施了完整的解。由於ANNdotNET是GUI工具,因此在模型培訓和評估過程中看到所有出色的可視化效果很有趣。此外,ANNdotNET通過提供混淆矩陣,ROC曲線和其他二進制性能參數來提供完整的二進制模型評估,這個示例使得閱讀更有趣和有價值。

整個示例分五步實施。

第1步:準備文件和文件夾結構

首先,我們需要創建幾個文件夾和文件,以創建空的annproject。手動創建文件夾是必要的,因為ANNdotNET v1.0沒有創建Empty項目的選項。這將在下一個版本中添加。

首先,創建以下一組按層次排序的文件夾:

  • SentimentAnalysis
    • MoveReview
      • 數據

下圖顯示了這組文件夾。

技術分享圖片

第2步:下載示例中使用的數據集。

我們在MSDN文章中只需要訓練和測試數據集。可以從MSDN示例下載數據:Code_McCaffreyTestRun1018.zip。下載zip文件後,解壓縮示例,並將文件:imdb_sparse_train_50w.txt

indb_sparse_test_50w.txt復制數據文件夾,如上圖所示

第3步:創建MoviewReview.ann和LSTM-Net.mlconfig文件

  • 打開記事本並使用以下內容創建文件:
1 project:|Name:MovieReview |Type:NoRawData |MLConfigs:LSTM-Net
2 data:|RawData:MovieReview_rawdata.txt
3 parser:|RowSeparator:rn |ColumnSeparator: ; |Header:0 |SkipLines:0

將文件保存在SentimenAnalysis文件夾中作為

MovieReview.ann。下圖顯示了磁盤上保存的annproject文件。

技術分享圖片

現在再次打開記事本,創建一個新的空文件。空文件應該是mlconfig文件,其內容如下所示。不要擔心文件的內容,因為一旦我們用ANNdotNET打開它,所有這些細節都將可見。如果您想了解更多有關mlconfig文件結構的信息,請參閱ANNdotNET項目的這個wiki頁面。

1 configid:msdn-oct-2018-issue-sentiment-analysis-article
2 metadata:|Column02:y;Category;Label;Random;0;1
3 features:|x 129892 1
4 labels:|y 2 0
5 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
6 learning:|Type:AdamLearner |LRate:0.01 |Momentum:0.85 |Loss:CrossEntropyWithSoftmax |Eval:ClassificationAccuracy |L1:0 |L2:0
7 training:|Type:Default |BatchSize:250 |Epochs:400 |Normalization:0 |RandomizeBatch:0 |SaveWhileTraining:0 |FullTrainingSetEval:1 |ProgressFrequency:1 |ContinueTraining:0 |TrainedModel:
8 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文件的所有內容現在都顯示在網絡設置標簽頁中。

  1. 輸入圖層,尺寸為129892
  2. 具有二維的輸出層(二進制問題)
  3. 學習參數:
    1. AdamLearner,動量為0.01 lr和0.85,
    2. 損失函數是CrossEntropywithSoftmax
    3. 評估功能是ClassificationAccuracy
  4. NNetwork Designer顯示典型的LSTM循環網絡

步驟5.示例的訓練和評估

現在我們檢查了網絡設置,我們可以切換到列車標簽頁,並查看培訓參數。由於我們已經在mlconfig文件中設置了訓練參數,因此我們無需進行任何更改。

單擊“運行應用程序”命令啟動培訓過程。一段時間後,我們應該看到以下結果:

技術分享圖片

如果我們切換到評估頁面,我們可以執行一些統計分析,以評估模型是否良好。顯示評估選項卡頁面後,單擊“刷新”按鈕以根據培訓和驗證數據評估模型。

技術分享圖片

左側統計數據用於訓練數據集,左側用於驗證數據集。可以看出,該模型完美地預測了來自訓練數據集的所有數據,並且大約70%的準確度描述了驗證數據集。關閉cource,模型並不像我們預期的那樣好,但是這個演示已經足夠了。還有兩個按鈕可以顯示ROC曲線,以及其他二進制性能參數,這兩個數據集都是讀者的口味。

這是完成情感分析例程設置和運行所需的全部內容。如果您想要完整的ANNdotNET項目,可以從這裏下載

使用ANNdotNET進行情感分析