Beispiel #1
0
        public TwisterAlgorithm(
            Subset subset,
            bool chunkPositivePMI       = true,
            bool chunkAveragePMI        = true,
            int compressTagOccurence    = 0,
            int compressCorpusOccurence = 0,
            LogicalOperatorEnum op      = LogicalOperatorEnum.AND,
            bool useRxy = true
            ) : base(subset)
        {
            _chunkPositivePMI = chunkPositivePMI;
            _chunkAveragePMI  = chunkAveragePMI;
            if (compressCorpusOccurence > 0 && compressTagOccurence > 0)
            {
                // tOcc <= _compressTagOccurence
                // cOcc <= _compressCorpusOccurence
                var tPe = Expression.Parameter(typeof(int));
                var cPe = Expression.Parameter(typeof(int));

                var tConst = Expression.Constant(compressTagOccurence);
                var cConst = Expression.Constant(compressCorpusOccurence);

                var left  = Expression.LessThanOrEqual(tPe, tConst);
                var right = Expression.LessThanOrEqual(cPe, cConst);

                var exp = (op == LogicalOperatorEnum.AND) ? Expression.And(left, right) : Expression.Or(left, right);

                Expression <Func <int, int, bool> > le = Expression.Lambda <Func <int, int, bool> >(exp, tPe, cPe);
                _compiledExpression = le.Compile();
            }
        }
Beispiel #2
0
        private string GetExpressionStr(LogicalOperatorEnum logicalOperatorEnum)
        {
            string lStr = string.Format("{0}");

            switch (logicalOperatorEnum)
            {
            case LogicalOperatorEnum.Default:
                break;

            case LogicalOperatorEnum.And:
                lStr = string.Format("<ogc:And>{0}</ogc:And>");
                break;

            case LogicalOperatorEnum.Or:
                lStr = string.Format("<ogc:Or>{0}</ogc:Or>");
                break;

            case LogicalOperatorEnum.Not:
                lStr = string.Format("<ogc:Not>{0}</ogc:Not>");
                break;

            default: break;
            }
            return(lStr);
        }