Exemple #1
0
        protected WordPairAlignerSettings LoadSettings(Segmenter segmenter, FeatureSystem featSys, XElement elem)
        {
            var settings = new WordPairAlignerSettings();
            var modeStr  = (string)elem.Element(ConfigManager.Cog + "Mode");

            if (modeStr != null)
            {
                switch (modeStr)
                {
                case "local":
                    settings.Mode = AlignmentMode.Local;
                    break;

                case "global":
                    settings.Mode = AlignmentMode.Global;
                    break;

                case "semi-global":
                    settings.Mode = AlignmentMode.SemiGlobal;
                    break;

                case "half-local":
                    settings.Mode = AlignmentMode.HalfLocal;
                    break;
                }
            }
            settings.ExpansionCompressionEnabled = (bool?)elem.Element(ConfigManager.Cog + "ExpansionCompressionEnabled") ?? false;
            XElement soundClassesElem = elem.Element(ConfigManager.Cog + "ContextualSoundClasses");

            if (soundClassesElem != null && soundClassesElem.HasElements)
            {
                settings.ContextualSoundClasses = ConfigManager.LoadSoundClasses(segmenter, featSys, soundClassesElem);
            }
            return(settings);
        }
Exemple #2
0
        protected void SaveSettings(WordPairAlignerSettings settings, XElement elem)
        {
            string modeStr = null;

            switch (settings.Mode)
            {
            case AlignmentMode.Local:
                modeStr = "local";
                break;

            case AlignmentMode.Global:
                modeStr = "global";
                break;

            case AlignmentMode.SemiGlobal:
                modeStr = "semi-global";
                break;

            case AlignmentMode.HalfLocal:
                modeStr = "half-local";
                break;
            }
            elem.Add(new XElement(ConfigManager.Cog + "Mode", modeStr));
            elem.Add(new XElement(ConfigManager.Cog + "ExpansionCompressionEnabled", settings.ExpansionCompressionEnabled));
            if (settings.ContextualSoundClasses.Any())
            {
                elem.Add(new XElement(ConfigManager.Cog + "ContextualSoundClasses", ConfigManager.SaveSoundClasses(settings.ContextualSoundClasses)));
            }
        }
Exemple #3
0
        public override IWordAligner Load(SpanFactory <ShapeNode> spanFactory, SegmentPool segmentPool, CogProject project, XElement elem)
        {
            WordPairAlignerSettings settings = LoadSettings(project.Segmenter, project.FeatureSystem, elem);
            XElement relevantFeaturesElem    = elem.Element(ConfigManager.Cog + "RelevantFeatures");

            Debug.Assert(relevantFeaturesElem != null);

            var relevantVowelFeatures = new List <SymbolicFeature>();
            var relevantConsFeatures  = new List <SymbolicFeature>();
            var featureWeights        = new Dictionary <SymbolicFeature, int>();
            var valueMetrics          = new Dictionary <FeatureSymbol, int>();

            foreach (XElement featureElem in relevantFeaturesElem.Elements(ConfigManager.Cog + "RelevantFeature"))
            {
                var feature = project.FeatureSystem.GetFeature <SymbolicFeature>((string)featureElem.Attribute("ref"));
                if ((bool?)featureElem.Attribute("vowel") ?? false)
                {
                    relevantVowelFeatures.Add(feature);
                }
                if ((bool?)featureElem.Attribute("consonant") ?? false)
                {
                    relevantConsFeatures.Add(feature);
                }
                featureWeights[feature] = (int)featureElem.Attribute("weight");
                foreach (XElement valueElem in featureElem.Elements(ConfigManager.Cog + "RelevantValue"))
                {
                    FeatureSymbol symbol = feature.PossibleSymbols[(string)valueElem.Attribute("ref")];
                    valueMetrics[symbol] = (int)valueElem.Attribute("metric");
                }
            }

            return(new Aline(segmentPool, relevantVowelFeatures, relevantConsFeatures, featureWeights, valueMetrics, settings));
        }