# TrainableClassifierNativeActivity Class

> `TrainableClassifierNativeActivity` is an abstract class that implements the `UiPath.DocumentProcessing.Contracts.Training.ITrainableClassifierActivity` interface and the `System.Activities.NativeActivity` abstract class.

`TrainableClassifierNativeActivity` is an abstract class that implements the `UiPath.DocumentProcessing.Contracts.Training.ITrainableClassifierActivity` interface and the `System.Activities.NativeActivity` abstract class.

## Definition

* Namespace: `UiPath.DocumentProcessing.Contracts.Training`
* Assembly: `UiPath.DocumentProcessing.Contracts`

## Description

Abstract class that implements the `UiPath.DocumentProcessing.Contracts.Training.ITrainableClassifierActivity` interface and the `System.Activities.NativeActivity` abstract class.

This class should be implemented in order to construct a `NativeActivity` for classifiers training, compatible with the [Train Classifiers Scope](https://docs.uipath.com/activities/other/latest/document-understanding/train-classifiers-scope) activity and the document processing infrastructure.

All the defined InArguments are automatically populated by the **Train Classifiers Scope** activity for all child activities.

The InArguments contain the following information:

* Information about the document that was classified, specifically the original file path, the text version, and the document object model.
* Information about each field that training should be performed on, expected to be understood and processed by the training activities. These document types are set by the **Train Classifiers Scope** activity after its configuration in the Configure Training wizard of the scope activity.

:::note
This activity has no OutArguments.
:::

## Members

#### Constructors

`TrainableClassifierNativeActivity()` - The protected default constructor.

#### Methods

* `GetCapabilities()` - Gets, at design time, a list of document types the classifier is capable of classifying. This method will only be called at design time, and as such it should NOT use any InArgument(s).
* `ProvidesCapabilities()` - Returns true if the classifier is able to provide a list of capabilities.

#### Properties

* `DocumentPath` `InArgument<string>` - The file path of the document.
* `DocumentText` `InArgument<string>` - The text version of the document.
* `DocumentObjectModel` `InArgument<UiPath.DocumentProcessing.Contracts.Dom.Document>` - The document object model of the document.
* `HumanValidatedData` `InArgument<UiPath.DocumentProcessing.Contracts.Results.ExtractionResult[]>` - The extraction results for the processed document, that you want to use for training.
* `PersistenceId` `string` - The unique, opaque ID that is used by the scope activities in order to correctly track and configure the training activity.
* `PredictionId` `<string>`; - Identifies that the same document is processed in a workflow. It's composed of `DocumentId`+ `JobId`.
