public Result(List <ReponseRecast> recastContact, ReponseWatson reponseWatson) { List <ResultMerge> listResultMerge = new List <ResultMerge>(); foreach (var intentWatson in reponseWatson.classes) { ResultMerge resultMerge = new ResultMerge(); resultMerge.intent = intentWatson.class_name; decimal confiencetotalRecast = 0; int elementRecat = 0; foreach (ReponseRecast item in recastContact) { if (item.intent.slug != "fournir-informations" && item.intent.slug != null) { elementRecat++; } if (item.intent.slug == resultMerge.intent) { confiencetotalRecast = confiencetotalRecast + Convert.ToDecimal(item.intent.confidence.Replace('.', ',')); } } if (elementRecat == 0) { resultMerge.confidence = 0; break; } resultMerge.confidence = confiencetotalRecast / elementRecat; resultMerge.confidence = (resultMerge.confidence * (decimal)0.80 + Convert.ToDecimal(intentWatson.confidence.Replace('.', ',')) * (decimal)1.20) / 2; //resultMerge.confidence = (resultMerge.confidence + Convert.ToDecimal(intentWatson.confidence.Replace('.', ','))) / 2; listResultMerge.Add(resultMerge); } ListResultMerge = listResultMerge; decimal maxValue = listResultMerge.Max(x => x.confidence); ResultMerge FirstResultMerge = listResultMerge.First(x => x.confidence == maxValue); this.intent = FirstResultMerge.intent; this.confidence = FirstResultMerge.confidence; if (confidence > (decimal)0.50) { statut = "Success"; } }
public static IndexModel Create() { Email email = new Email(); var count = email.emailBox.GetMessageCount(); Message message = email.emailBox.GetMessage(count); string subjectEmail = message.Headers.Subject; string contentEmail = message.MessagePart.MessageParts[0].GetBodyAsText(); string sendfrom = message.Headers.To[0].Address; List <ReponseRecast> reponseRecast = new List <ConnectorOutlookRecast.ReponseRecast>(); // --------------------------TRAITEMENT RECAST // découpage en phrase pour recast string textClean = cleanText(contentEmail); string[] textSplit = splitSentence(textClean); foreach (var item in textSplit) { RecastContact bot = new RecastContact(); ReponseRecast reponse = bot.sendText(item); reponse.sentence = item; reponseRecast.Add(reponse); } List <Business.Entities> entities = new List <Business.Entities>(); List <entity> card = new List <entity>(); List <entity> location = new List <entity>(); List <entity> adresse = new List <entity>(); List <entity> contrat = new List <entity>(); List <entity> numero_de_secu = new List <entity>(); List <entity> numero_carte_adherent = new List <entity>(); foreach (var item in reponseRecast) { card = card.Concat(item.entities.card) .ToList(); location = location.Concat(item.entities.location) .ToList(); adresse = adresse.Concat(item.entities.adresse) .ToList(); contrat = contrat.Concat(item.entities.contrat) .ToList(); numero_de_secu = numero_de_secu.Concat(item.entities.numero_de_secu) .ToList(); numero_carte_adherent = numero_carte_adherent.Concat(item.entities.numero_carte_adherent) .ToList(); } var Card = new Business.Entities() { name = "Card", number = card.Count }; foreach (var item in card) { Card.rawAdd(item.raw, item.confidence); } entities.Add(Card); var Location = new Business.Entities() { name = "Location", number = location.Count }; foreach (var item in location) { Location.rawAdd(item.raw, item.confidence); } entities.Add(Location); var Adresse = new Business.Entities() { name = "adresse", number = adresse.Count }; foreach (var item in adresse) { Adresse.rawAdd(item.raw, item.confidence); } entities.Add(Adresse); var Contrat = new Business.Entities() { name = "contrat", number = contrat.Count }; foreach (var item in contrat) { Contrat.rawAdd(item.raw, item.confidence); } entities.Add(Contrat); var Numero_de_secu = new Business.Entities() { name = "numero_de_secu", number = numero_de_secu.Count }; foreach (var item in numero_de_secu) { Numero_de_secu.rawAdd(item.raw, item.confidence); } entities.Add(Numero_de_secu); var Numero_carte_adherent = new Business.Entities() { name = "numero_carte_adherent", number = numero_carte_adherent.Count }; foreach (var item in numero_carte_adherent) { Numero_carte_adherent.rawAdd(item.raw, item.confidence); } entities.Add(Numero_carte_adherent); // --------------------------TRAITEMENT WATSON //WatsonContact watson = new WatsonContact(); //ReponseWatson reponseWatsonConvers = watson.sendTexConversation(textClean); WatsonContact watttt = new WatsonContact(); ReponseWatson reponseWatsonClassifier = watttt.sendTextOrganised(textClean); // calcul Final Result result = new Result(reponseRecast, reponseWatsonClassifier); return(new IndexModel { SubjectEmail = subjectEmail, SendFrom = sendfrom, ContentEmail = contentEmail, ReponseRecast = reponseRecast, // ReponseWatson = reponseWatsonConvers, ReponseWatsonClassifier = reponseWatsonClassifier, Result = result, Entities = entities }); }