コード例 #1
0
        /// <summary>
        /// Extracts data from a transcription.
        /// </summary>
        /// <param name="transcript">The transcript to extract data from.</param>
        /// <param name="log">Trace logging instance.</param>
        /// <returns>A Task returning the data extracted from the transcription.</returns>
        public Task <TranscriptionData> ExtractAsync(string transcript, ILogger log)
        {
            return(Task.Run(() =>
            {
                TranscriptionData data = new TranscriptionData();

                data.Transcription = transcript;
                data.Dates = ExtractDateTimes(transcript, log);
                data.Location = ExtractLocation(transcript, log);
                data.Person = ExtractPerson(transcript, log);

                return data;
            }));
        }
コード例 #2
0
        /// <summary>
        /// Extracts data from a transcription.
        /// </summary>
        /// <param name="transcript">The transcript to extract data from.</param>
        /// <param name="log">Trace logging instance.</param>
        /// <returns>A Task returning the data extracted from the transcription.</returns>
        public async Task<TranscriptionData> ExtractAsync(string transcript, ILogger log)
        {
            try
            {
                Uri requestUri = new Uri($"{_config.NlpEndpoint}&subscription-key={_config.NlpSubscriptionKey.Value}");

                byte[] buffer = Encoding.UTF8.GetBytes($"\"{transcript}\"");
                ByteArrayContent content = new ByteArrayContent(buffer);

                content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                HttpResponseMessage response = await _httpClient.PostAsync(requestUri.AbsoluteUri, content, log);

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    // TODO: Throw a better exception
                    throw new Exception("Request failed!");
                }

                string responseContent = await response.Content.ReadAsStringAsync();
                LuisResponse luisResponse = JsonConvert.DeserializeObject<LuisResponse>(responseContent);

                TranscriptionData data = new TranscriptionData();

                data.EvaluatedTranscription = transcript;

                if (luisResponse.TopScoringIntent != null)
                {
                    data.Intent = luisResponse.TopScoringIntent.Intent;
                    data.IntentConfidence = luisResponse.TopScoringIntent.Score;
                }

                data.Dates = ExtractDateTimes(luisResponse, log);
                data.Location = ExtractLocation(luisResponse, log);
                data.Person = ExtractPerson(luisResponse, log);
                data.AdditionalData = EnumerateAdditionalEntities(luisResponse, log);

                return data;
            }
            catch (HttpRequestException ex)
            {
                throw new DataExtractorException("Exception encountered extracting data! See inner exception for details.", ex);
            }
        }