private async Task <NLPAnalyseDataBlock> AnalyseForMetrics(NLPAnalyseDataBlock dataBlock) { var response = await dataBlock.AIClient.AnalyseForMetrics(dataBlock.Input); dataBlock.NLPAnalysisResponse = response; return(dataBlock); }
private async Task <NLPAnalyseDataBlock> GetContent(NLPAnalyseDataBlock dataBlock) { if (dataBlock.DoContentCheck) { var intentId = dataBlock.NLPAnalysisResponse.Intentions?[0].Id; var intentName = dataBlock.AllIntents.FirstOrDefault(i => i.Id == intentId)?.Name; var entites = dataBlock.NLPAnalysisResponse.Entities?.Select(e => e.Value).ToList(); dataBlock.ContentFromProvider = await dataBlock.ContentProvider.GetAsync(intentName, entites); } return(dataBlock); }
private NLPAnalyseDataBlock CheckResponse(NLPAnalyseDataBlock dataBlock) { var item = dataBlock.NLPAnalysisResponse; if (item == null) { _logger.LogError($"Error when analysing: \"{dataBlock.Input}\""); return(dataBlock); } return(dataBlock); }
private async Task <List <NLPAnalyseDataBlock> > GetInputList(bool isPhrase, string inputSource, IBlipAIClient client, string reportOutput, List <Intention> intentions, IContentProvider provider, bool doContentCheck) { if (isPhrase) { return(new List <NLPAnalyseDataBlock> { NLPAnalyseDataBlock.GetInstance(1, inputSource, client, reportOutput, doContentCheck, intentions, provider) }); } else { var inputListAsString = await _fileService.GetInputsToAnalyseAsync(inputSource); return(inputListAsString .Select((s, i) => NLPAnalyseDataBlock.GetInstance(i + 1, s, client, reportOutput, doContentCheck, intentions, provider)) .ToList()); } }
private async Task BuildResult(NLPAnalyseDataBlock dataBlock) { lock (_locker) { _count++; if (_count % 100 == 0) { _logger.LogDebug($"{_count}/{_total}"); } } var input = dataBlock.Input; var analysis = dataBlock.NLPAnalysisResponse; var content = dataBlock.ContentFromProvider; if (analysis == null) { return; } var resultData = new NLPAnalyseReportDataLine { Id = dataBlock.Id, Input = input, Intent = analysis.Intentions?[0].Id, Confidence = analysis.Intentions?[0].Score, Entities = analysis.Entities?.ToList().ToReportString(), }; if (content != null) { resultData.Answer = ExtractAnswer(content); } var report = new NLPAnalyseReport { ReportDataLines = new List <NLPAnalyseReportDataLine> { resultData }, FullReportFileName = dataBlock.ReportOutputFile }; await _fileService.WriteAnalyseReportAsync(report, true); _logger.LogTrace($"\"{resultData.Input}\"\t{resultData.Intent}:{resultData.Confidence:P}\t{resultData.Entities}\t{CropText(resultData.Answer, 50)}"); }