/// <summary> /// Classifies a file. /// </summary> /// <param name="file">The file to be classified.</param> /// <param name="parameters">File classification parameters.</param> /// <returns>Результат классификации файла.</returns> public ClassificationResult ClassifyFile(FileContainer file, ClassificationParameters parameters) { if (file == null) throw new ArgumentNullException("file"); if (parameters == null) throw new ArgumentNullException("parameters"); ComprenoTaskSettings settings = convertToTaskSettings(parameters); byte[] content = _tasksApi.RunTaskAndWaitResult(file, settings); return _resultParser.Parse(content, parameters.CategoriesFilter); }
/// <summary> /// Classifies a byte array instance. /// </summary> /// <param name="api">An object that implements <see cref="IClassifierApiProvider"/>.</param> /// <param name="content">The byte array instance to be classified.</param> /// <param name="extension">Extension.</param> /// <param name="parameters">Byte array classification parameters.</param> /// <returns>Результат классификации a byte array instance.</returns> public static ClassificationResult ClassifyByteArray(this IClassifierApiProvider api, byte[] content, string extension, ClassificationParameters parameters) { if (api == null) throw new ArgumentNullException("api"); FileContainer container = new FileContainer { Content = content, Extension = extension }; return api.ClassifyFile(container, parameters); }
/// <summary> /// Classifies files. /// </summary> /// <param name="files">The collection of files to be classified.</param> /// <param name="parameters">File classification parameters.</param> /// <returns>The results of an classification performed on files.</returns> public IEnumerable<ClassifiedFile> ClassifyFiles(IEnumerable<string> files, ClassificationParameters parameters) { if (files == null) throw new ArgumentNullException("files"); IEnumerable<BatchFileContainer> batch = files.Select(f => new BatchFileContainer(f)); return ClassifyFiles(batch, parameters); }
/// <summary> /// Classifies a file. /// </summary> /// <param name="file">The file to be classified.</param> /// <param name="parameters">File classification parameters.</param> /// <returns>Результат классификации файла.</returns> public ClassificationResult ClassifyFile(string file, ClassificationParameters parameters) { return ClassifyFile(new FileContainer(file), parameters); }
/// <summary> /// Performs files classification. /// </summary> /// <param name="files">The collection of files to be classified.</param> /// <param name="parameters">File classification parameters.</param> /// <param name="progressChangedHandler">A handler for changes in the progress of files processing operation.</param> /// <returns>The results of an classification performed on files.</returns> private IEnumerable<ClassifiedFile> classifyFiles(IEnumerable<BatchFileContainer> files, ClassificationParameters parameters, Action<int> progressChangedHandler) { if (!files.Any()) return Enumerable.Empty<ClassifiedFile>(); // Получаем настройки для задания. ComprenoTaskSettings settings = convertToTaskSettings(parameters); // Создаем пакет из файлов на классификацию. IComprenoTasksBatch tasksBatch = _tasksApi.CreateTasksBatch(files, settings); // Устанавливаем обработчик прогресса классификации, если передан. if (progressChangedHandler != null) tasksBatch.WithProgressChangedHandler(progressChangedHandler); // Запускаем пакет на выполнение и возвращаем результаты. return tasksBatch.RunAndWaitResults() .Select(r => convertToClassifiedFile(r, parameters.CategoriesFilter)) .ToList(); }
/// <summary> /// Converts the document classification parameters into task settings. /// </summary> /// <param name="parameters">Document classification parameters.</param> /// <returns>Task settings for the ABBYY Compreno REST API.</returns> private static ComprenoTaskSettings convertToTaskSettings(ClassificationParameters parameters) { return new ComprenoTaskSettings { SourceLanguage = parameters.SourceLanguage == null ? null : parameters.SourceLanguage.Name, ProcessingParameters = new ProcessingParameters { HtmlParsingMode = parameters.RemoveHtmlTags ? HtmlPlainTextMode.Html : HtmlPlainTextMode.None }, Operations = new OperationsSettings { Classification = new ClassificationOperation { CategoriesConfidenceLevel = convertToConfidenceLevel(parameters.CategoriesFilter), MultipleModelNames = parameters.Models, ReturnFeatures = parameters.ReturnFeatures } } }; }
/// <summary> /// Classifies files in the folder and subfolders. /// </summary> /// <param name="folder">The folder to be classified.</param> /// <param name="parameters">File classification parameters.</param> /// <param name="progressChangedHandler">A handler for changes in the progress of a folder processing operation.</param> /// <returns>The results of an classification performed on files.</returns> public IEnumerable<ClassifiedFile> ClassifyFolder(string folder, ClassificationParameters parameters, Action<int> progressChangedHandler) { return ClassifyFiles(Directory.GetFiles(folder, "*", SearchOption.AllDirectories), parameters, progressChangedHandler); }
/// <summary> /// Classifies files in the folder and subfolders. /// </summary> /// <param name="folder">The folder to be classified.</param> /// <param name="parameters">File classification parameters.</param> /// <returns>The results of an classification performed on files.</returns> public IEnumerable<ClassifiedFile> ClassifyFolder(string folder, ClassificationParameters parameters) { return ClassifyFiles(Directory.GetFiles(folder, "*", SearchOption.AllDirectories), parameters); }
/// <summary> /// Classifies files. /// </summary> /// <param name="files">The collection of files to be classified.</param> /// <param name="parameters">File classification parameters.</param> /// <param name="progressChangedHandler">A handler for changes in the progress of files processing operation.</param> /// <returns>The results of an classification performed on files.</returns> public IEnumerable<ClassifiedFile> ClassifyFiles(IEnumerable<BatchFileContainer> files, ClassificationParameters parameters, Action<int> progressChangedHandler) { if (files == null) throw new ArgumentNullException("files"); if (parameters == null) throw new ArgumentNullException("parameters"); if (progressChangedHandler == null) throw new ArgumentNullException("progressChangedHandler"); return classifyFiles(files, parameters, progressChangedHandler); }
/// <summary> /// Classifies files. /// </summary> /// <param name="files">The collection of files to be classified.</param> /// <param name="parameters">File classification parameters.</param> /// <returns>The results of an classification performed on files.</returns> public IEnumerable<ClassifiedFile> ClassifyFiles(IEnumerable<BatchFileContainer> files, ClassificationParameters parameters) { if (files == null) throw new ArgumentNullException("files"); if (parameters == null) throw new ArgumentNullException("parameters"); return classifyFiles(files, parameters, null); }
/// <summary> /// Classifies a UTF-8 string instance. /// </summary> /// <param name="api">An object that implements <see cref="IClassifierApiProvider"/>.</param> /// <param name="content">The string instance to be classified.</param> /// <param name="extension">Extension.</param> /// <param name="parameters">String classification parameters.</param> /// <returns>Результат классификации a string instance.</returns> public static ClassificationResult ClassifyString(this IClassifierApiProvider api, string content, string extension, ClassificationParameters parameters) { if (api == null) throw new ArgumentNullException("api"); FileContainer container = new FileContainer { Content = Encoding.UTF8.GetBytes(content), Extension = extension }; return api.ClassifyFile(container, parameters); }