Beispiel #1
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
 /// <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);
 }
Beispiel #5
0
        /// <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();
        }
Beispiel #6
0
 /// <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
             }
         }
     };
 }
Beispiel #7
0
 /// <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);
 }
Beispiel #8
0
 /// <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);
 }
Beispiel #9
0
        /// <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);
        }
Beispiel #10
0
        /// <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);
        }