Beispiel #1
0
        public override IWordAligner Load(SpanFactory<ShapeNode> spanFactory, SegmentPool segmentPool, CogProject project, XElement elem)
        {
            var settings = new SCAAlignSettings();
            LoadSettings(project.Segmenter, project.FeatureSystem, elem, settings);
            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 SCAAlign(segmentPool, relevantVowelFeatures, relevantConsFeatures, featureWeights, valueMetrics, settings);
        }
Beispiel #2
0
        public SCAAlign(SegmentPool segmentPool, IEnumerable<SymbolicFeature> relevantVowelFeatures, IEnumerable<SymbolicFeature> relevantConsFeatures,
			IDictionary<SymbolicFeature, int> featureWeights, IDictionary<FeatureSymbol, int> valueMetrics, SCAAlignSettings settings)
            : base(settings)
        {
            _settings = settings;
            _scorer = new SCAAlignScorer(segmentPool, relevantVowelFeatures, relevantConsFeatures, featureWeights, valueMetrics,
                settings.ContextualSoundClasses);
        }