ML.NET ve VooDoo - Voodoo RPA

by Voodoo Editor
2 sene ago
515 Views

İçindekiler Tablosu


VooDoo RPA ve ML.Net Kullanımı

VooDoo RPA ve Eğitilmiş ML.net paketi kullanımı ile veri oluşturmak için öncelikle;
Visual Studio ortamında ML.Net ile verinizi eğitiniz. Eğitilen veri bütünü bir *.zip paketi şeklinde oluştuktan sonra, verinizi VooDoo Studio’da istediğiniz bir senaryo üzerinde kullanabilirsiniz.

Visual Studio üzerinde kullanabileceğiniz veri eğitimi araçları şu şekildedir;

  • Metin Sınıflandırma
  • Değer Tahmini
  • Resim Sınıflandırma
  • Önerme
  • Obje Tespiti
    • Kullanırken yardımcı olacak adımlar:

1. Microsoft.ML.Data.dll ve Microsoft.ML.dll, VooDoo Studio İçerisinde bulunmaktadır.VooDoo Studio içerisinde bulunan Kod Adımı &gt Aksiyon &gt Bileşen Şablon Tipi &gt MLNET seçeneğinde bir kod adımı geliştirilmesi halinde ML.Net kütüphaneleri kod adımınıza dahil edilecektir. Kütüphanelerde oluşabilecek problemler için ilgili kitaplıkları;
NuGet sitesi aracılığı ile indirebilirsiniz ve VooDoo Studio Projenize dahil edebilirsiniz.
VooDoo Studio Projenize ilgili kütüphaneleri dahil etmek için sırasıyla;
Gelişmiş -> Kod -> Aksiyon -> Editör Aç -> Yönet -> Dosya Referansları -> Ekle şeklinde ilerleyerek kitaplığı referans olarak gösterebilirsiniz.

2. MLContext: ML.Net Objesini Sınıfınızın içerisinde oluşturur(ML.Net ile ilgili kullanacağınız bütün fonksiyonlar bu obje altındadır)

3. DataViewSchema: Eğitilmiş olan model için boş bir veri şeması oluşturur.

4. ITransformer: Eğitilmiş verinizi, veri şemasına aktarır

Örnek #1

Aşağıdaki Örnek, “.eml” dosyasından E-Posta Eki, Konu, E-Posta Yazı İçeriğini nasıl ayrıştırılacağını gösterir.

namespace VoodooImplementation {
    using System;
    using VooDooCommonData.CommonInterface;
    using VooDooCommonData.InstanceData;
    using System.Linq;
    using System.IO;
    using Microsoft.ML.Data;
    using Microsoft.ML;
	using System.Reflection;
	using System.Runtime.Versioning;
	using OfficeOpenXml;
    
    public class ComputationEvaluator : System.MarshalByRefObject, IPlugInComputation {
        
        private bool result_;
        
        private VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager_;
        
        /// Default Constructor for class
        public ComputationEvaluator() {
        }
        
        public bool result {
            get {
                return result_;
            }
        }
        
        public virtual VooDooCommonData.InstanceData.PlanDataInstanceManager planDataInstanceManager {
            get {
                return planDataInstanceManager_;
            }
            set {
                planDataInstanceManager_ = value;
            }
        }
        
        /// Calculate
        public virtual void ExecuteComputation()
        {
            MLContext mlContext = new MLContext();    // ML objesi oluşturulur.
            DataViewSchema predictionPipelineSchema;
            ITransformer predictionPipeline = mlContext.Model.Load(@"",out predictionPipelineSchema);  // ("") kısımlı bölüme modelin bulunduğu path girilir.

            var predEngine = mlContext.Model.CreatePredictionEngine <ModelInput, ModelOutput>(predictionPipeline);

            using(var outStream = File.Open(@"",FileMode.Create, FileAccess.Write))     // Yazılabilir izinleri ile bir Excel Dosyası oluşturur.
            {
                using(ExcelPackage xl = new ExcelPackage(outStream))
                {

                    // Bu Kısımda Model sonuçlarını Excel Dosyasındaki ilgili alanlara yazım işlemi gerçekleşir.
                    
                    ExcelWorksheet worksheet = xl.WorkBook.Worksheets.Add("Sayfa1"); // Çalışma Sayfası Oluşturulduğu kısım.

                    for(int i=1; i < 11; i++)
                    {
                        ModelInput inputData = new ModelInput(){
                            ImageSource = @""+i+".jpg",
                        };

                        ModelOutput predictionResult = preEngine.Predict(inputData);
                        worksheet.Cells[i,1].Value = predictionResult.PredictedLabel;
                        worksheet.Cells[i,1].Value = predictionResult.Score;
                        xl.Save();
                    }
                }
            }
            result_ = true;
        }
    }

    /*
    *
    * Model Input/Output Property(Model) sınıfları aşağıdaki gibidir. 
    *
    */

    public class ModelInput
    {

        public string Label {get; set;}

        public string ImageSource {get; set;}

    }

    public class ModelOutput
    {

        public string PredictedLabel {get; set;}

        public string Score {get; set;}

    }
}