Exemplo n.º 1
0
        internal override IEnumerable <string> GenerateFeatures(BeamNode node)
        {
            var targetActivationEvent = BeamGenerator.GetInstanceActivationRequest(PropertySet.Subject, node);
            var sourceActivationEvent = BeamGenerator.GetInstanceActivationRequest(PropertySet.Value, node);

            if (targetActivationEvent == null || sourceActivationEvent == null)
            {
                yield break;
            }

            var ngramLimitCount = 2;
            var targetSufixes   = new InputPhraseEvent[0];//BeamGenerator.GetSufixPhrases(targetActivationEvent.ActivationPhrase, ngramLimitCount, node);
            var targetPrefixes  = BeamGenerator.GetPrefixPhrases(targetActivationEvent.ActivationPhrases.FirstOrDefault(), ngramLimitCount, node);
            var featureId       = "* --" + PropertySet.Property.Name + "--> $1";
            var targetId        = "$1";

            for (var i = 0; i < ngramLimitCount; ++i)
            {
                if (targetSufixes.Length > i)
                {
                    yield return(targetId + " " + ngramFeature(targetSufixes, i) + " | " + featureId);
                }

                if (targetPrefixes.Length > i)
                {
                    yield return(ngramFeature(targetPrefixes, i) + " " + targetId + " | " + featureId);
                }
            }
        }