/// <summary>
        /// Prepares everything for operation
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="_notes">The notes.</param>
        /// <param name="logger">The logger.</param>
        public void DeploySettings(CorpusPlaneMethodSettings corpusSettings, FeatureVectorConstructorSettings __constructorSettings, ToolkitExperimentNotes _notes, ILogBuilder logger)
        {
            DeploySettingsBase(_notes);

            stemmer   = TypeProviders.stemmerTypes.GetInstance(corpusSettings.stemmer);
            tokenizer = TypeProviders.tokenizerTypes.GetInstance(corpusSettings.tokenizer);
            if (!corpusSettings.transliterationRuleSetId.isNullOrEmpty())
            {
                transliteration = Transliteration.ruleSet.transliteration.GetTransliterationPairSet(corpusSettings.transliterationRuleSetId);
            }

            filter = corpusSettings.filter.CloneViaXML(logger);
            filter.Deploy(logger);
            filter.Describe(logger);

            blender = corpusSettings.blender.CloneViaXML(logger);
            blender.Describe(logger);

            weightModel = corpusSettings.WeightModel.CloneViaXML(logger);
            weightModel.Deploy(logger);
            weightModel.Describe(logger);

            if (__constructorSettings != null)
            {
                constructorSettings = __constructorSettings.CloneViaXML(logger);
            }

            //   Describe(_notes);

            CloseDeploySettingsBase();
        }
        /// <summary>
        /// Deploysterm based dimensions
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="selectedFeatures">The selected features.</param>
        public void Deploy(FeatureVectorConstructorSettings settings, List <String> selectedTokens)
        {
            foreach (dimensionSpecification ld in settings.featureDimensions)
            {
                foreach (var entry in selectedTokens)
                {
                    FeatureSpaceDimensionTerm dimensionTerm = new FeatureSpaceDimensionTerm(entry);


                    dimensionFunctionSet.Add(dimensionTerm);
                }
            }
        }
        /// <summary>
        /// Deploys the specified settings.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="vectorSpace">The vector space.</param>
        public void Deploy(FeatureVectorConstructorSettings settings, VectorSpace vectorSpace)
        {
            // dimensionFunctionSet = new List<FeatureSpaceDimensionBase>();

            // creates instances of dimension value providers - for each label in the vector space
            foreach (dimensionSpecification ld in settings.labelDimensions)
            {
                foreach (VectorLabel label in vectorSpace.labels)
                {
                    FeatureSpaceDimensionSimilarity dimensionInstance = new FeatureSpaceDimensionSimilarity();
                    IVectorSimilarityFunction       functionInstance  = (IVectorSimilarityFunction)TypeProviders.similarityFunctions.GetInstance(ld.functionName);

                    IVector classVector = vectorSpace.labels.First(x => x.name == label.name);
                    dimensionInstance.similarityFunction = functionInstance;
                    dimensionInstance.classVector        = classVector;

                    dimensionFunctionSet.Add(dimensionInstance);
                }
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="OperationCorpusEngine"/> class.
 /// </summary>
 /// <param name="settings">The settings.</param>
 /// <param name="_notes">The notes.</param>
 /// <param name="logger">The logger.</param>
 public OperationCorpusEngine(CorpusPlaneMethodSettings corpusSettings, FeatureVectorConstructorSettings __constructorSettings, ToolkitExperimentNotes _notes, ILogBuilder logger)
 {
     DeploySettings(corpusSettings, __constructorSettings, _notes, logger);
 }