Exemple #1
0
        private string AnalysisResponseToString(ReportDataLine reportDataLine, bool writeRawContent)
        {
            var intention  = reportDataLine.Intent;
            var entities   = reportDataLine.Entities;
            var rawContent = writeRawContent ? reportDataLine.AnalysisResponse.Intentions.ToJson() : string.Empty;

            return($"{reportDataLine.Id}\t{reportDataLine.Input.Input}\t{intention}\t{reportDataLine.Confidence:N2}\t{entities}\t\"{reportDataLine.Answer}\"\t{rawContent}");
        }
        private async Task BuildResult(DataBlock dataBlock)
        {
            lock (_locker)
            {
                _count++;
                if (_count % 100 == 0)
                {
                    _logger.LogDebug($"{_count}/{_total}");
                }
            }

            try
            {
                var input    = dataBlock.Input;
                var analysis = dataBlock.NLPAnalysisResponse;
                var content  = dataBlock.ContentFromProvider;

                if (analysis == null)
                {
                    return;
                }

                var resultData = new ReportDataLine
                {
                    Id               = dataBlock.Id,
                    Input            = input,
                    Intent           = analysis.Intentions?[0].Id,
                    Confidence       = analysis.Intentions?[0].Score,
                    Entities         = analysis.Entities?.ToList().ToReportString(),
                    AnalysisResponse = dataBlock.NLPAnalysisResponse
                };

                if (content != null)
                {
                    resultData.Answer = ExtractAnswer(content);
                }

                var report = new Report
                {
                    ReportDataLines = new List <ReportDataLine> {
                        resultData
                    },
                    FullReportFileName = dataBlock.ReportOutputFile,
                    WriteRawContent    = dataBlock.ShouldWriteRawContent
                };

                await _fileService.WriteAnalyseReportAsync(report, true);

                _logger.LogTrace($"\"{resultData.Input}\"\t{resultData.Intent}:{resultData.Confidence:P}\t{resultData.Entities}\t{CropText(resultData.Answer, 50)}");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Unexpected error BuildResult for {dataBlock}");
                throw ex;
            }
        }