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]. знак равно