コード例 #1
0
        public string GetNormValues()
        {
            List <Pullenti.Ner.ReferentToken> li = this.CreateRefenetsTokensWithRegister(null, false);

            if (li == null || (li.Count < 1))
            {
                return(null);
            }
            Pullenti.Ner.Measure.MeasureReferent mr = li[li.Count - 1].Referent as Pullenti.Ner.Measure.MeasureReferent;
            if (mr == null)
            {
                return(null);
            }
            return(mr.ToString(true, null, 0));
        }
コード例 #2
0
        public static Pullenti.Semantic.SemObject CreateNumber(Pullenti.Semantic.SemGraph gr, Pullenti.Ner.Measure.Internal.NumbersWithUnitToken num)
        {
            List <Pullenti.Ner.ReferentToken> rs = num.CreateRefenetsTokensWithRegister(null, null, false);

            if (rs == null || rs.Count == 0)
            {
                return(null);
            }
            Pullenti.Ner.Measure.MeasureReferent mr  = rs[rs.Count - 1].Referent as Pullenti.Ner.Measure.MeasureReferent;
            Pullenti.Semantic.SemObject          sem = new Pullenti.Semantic.SemObject(gr);
            gr.Objects.Add(sem);
            sem.Tokens.Add(num);
            sem.Morph.NormalFull = (sem.Morph.NormalCase = mr.ToString(true, null, 0));
            sem.Typ     = Pullenti.Semantic.SemObjectType.Noun;
            sem.Measure = mr.Kind;
            for (int i = 0; i < sem.Morph.NormalCase.Length; i++)
            {
                char ch = sem.Morph.NormalCase[i];
                if (char.IsDigit(ch) || char.IsWhiteSpace(ch) || "[].+-".IndexOf(ch) >= 0)
                {
                    continue;
                }
                sem.Quantity         = new Pullenti.Semantic.SemQuantity(sem.Morph.NormalCase.Substring(0, i).Trim(), num.BeginToken, num.EndToken);
                sem.Morph.NormalCase = sem.Morph.NormalCase.Substring(i).Trim();
                if (num.Units.Count == 1 && num.Units[0].Unit != null)
                {
                    sem.Morph.NormalFull = num.Units[0].Unit.FullnameCyr;
                    if (sem.Morph.NormalFull == "%")
                    {
                        sem.Morph.NormalFull = "процент";
                    }
                }
                break;
            }
            sem.Concept = mr;
            return(sem);
        }