public TextResult Execute(TextInput input, IJapaniseTextClassifierExecuteConfig config) { var result = new TextResult() { Config = config, Input = input, }; result.NormalizedText = GetNormalizer(config.NormalizerName).Normalize(input.RawText); result.TranslatedText = GetTransrator(config.TranslatorName).Translate(result.NormalizedText); result.Categories = GetClassifier(config.ClassifierName).Classify(result.TranslatedText); // XXX はじめから全般に非同期で書けばよかった // XXX レートリミット対応は各実装で閉じさせる&非同期メソッドにしたいね Task.Delay(TimeSpan.FromSeconds(1)).Wait(); return(result); }
public IEnumerable <TextResult> ExecuteBulk(IEnumerable <TextInput> inputs, IJapaniseTextClassifierExecuteConfig config) { return(inputs.Select(x => { // try { return Execute(x, config); } catch (Exception ex) { // 死ぬときは独りさ _logger.LogError(ex, $"Ecexute fail. Input = {JsonConvert.SerializeObject(x)}"); return new TextResult() { Config = config, Input = x, Categories = new Category[] { }, HasError = true, }; } })); }