ML.NET — это платформа машинного обучения с открытым исходным кодом, которая позволяет нам преобразовывать входные данные в модель ML, а затем иметь возможность интегрировать их в любой тип приложения в экосистеме .NET, будь то веб-приложение, мобильное приложение, настольный компьютер или любое другое. Тип заявления.

Вот типы моделей, которые мы можем генерировать в ML.NET:

В нашем случае мы сосредоточимся на классификации/категоризации текстовых комментариев.

Анализ тональности текста

Для анализа тональности намерение состоит в том, чтобы иметь возможность классифицировать текстовые записи на две группы: положительные комментарии (1) и отрицательные комментарии (0).

Для достижения этой цели мы выполним три действия в этой статье:

  • 1. Выполнить необходимые требования и подготовить наше решение в Visual Studio.
  • 2. Создайте нашу модель машинного обучения с помощью ML.NET.
  • 3. Используйте модель, созданную из ASP.NET.

С этим упомянутым, давайте начнем!

Часть 1. Предварительные требования и подготовка решения в Visual Studio

Чтобы создать нашу модель машинного обучения, мы будем использовать интерпретатор Model Builder ML.NET. Для этого нам необходимо иметь следующую рабочую нагрузку в Visual Studio (кроссплатформенная разработка .NET):

Теперь с этой рабочей нагрузкой мы можем создать наше решение. В этом случае намерение состоит в том, чтобы использовать модель ML, которую мы собираемся сгенерировать из веб-приложения, для этой цели мы будем использовать инфраструктуру DotVVM, которая позволяет нам работать с HTML-страницами и классами C# в ASP.NET с помощью MVVM. паттерн (Модель, Вид, ВидМодель).

Часть 2. Создание модели машинного обучения

Пришло время увидеть ML.NET в действии! Как и в любом другом процессе создания модели в мире машинного обучения, этапы построения модели анализа настроений следующие:

  • Установите сценарий машинного обучения.
  • Подготовьте среду для обучения данным.
  • Загрузите набор данных.
  • Обучите модель.
  • Оцените модель.
  • Потребляйте модель.

Для начала в основной проект нашего решения добавим компонент типа Machine Learning:

С этой опцией интерпретатор ML.NET Model Builder будет инициализирован, и мы сможем приступить к настройке модели.

Сценарий:

Первым шагом является выбор сценария, с которым мы хотим работать, в данном случае это будет Классификация текста:

Окружающая среда:

Теперь мы должны выбрать вычислительные ресурсы для обучения нашей модели. В частности, для классификации текста мы можем использовать только центральный процессор нашего компьютера.

Источник данных:

Это одна из самых важных частей, поскольку с помощью данных мы можем настроить нашу модель. Для этого мы можем выбрать два типа источников, либо установив соединение и одновременно запросив базу данных SQL Server, либо с помощью CSV-файла.

В этом случае мы будем использовать файл CSV с двумя столбцами, первый с рассматриваемым текстом, а второй столбец с типом комментария (0 отрицательных — 1 положительный).

Вот пример набора данных: wikipedia-detox-250-line-data.tsv.

Загрузив его, мы можем предварительно просмотреть данные и выбрать столбец, который мы хотим предсказать позже.

Обучение:

Со всем, что мы уже установили, мы уже можем выполнить процесс обучения и, наконец, сгенерировать желаемую модель. В этом разделе единственное, что мы можем настроить, — это максимальное время, в течение которого ML.NET может искать идеальную модель для классификации текста.

В конце процесса обучения мы можем визуализировать, сколько моделей было оценено ML.NET, и точность найденной лучшей модели.

Оценка:

К этому моменту у нас уже есть установленная модель, в любом случае из построителя моделей ML.NET мы можем оценить модель на конкретном примере.

Использовать:

Наконец, интерпретатор предоставит нам варианты использования созданной модели либо путем создания других проектов (с помощью консоли или с помощью веб-API), либо путем указания вызовов, которые мы должны сделать из нашего собственного приложения.

В этом случае мы уже можем использовать модель из нашего веб-приложения с DotVVM на ASP.NET с новым сгенерированным пакетом: MLModel.mbconfig.

Часть 2. Использование сгенерированной модели из ASP.NET

Чтобы использовать модель, мы должны обратиться к классу MLModel, сгенерированному ML.NET в группе MLModel.mbconfig:

В этом смысле необходимо установить экземпляр ModelInput с комментарием, который мы хотим предсказать, а затем вызвать метод Predict и получить объект типа ModelOutput с соответствующим предсказанием (1 положительный, 0 отрицательный) и его вероятностью. .

Модель представления:

Для этой цели и для создания веб-страницы с DotVVM в ViewModel, в данном случае DefaultViewModel.cs, мы определим три атрибута или глобальные переменные:

public string InputText { get; set; }
public string Result { get; set; } = null;
public decimal? Score { get; set; } = null;

Эти переменные позволят нам хранить введенный пользователем текст в InputText, а результаты прогноза представлять в атрибутах Result и Score.

Затем мы можем установить метод в этом классе таким образом, чтобы он представлял действие кнопки для выполнения прогноза:

public void Predict()
{
    var sampleData = new MLModel.ModelInput()
    {
        Col0 = InputText,
    };
    //Load model and predict output
    var output = MLModel.Predict(sampleData);
    if ((int)output.Prediction == 0)
    {
        Result = "Negative.";
    }
    else
    {
        Result = "Positive.";
    }
    Score = decimal.Round((decimal)(output.Score[(int)output.Prediction] * 100), 2);
}

В этом коде у нас есть три важные части:

  • Инициализируйте MLModel.ModelInput комментарием, введенным пользователем.
  • Вызовите MLModel.Predict с ModelInput в качестве параметра, получив таким образом ModelOutput с результатами.
  • Подготовьте Result, чтобы позже визуализировать результат (положительный или отрицательный) и его точность в прогнозе.

Просмотр:

Отлично, теперь мы можем создать представление, ссылаясь на атрибуты и метод, созданные в файле ViewModel. Этот вид будет закодирован в файле Default.dothtml следующим образом:

<table style="border: hidden">
    <tbody style="border: hidden">
        <tr style="border: hidden">
            <td style="border: hidden" align="center">
                <dot:TextBox Text="{value: InputText}" placeholder="Write your text..." />
            </td>
            <td style="border: hidden" align="center">
                <dot:Button Click="{command: Predict()}" Text="Predict" />
            </td>
            <td style="border: hidden" align="center">
                <b>{{value: Result}}</b> {{value: Score}}
            </td>
        </tr>
    </tbody>
</table>

Здесь наиболее важным является элемент управления TextBox для ввода пользователем своего комментария и сохранения его в атрибуте InputText, вызов метода Predict() с Button и отображение результатов путем отображения значений переменных Result, и Score.

Примеры работы:

С этим View и его ViewModel наш веб-сайт готов. Здесь мы можем увидеть два примера во время выполнения:

Исходный код этого примера доступен в этом репозитории GitHub: DotvvmValidationSample.

Спасибо!

Большое спасибо за чтение, я надеюсь, что эта демонстрация может быть вам полезна. Если у вас есть какие-либо вопросы или идеи, которые необходимо обсудить, будет приятно иметь возможность сотрудничать и вместе обмениваться знаниями друг с другом.

До встречи в Твиттере! Или, если хотите, вы также можете написать мне в Facebook или на почту: [email protected]. знак равно