Exemple #1
0
        private async Task <NLPAnalyseDataBlock> AnalyseForMetrics(NLPAnalyseDataBlock dataBlock)
        {
            var response = await dataBlock.AIClient.AnalyseForMetrics(dataBlock.Input);

            dataBlock.NLPAnalysisResponse = response;
            return(dataBlock);
        }
Exemple #2
0
 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);
 }
Exemple #3
0
        private NLPAnalyseDataBlock CheckResponse(NLPAnalyseDataBlock dataBlock)
        {
            var item = dataBlock.NLPAnalysisResponse;

            if (item == null)
            {
                _logger.LogError($"Error when analysing: \"{dataBlock.Input}\"");
                return(dataBlock);
            }
            return(dataBlock);
        }
Exemple #4
0
        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());
            }
        }
Exemple #5
0
        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)}");
        }