public static PredictedCommentaire AttribScoreAndTypeOfComment(this PredictedCommentaire commentaire) { MLContext mlContext = new MLContext(); //chargement des commentaires de la base de donnée TrainTestData splitDataView = LoadData(mlContext, commentaire); //Transformation des commentaire pour être exploité par l'intelligence artificuelle ITransformer model = BuildAndTrainModel(mlContext, splitDataView.TrainSet); //Evaluation du model de prédiction ainsi on a le taux de précision de notre model Evaluate(mlContext, model, splitDataView.TestSet); PredictionEngine <PredictedCommentaire, PredictedModels.PredictedCommentaire> predictionFunction = mlContext.Model.CreatePredictionEngine <PredictedCommentaire, PredictedModels.PredictedCommentaire>(model); //Prédction grâce au model crée avec la classification binaire var resultPrediction = predictionFunction.Predict(commentaire); var collection = new CommentaireCollection(); if (collection.GetItems(c => c.Value == commentaire.Value).Count() == 0) { collection.NewItems(new PredictedCommentaire { Id = resultPrediction.Id, Value = resultPrediction.Value, Date = resultPrediction.Date, SentimentType = resultPrediction.SentimentType, Sentiment = resultPrediction.Sentiment }); } return(resultPrediction); }
public static TrainTestData LoadData(MLContext mlContext, PredictedCommentaire commentaire) { IEnumerable <PredictedCommentaire> commentaires = new CommentaireCollection().GetItems(c => c.Value != commentaire.Value); IDataView dataView = mlContext.Data.LoadFromEnumerable(commentaires); //Ce code utilise la méthode TrainTestSplit() pour diviser l'ensemble de données chargé en ensembles de données train et test et les retourner dans la classe TrainTestData. //La valeur par défaut est 10%, dans ce cas nous utilisons 20% pour évaluer plus de données. TrainTestData splitDataView = mlContext.Data.TrainTestSplit(dataView, testFraction: 0.2); return(splitDataView); }