public List <ModelResult> Parse(string query, System.DateTime refTime) { // Preprocess the query query = FormatUtility.Preprocess(query); var parsedDateTimes = new List <DateTimeParseResult>(); try { var extractResults = Extractor.Extract(query, refTime); foreach (var result in extractResults) { var parseResult = Parser.Parse(result, refTime); if (parseResult.Value is List <DateTimeParseResult> ) { parsedDateTimes.AddRange((List <DateTimeParseResult>)parseResult.Value); } else { parsedDateTimes.Add(parseResult); } } } catch (Exception) { // Nothing to do. Exceptions in parse should not break users of recognizers. // No result. } return(parsedDateTimes.Select(o => GetModelResult(o)).ToList()); }
public List <ModelResult> Parse(string query, DateObject refTime) { // Preprocess the query query = FormatUtility.Preprocess(query); var parsedDateTimes = new List <DateTimeParseResult>(); try { var extractResults = Extractor.Extract(query, refTime); foreach (var result in extractResults) { var parseResults = Parser.Parse(result, refTime); if (parseResults.Value is List <DateTimeParseResult> list) { parsedDateTimes.AddRange(list); } else { parsedDateTimes.Add(parseResults); } } // Filter out ambiguous cases. Naïve approach. parsedDateTimes = Parser.FilterResults(query, parsedDateTimes); } catch (Exception) { // Nothing to do. Exceptions in parse should not break users of recognizers. // No result. } return(parsedDateTimes.Select(o => GetModelResult(o)).ToList()); }
public List <ModelResult> Parse(string query, System.DateTime refTime) { // preprocess the query query = FormatUtility.Preprocess(query); var extractResults = Extractor.Extract(query, refTime); var parseDateTimes = new List <DateTimeParseResult>(); foreach (var result in extractResults) { var parseResult = Parser.Parse(result, refTime); if (parseResult.Value is List <DateTimeParseResult> ) { parseDateTimes.AddRange((List <DateTimeParseResult>)parseResult.Value); } else { parseDateTimes.Add(parseResult); } } return(parseDateTimes.Select(o => new ModelResult { Start = o.Start.Value, End = o.Start.Value + o.Length.Value - 1, TypeName = o.Type, Resolution = o.Value as SortedDictionary <string, object>, Text = o.Text }).ToList()); }
public List <ModelResult> Parse(string query) { // preprocess the query query = FormatUtility.Preprocess(query, false); List <ModelResult> extractionResults = new List <ModelResult>(); foreach (var p in ExtractorParserDic) { var extractor = p.Key; var parser = p.Value; var extractResults = extractor.Extract(query); var parseResults = new List <ParseResult>(); foreach (var result in extractResults) { parseResults.Add(parser.Parse(result)); } var modelResults = parseResults.Select(o => new ModelResult { Start = o.Start.Value, End = o.Start.Value + o.Length.Value - 1, Resolution = (o.Value is UnitValue) ? new SortedDictionary <string, object> { { "value", ((UnitValue)o.Value).Number }, { "unit", ((UnitValue)o.Value).Unit } } : new SortedDictionary <string, object> { { "value", (string)o.Value } }, Text = o.Text, TypeName = ModelTypeName }).ToList(); foreach (var result in modelResults) { bool bAdd = true; foreach (var extractionResult in extractionResults) { if (extractionResult.Start == result.Start && extractionResult.End == result.End) { bAdd = false; } } if (bAdd) { extractionResults.Add(result); } } } return(extractionResults); }
public List <ModelResult> Parse(string query, System.DateTime refTime) { // Preprocess the query query = FormatUtility.Preprocess(query); var parsedDateTimes = new List <DateTimeParseResult>(); try { var extractResults = Extractor.Extract(query, refTime); foreach (var result in extractResults) { var parseResult = Parser.Parse(result, refTime); if (parseResult.Value is List <DateTimeParseResult> ) { parsedDateTimes.AddRange((List <DateTimeParseResult>)parseResult.Value); } else { parsedDateTimes.Add(parseResult); } } } catch (Exception) { // Nothing to do. Exceptions in parse should not break users of recognizers. // No result. } return(parsedDateTimes.Select(o => new ModelResult { Start = o.Start.Value, End = o.Start.Value + o.Length.Value - 1, TypeName = o.Type, Resolution = o.Value as SortedDictionary <string, object>, Text = o.Text, ParentText = GetParentText(o) }).ToList()); }
public List <ModelResult> Parse(string query) { // Preprocess the query query = FormatUtility.Preprocess(query, false); List <ModelResult> extractionResults = new List <ModelResult>(); try { foreach (var p in ExtractorParserDic) { var extractor = p.Key; var parser = p.Value; var extractedResults = extractor.Extract(query); var parsedResults = new List <ParseResult>(); foreach (var result in extractedResults) { var parseResult = parser.Parse(result); if (parseResult.Value is List <ParseResult> ) { parsedResults.AddRange((List <ParseResult>)parseResult.Value); } else { parsedResults.Add(parseResult); } } var modelResults = parsedResults.Select(o => new ModelResult { Start = o.Start.Value, End = o.Start.Value + o.Length.Value - 1, Resolution = (o.Value is UnitValue) ? new SortedDictionary <string, object> { { ResolutionKey.Value, ((UnitValue)o.Value).Number }, { ResolutionKey.Unit, ((UnitValue)o.Value).Unit } } : (o.Value is CurrencyUnitValue) ? new SortedDictionary <string, object> { { ResolutionKey.Value, ((CurrencyUnitValue)o.Value).Number }, { ResolutionKey.Unit, ((CurrencyUnitValue)o.Value).Unit }, { ResolutionKey.IsoCurrency, ((CurrencyUnitValue)o.Value).IsoCurrency } } : new SortedDictionary <string, object> { { ResolutionKey.Value, (string)o.Value } }, Text = o.Text, TypeName = ModelTypeName }).ToList(); foreach (var result in modelResults) { bool bAdd = true; foreach (var extractionResult in extractionResults) { if (extractionResult.Start == result.Start && extractionResult.End == result.End) { bAdd = false; } } if (bAdd) { extractionResults.Add(result); } } } } catch (Exception) { // Nothing to do. Exceptions in parse should not break users of recognizers. // No result. } return(extractionResults); }