Skip to content

Радионица: Машинско учење

Припрема

Проверите да ли је у Visual Studio 2022 окружењу инсталиран ML.NET Model Builder:

Ако јесте, ОВДЕ можете преузети најновију верзију и ажурирати постојећу (није обавезно за ову вежбу).

Задатак

Креирајте апликацију која предвиђа оцену ресторана (1 позитивна, 0 негативна) на основу утисака гостију. На пример, ако гост напише “The dessert was delicious” апликација са великом сигурношћу треба дати оцену 1, односно, ако гост напише “The soup was cold and tasteless” апликација треба дати оцену 0.

Поступак

Креирајте нови C# Console App пројекат (не .NET Framework). Назовите апликацију по жељи, али немојте штиклирати опцију да се решење и пројекат налазе у истом директоријуму. Потом штиклирајте .NET 6.0 (Long-term support).

Десним кликом на imeAplikacije одаберите Add, па Machine Learning Model.

На следећем прозору у пољу Name упишите SentimentModel.mbconfig.

Од понуђених, одаберите први, Data classification сценарио.

Одаберите локално окружење за тренинг Local (CPU).

Потом ПРЕУЗМИТЕ ПОДАТКЕ, распакујте архиву и сачувајте фајл yelp_labelled.txt у директоријуму у којем сте креирали апликацију. Фајл садржи овакве податке:

Wow... Loved this place.	        1
Crust is not good.	        0
Not tasty and the texture was just nasty.	        0

Додајте сачувани фајл као извор података и селектујте col1 као колону чију вредност апликација треба да предвиди:

Повећајте време за тренинг на 60 секунди и покрените тренинг.

Сачекајте да се тренинг заврши, па тестирајте успешност тренинга:

По завршетку тренинга, три фајла су додата:

  • SentimentModel.zip – тренинг модел
  • SentimentModel.consumption.cs – улазне и излазне класе и Predict метода за коришћење модела
  • SentimentModel.training.cs – поступак тренинга

Генерисани код можете користити у апликацији:

На пример:

using MlApp;

string x = Console.ReadLine();

var sampleData = new SentimentModel.ModelInput()
{
    Col0 = x,
};

var result = SentimentModel.Predict(sampleData);

var sentiment = result.PredictedLabel == 1 ? "Pozitivna ocena" : "Negativna ocena";

Console.WriteLine($"Uneti tekst: {sampleData.Col0}\nOcena: {sentiment}");