Пример #1
0
 public static void Initialize()
 {
     m_Onto = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin t;
     t = new Pullenti.Ner.Core.Termin("НО")
     {
         Tag = DelimType.But
     };
     t.AddVariant("А", false);
     t.AddVariant("ОДНАКО", false);
     t.AddVariant("ХОТЯ", false);
     m_Onto.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЕСЛИ")
     {
         Tag = DelimType.If
     };
     t.AddVariant("В СЛУЧАЕ ЕСЛИ", false);
     m_Onto.Add(t);
     t = new Pullenti.Ner.Core.Termin("КОГДА")
     {
         Tag = DelimType.If, Tag2 = m_Onto
     };
     m_Onto.Add(t);
     t = new Pullenti.Ner.Core.Termin("ТО")
     {
         Tag = DelimType.Then
     };
     t.AddVariant("ТОГДА", false);
     m_Onto.Add(t);
     t = new Pullenti.Ner.Core.Termin("ИНАЧЕ")
     {
         Tag = DelimType.Else
     };
     t.AddVariant("В ПРОТИВНОМ СЛУЧАЕ", false);
     m_Onto.Add(t);
     t = new Pullenti.Ner.Core.Termin("ТАК КАК")
     {
         Tag = DelimType.Because
     };
     t.AddVariant("ПОТОМУ ЧТО", false);
     t.AddVariant("ПО ПРИЧИНЕ ТОГО ЧТО", false);
     t.AddVariant("ИЗ ЗА ТОГО ЧТО", false);
     t.AddVariant("ИЗЗА ТОГО ЧТО", false);
     t.AddVariant("ИЗ-ЗА ТОГО ЧТО", false);
     t.AddVariant("ТО ЕСТЬ", false);
     m_Onto.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЧТОБЫ")
     {
         Tag = DelimType.For
     };
     t.AddVariant("ДЛЯ ТОГО ЧТОБЫ", false);
     m_Onto.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЧТО")
     {
         Tag = DelimType.What
     };
     m_Onto.Add(t);
 }
Пример #2
0
 public static void Initialize()
 {
     if (m_Ontology != null)
     {
         return;
     }
     Pullenti.Ner.Bank.Internal.MetaBank.Initialize();
     m_Ontology = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin t = new Pullenti.Ner.Core.Termin("БАНКОВСКИЕ РЕКВИЗИТЫ", null, true);
     t.AddVariant("ПЛАТЕЖНЫЕ РЕКВИЗИТЫ", false);
     t.AddVariant("РЕКВИЗИТЫ", false);
     m_Ontology.Add(t);
     Pullenti.Ner.ProcessorService.RegisterAnalyzer(new BankAnalyzer());
 }
Пример #3
0
        public override Pullenti.Ner.Core.IntOntologyItem CreateOntologyItem()
        {
            Pullenti.Ner.Core.IntOntologyItem oi = new Pullenti.Ner.Core.IntOntologyItem(this);
            string tit = this._findShortestKingTitul(false);

            foreach (Pullenti.Ner.Slot a in Slots)
            {
                if (a.TypeName == ATTR_IDENTITY)
                {
                    oi.Termins.Add(new Pullenti.Ner.Core.Termin(a.Value.ToString())
                    {
                        IgnoreTermsOrder = true
                    });
                }
                else if (a.TypeName == ATTR_LASTNAME)
                {
                    Pullenti.Ner.Core.Termin t = new Pullenti.Ner.Core.Termin(a.Value.ToString());
                    if (t.Terms.Count > 20)
                    {
                    }
                    if (IsMale)
                    {
                        t.Gender = Pullenti.Morph.MorphGender.Masculine;
                    }
                    else if (IsFemale)
                    {
                        t.Gender = Pullenti.Morph.MorphGender.Feminie;
                    }
                    oi.Termins.Add(t);
                }
                else if (a.TypeName == ATTR_FIRSTNAME && tit != null)
                {
                    Pullenti.Ner.Core.Termin t = new Pullenti.Ner.Core.Termin(string.Format("{0} {1}", tit, a.Value.ToString()));
                    if (IsMale)
                    {
                        t.Gender = Pullenti.Morph.MorphGender.Masculine;
                    }
                    else if (IsFemale)
                    {
                        t.Gender = Pullenti.Morph.MorphGender.Feminie;
                    }
                    oi.Termins.Add(t);
                }
            }
            return(oi);
        }
Пример #4
0
        public override Pullenti.Ner.Core.IntOntologyItem CreateOntologyItem()
        {
            bool isCity = IsCity;

            Pullenti.Ner.Core.IntOntologyItem oi = new Pullenti.Ner.Core.IntOntologyItem(this);
            foreach (Pullenti.Ner.Slot a in Slots)
            {
                if (a.TypeName == ATTR_NAME)
                {
                    string s = a.Value.ToString();
                    Pullenti.Ner.Core.Termin t = new Pullenti.Ner.Core.Termin();
                    t.InitByNormalText(s, null);
                    if (isCity)
                    {
                        t.AddStdAbridges();
                    }
                    oi.Termins.Add(t);
                }
            }
            return(oi);
        }
Пример #5
0
        public static void Initialize()
        {
            if (m_Ontology != null)
            {
                return;
            }
            m_Ontology = new Pullenti.Ner.Core.TerminCollection();
            Pullenti.Ner.Core.Termin        t;
            Pullenti.Ner.Core.Termin        tt;
            List <Pullenti.Ner.Core.Termin> li;

            t = new Pullenti.Ner.Core.Termin("ПИСТОЛЕТ")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("РЕВОЛЬВЕР")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ВИНТОВКА")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("РУЖЬЕ")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("АВТОМАТ")
            {
                Tag = Typs.Noun, Tag2 = 1
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("КАРАБИН")
            {
                Tag = Typs.Noun, Tag2 = 1
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ПИСТОЛЕТ-ПУЛЕМЕТ")
            {
                CanonicText = "ПИСТОЛЕТ-ПУЛЕМЕТ", Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ПУЛЕМЕТ")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ГРАНАТОМЕТ")
            {
                Tag = Typs.Noun
            };
            t.AddVariant("СТРЕЛКОВО ГРАНАТОМЕТНЫЙ КОМПЛЕКС", false);
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ОГНЕМЕТ")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("МИНОМЕТ")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ПЕРЕНОСНОЙ ЗЕНИТНО РАКЕТНЫЙ КОМПЛЕКС")
            {
                Acronym = "ПЗРК", Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ПРОТИВОТАНКОВЫЙ РАКЕТНЫЙ КОМПЛЕКС")
            {
                Acronym = "ПТРК", Tag = Typs.Noun
            };
            t.AddVariant("ПЕРЕНОСНОЙ ПРОТИВОТАНКОВЫЙ РАКЕТНЫЙ КОМПЛЕКС", false);
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("АВИАЦИОННАЯ ПУШКА")
            {
                Tag = Typs.Noun
            };
            t.AddVariant("АВИАПУШКА", false);
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("НАРУЧНИКИ")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("БРОНЕЖИЛЕТ")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ГРАНАТА")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ЛИМОНКА")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("НОЖ")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ВЗРЫВАТЕЛЬ")
            {
                Tag = Typs.Noun
            };
            m_Ontology.Add(t);
            foreach (string s in new string[] { "МАКАРОВ", "КАЛАШНИКОВ", "СИМОНОВ", "СТЕЧКИН", "ШМАЙСЕР", "МОСИН", "СЛОСТИН", "НАГАН", "МАКСИМ", "ДРАГУНОВ", "СЕРДЮКОВ", "ЯРЫГИН", "НИКОНОВ", "МАУЗЕР", "БРАУНИНГ", "КОЛЬТ", "ВИНЧЕСТЕР" })
            {
                m_Ontology.Add(new Pullenti.Ner.Core.Termin(s)
                {
                    Tag = Typs.Brand
                });
            }
            foreach (string s in new string[] { "УЗИ" })
            {
                m_Ontology.Add(new Pullenti.Ner.Core.Termin(s)
                {
                    Tag = Typs.Name
                });
            }
            t = new Pullenti.Ner.Core.Termin("ТУЛЬСКИЙ ТОКАРЕВА")
            {
                CanonicText = "ТТ", Acronym = "ТТ", Tag = Typs.Model
            };
            li = new List <Pullenti.Ner.Core.Termin>();
            li.Add(new Pullenti.Ner.Core.Termin("ПИСТОЛЕТ")
            {
                Tag = Typs.Noun
            });
            li.Add(new Pullenti.Ner.Core.Termin("ТОКАРЕВ")
            {
                Tag = Typs.Brand
            });
            t.Tag2 = li;
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ПИСТОЛЕТ МАКАРОВА")
            {
                CanonicText = "ПМ", Acronym = "ПМ", Tag = Typs.Model
            };
            li = new List <Pullenti.Ner.Core.Termin>();
            li.Add(new Pullenti.Ner.Core.Termin("ПИСТОЛЕТ")
            {
                Tag = Typs.Noun
            });
            li.Add(new Pullenti.Ner.Core.Termin("МАКАРОВ")
            {
                Tag = Typs.Brand
            });
            t.Tag2 = li;
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("ПИСТОЛЕТ МАКАРОВА МОДЕРНИЗИРОВАННЫЙ")
            {
                CanonicText = "ПММ", Acronym = "ПММ", Tag = Typs.Model
            };
            li = new List <Pullenti.Ner.Core.Termin>();
            li.Add((tt = new Pullenti.Ner.Core.Termin("ПИСТОЛЕТ")
            {
                Tag = Typs.Noun
            }));
            tt.AddVariant("МОДЕРНИЗИРОВАННЫЙ ПИСТОЛЕТ", false);
            li.Add(new Pullenti.Ner.Core.Termin("МАКАРОВ")
            {
                Tag = Typs.Brand
            });
            t.Tag2 = li;
            m_Ontology.Add(t);
            t = new Pullenti.Ner.Core.Termin("АВТОМАТ КАЛАШНИКОВА")
            {
                CanonicText = "АК", Acronym = "АК", Tag = Typs.Model
            };
            li = new List <Pullenti.Ner.Core.Termin>();
            li.Add(new Pullenti.Ner.Core.Termin("АВТОМАТ")
            {
                Tag = Typs.Noun
            });
            li.Add(new Pullenti.Ner.Core.Termin("КАЛАШНИКОВ")
            {
                Tag = Typs.Brand
            });
            t.Tag2 = li;
            m_Ontology.Add(t);
        }
Пример #6
0
 public static void Initialize()
 {
     if (m_Ontology != null)
     {
         return;
     }
     m_Ontology = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin t;
     t = new Pullenti.Ner.Core.Termin("ПАСПОРТ")
     {
         Tag = Typs.Keyword
     };
     t.AddVariant("ПАССПОРТ", false);
     t.AddVariant("ПАСПОРТНЫЕ ДАННЫЕ", false);
     t.AddVariant("ВНУТРЕННИЙ ПАСПОРТ", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЗАГРАНИЧНЫЙ ПАСПОРТ")
     {
         Tag = Typs.Keyword
     };
     t.AddVariant("ЗАГРАНПАСПОРТ", false);
     t.AddAbridge("ЗАГРАН. ПАСПОРТ");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("УДОСТОВЕРЕНИЕ ЛИЧНОСТИ")
     {
         Tag = Typs.Keyword
     };
     t.AddVariant("УДОСТОВЕРЕНИЕ ЛИЧНОСТИ ОФИЦЕРА", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("СВИДЕТЕЛЬСТВО О ГОСУДАРСТВЕННОЙ РЕГИСТРАЦИИ ФИЗИЧЕСКОГО ЛИЦА В КАЧЕСТВЕ ИНДИВИДУАЛЬНОГО ПРЕДПРИНИМАТЕЛЯ")
     {
         Tag = Typs.Keyword
     };
     t.AddVariant("СВИДЕТЕЛЬСТВО О ГОСУДАРСТВЕННОЙ РЕГИСТРАЦИИ ФИЗИЧЕСКОГО ЛИЦА В КАЧЕСТВЕ ИП", false);
     t.AddVariant("СВИДЕТЕЛЬСТВО О ГОСРЕГИСТРАЦИИ ФИЗЛИЦА В КАЧЕСТВЕ ИП", false);
     t.AddVariant("СВИДЕТЕЛЬСТВО ГОСУДАРСТВЕННОЙ РЕГИСТРАЦИИ", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("ВОДИТЕЛЬСКОЕ УДОСТОВЕРЕНИЕ")
     {
         Tag = Typs.Keyword
     };
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЛИЦЕНЗИЯ")
     {
         Tag = Typs.Keyword
     };
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("СЕРИЯ")
     {
         Tag = Typs.Seria
     };
     t.AddAbridge("СЕР.");
     t.AddVariant("СЕРИ", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("НОМЕР")
     {
         Tag = Typs.Number
     };
     t.AddAbridge("НОМ.");
     t.AddAbridge("Н-Р");
     t.AddVariant("№", false);
     t.AddVariant("N", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("ВЫДАТЬ")
     {
         Tag = Typs.Vidan
     };
     t.AddVariant("ВЫДАВАТЬ", false);
     t.AddVariant("ДАТА ВЫДАЧИ", false);
     t.AddVariant("ДАТА РЕГИСТРАЦИИ", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("КОД ПОДРАЗДЕЛЕНИЯ")
     {
         Tag = Typs.Code
     };
     t.AddAbridge("К/П");
     t.AddAbridge("К.П.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("РЕГИСТРАЦИЯ")
     {
         Tag = Typs.Address
     };
     t.AddVariant("ЗАРЕГИСТРИРОВАН", false);
     t.AddVariant("АДРЕС РЕГИСТРАЦИИ", false);
     t.AddVariant("ЗАРЕГИСТРИРОВАННЫЙ", false);
     t.AddAbridge("ПРОПИСАН");
     t.AddVariant("АДРЕС ПРОПИСКИ", false);
     t.AddVariant("АДРЕС ПО ПРОПИСКЕ", false);
     m_Ontology.Add(t);
 }
Пример #7
0
 internal static void Initialize()
 {
     if (m_Types != null)
     {
         return;
     }
     m_Types = new Pullenti.Ner.Core.TerminCollection();
     m_Names = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin t;
     foreach (string s in new string[] { "ПЛАНЕТА", "ЗВЕЗДА", "КОМЕТА", "МЕТЕОРИТ", "СОЗВЕЗДИЕ", "ГАЛАКТИКА" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s, null);
         t.Tag = Pullenti.Ner.Named.NamedEntityKind.Planet;
         m_Types.Add(t);
     }
     foreach (string s in new string[] { "СОЛНЦЕ", "МЕРКУРИЙ", "ВЕНЕРА", "ЗЕМЛЯ", "МАРС", "ЮПИТЕР", "САТУРН", "УРАН", "НЕПТУН", "ПЛУТОН", "ЛУНА", "ДЕЙМОС", "ФОБОС", "Ио", "Ганимед", "Каллисто" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s.ToUpper(), null);
         t.Tag = Pullenti.Ner.Named.NamedEntityKind.Planet;
         m_Names.Add(t);
     }
     foreach (string s in new string[] { "РЕКА", "ОЗЕРО", "МОРЕ", "ОКЕАН", "ЗАЛИВ", "ПРОЛИВ", "ПОБЕРЕЖЬЕ", "КОНТИНЕНТ", "ОСТРОВ", "ПОЛУОСТРОВ", "МЫС", "ГОРА", "ГОРНЫЙ ХРЕБЕТ", "ПЕРЕВАЛ", "ЛЕС", "САД", "ЗАПОВЕДНИК", "ЗАКАЗНИК", "ДОЛИНА", "УЩЕЛЬЕ", "РАВНИНА", "БЕРЕГ" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s, null);
         t.Tag = Pullenti.Ner.Named.NamedEntityKind.Location;
         m_Types.Add(t);
     }
     foreach (string s in new string[] { "ТИХИЙ", "АТЛАНТИЧЕСКИЙ", "ИНДИЙСКИЙ", "СЕВЕРО-ЛЕДОВИТЫЙ" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s, null);
         t.Tag  = Pullenti.Ner.Named.NamedEntityKind.Location;
         t.Tag2 = "океан";
         m_Names.Add(t);
     }
     foreach (string s in new string[] { "ЕВРАЗИЯ", "АФРИКА", "АМЕРИКА", "АВСТРАЛИЯ", "АНТАРКТИДА" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s, null);
         t.Tag  = Pullenti.Ner.Named.NamedEntityKind.Location;
         t.Tag2 = "континент";
         m_Names.Add(t);
     }
     foreach (string s in new string[] { "ВОЛГА", "НЕВА", "АМУР", "ОБЪ", "АНГАРА", "ЛЕНА", "ИРТЫШ", "ДНЕПР", "ДОН", "ДНЕСТР", "РЕЙН", "АМУДАРЬЯ", "СЫРДАРЬЯ", "ТИГР", "ЕВФРАТ", "ИОРДАН", "МИССИСИПИ", "АМАЗОНКА", "ТЕМЗА", "СЕНА", "НИЛ", "ЯНЦЗЫ", "ХУАНХЭ", "ПАРАНА", "МЕКОНГ", "МАККЕНЗИ", "НИГЕР", "ЕНИСЕЙ", "МУРРЕЙ", "САЛУИН", "ИНД", "РИО-ГРАНДЕ", "БРАХМАПУТРА", "ДАРЛИНГ", "ДУНАЙ", "ЮКОН", "ГАНГ", "МАРРАМБИДЖИ", "ЗАМБЕЗИ", "ТОКАНТИС", "ОРИНОКО", "СИЦЗЯН", "КОЛЫМА", "КАМА", "ОКА", "ЭЛЬЮА", "ВИСЛА", "ДАУГАВА", "ЗАПАДНАЯ ДВИНА", "НЕМАН", "МЕЗЕНЬ", "КУБАНЬ", "ЮЖНЫЙ БУГ" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s, null);
         t.Tag  = Pullenti.Ner.Named.NamedEntityKind.Location;
         t.Tag2 = "река";
         m_Names.Add(t);
     }
     foreach (string s in new string[] { "ЕВРОПА", "АЗИЯ", "АРКТИКА", "КАВКАЗ", "ПРИБАЛТИКА", "СИБИРЬ", "ЗАПОЛЯРЬЕ", "ЧУКОТКА", "ПРИБАЛТИКА", "БАЛКАНЫ", "СКАНДИНАВИЯ", "ОКЕАНИЯ", "АЛЯСКА", "УРАЛ", "ПОВОЛЖЬЕ", "ПРИМОРЬЕ", "КУРИЛЫ", "ТИБЕТ", "ГИМАЛАИ", "АЛЬПЫ", "САХАРА", "ГОБИ", "СИНАЙ", "БАЙКОНУР", "ЧЕРНОБЫЛЬ", "САДОВОЕ КОЛЬЦО", "СТАРЫЙ ГОРОД" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s, null);
         t.Tag = Pullenti.Ner.Named.NamedEntityKind.Location;
         m_Names.Add(t);
     }
     foreach (string s in new string[] { "ПАМЯТНИК", "МОНУМЕНТ", "МЕМОРИАЛ", "БЮСТ", "ОБЕЛИСК" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s, null);
         t.Tag = Pullenti.Ner.Named.NamedEntityKind.Monument;
         m_Types.Add(t);
     }
     foreach (string s in new string[] { "ДВОРЕЦ", "КРЕМЛЬ", "ЗАМОК", "УСАДЬБА", "ДОМ", "ЗДАНИЕ", "ШТАБ-КВАРТИРА", "ЖЕЛЕЗНОДОРОЖНЫЙ ВОКЗАЛ", "ВОКЗАЛ", "АВТОВОКЗАЛ", "АЭРОПОРТ", "АЭРОДРОМ" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s, null);
         t.Tag = Pullenti.Ner.Named.NamedEntityKind.Building;
         m_Types.Add(t);
     }
     foreach (string s in new string[] { "КРЕМЛЬ", "КАПИТОЛИЙ", "БЕЛЫЙ ДОМ" })
     {
         t = new Pullenti.Ner.Core.Termin();
         t.InitByNormalText(s, null);
         t.Tag = Pullenti.Ner.Named.NamedEntityKind.Building;
         m_Names.Add(t);
     }
     t = new Pullenti.Ner.Core.Termin("МЕЖДУНАРОДНАЯ КОСМИЧЕСКАЯ СТАНЦИЯ")
     {
         Tag = Pullenti.Ner.Named.NamedEntityKind.Building
     };
     t.Acronym = "МКС";
     m_Names.Add(t);
 }
Пример #8
0
 public static void Initialize()
 {
     if (m_Termins != null)
     {
         return;
     }
     m_Termins = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin tt;
     tt = new Pullenti.Ner.Core.Termin("ТЕКСТ")
     {
         Tag = BookLinkTyp.NameTail
     };
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("ЭЛЕКТРОННЫЙ РЕСУРС")
     {
         Tag = BookLinkTyp.ElectronRes
     };
     tt.AddVariant("ЕЛЕКТРОННИЙ РЕСУРС", false);
     tt.AddVariant("MODE OF ACCESS", false);
     tt.AddVariant("URL", false);
     tt.AddVariant("URLS", false);
     tt.AddVariant("ELECTRONIC RESOURCE", false);
     tt.AddVariant("ON LINE", false);
     tt.AddVariant("ONLINE", false);
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("РЕЖИМ ДОСТУПА")
     {
         Tag = BookLinkTyp.Misc
     };
     tt.AddVariant("РЕЖИМ ДОСТУПУ", false);
     tt.AddVariant("AVAILABLE", false);
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("МОНОГРАФИЯ")
     {
         Tag = BookLinkTyp.Type
     };
     tt.AddVariant("МОНОГРАФІЯ", false);
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("УЧЕБНОЕ ПОСОБИЕ")
     {
         Tag = BookLinkTyp.Type
     };
     tt.AddAbridge("УЧ.ПОСОБИЕ");
     tt.AddAbridge("УЧЕБ.");
     tt.AddAbridge("УЧЕБН.");
     tt.AddVariant("УЧЕБНИК", false);
     tt.AddVariant("ПОСОБИЕ", false);
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("НАВЧАЛЬНИЙ ПОСІБНИК")
     {
         Tag = BookLinkTyp.Type, Lang = Pullenti.Morph.MorphLang.UA
     };
     tt.AddAbridge("НАВЧ.ПОСІБНИК");
     tt.AddAbridge("НАВЧ.ПОСІБ");
     tt.AddVariant("ПІДРУЧНИК", false);
     tt.AddVariant("ПІДРУЧ", false);
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("АВТОРЕФЕРАТ")
     {
         Tag = BookLinkTyp.Type
     };
     tt.AddAbridge("АВТОРЕФ.");
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("ДИССЕРТАЦИЯ")
     {
         Tag = BookLinkTyp.Type
     };
     tt.AddVariant("ДИСС", false);
     tt.AddAbridge("ДИС.");
     tt.AddVariant("ДИСЕРТАЦІЯ", false);
     tt.AddVariant("DISSERTATION", false);
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("ДОКЛАД")
     {
         Tag = BookLinkTyp.Type
     };
     tt.AddVariant("ДОКЛ", false);
     tt.AddAbridge("ДОКЛ.");
     tt.AddVariant("ДОПОВІДЬ", false);
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("ПОД РЕДАКЦИЕЙ")
     {
         Tag = BookLinkTyp.Editors
     };
     tt.AddAbridge("ПОД РЕД");
     tt.AddAbridge("ОТВ.РЕД");
     tt.AddAbridge("ОТВ.РЕДАКТОР");
     tt.AddVariant("ПОД ОБЩЕЙ РЕДАКЦИЕЙ", false);
     tt.AddAbridge("ОТВ.РЕД");
     tt.AddAbridge("ОТВ.РЕДАКТОР");
     tt.AddAbridge("ПОД ОБЩ. РЕД");
     tt.AddAbridge("ПОД ОБЩЕЙ РЕД");
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("ПІД РЕДАКЦІЄЮ")
     {
         Tag = BookLinkTyp.Editors, Lang = Pullenti.Morph.MorphLang.UA
     };
     tt.AddAbridge("ПІД РЕД");
     tt.AddAbridge("ОТВ.РЕД");
     tt.AddAbridge("ВІД. РЕДАКТОР");
     tt.AddVariant("ЗА ЗАГ.РЕД", false);
     tt.AddAbridge("ВІДПОВІДАЛЬНИЙ РЕДАКТОР");
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("СОСТАВИТЕЛЬ")
     {
         Tag = BookLinkTyp.Sostavitel
     };
     tt.AddAbridge("СОСТ.");
     m_Termins.Add(tt);
     tt = new Pullenti.Ner.Core.Termin("УКЛАДАЧ")
     {
         Tag = BookLinkTyp.Sostavitel, Lang = Pullenti.Morph.MorphLang.UA
     };
     tt.AddAbridge("УКЛ.");
     m_Termins.Add(tt);
     foreach (string s in new string[] { "Политиздат", "Прогресс", "Мысль", "Просвещение", "Наука", "Физматлит", "Физматкнига", "Инфра-М", "Питер", "Интеллект", "Аспект пресс", "Аспект-пресс", "АСВ", "Радиотехника", "Радио и связь", "Лань", "Академия", "Академкнига", "URSS", "Академический проект", "БИНОМ", "БВХ", "Вильямс", "Владос", "Волтерс Клувер", "Wolters Kluwer", "Восток-Запад", "Высшая школа", "ГЕО", "Дашков и К", "Кнорус", "Когито-Центр", "КолосС", "Проспект", "РХД", "Статистика", "Финансы и статистика", "Флинта", "Юнити-дана" })
     {
         m_Termins.Add(new Pullenti.Ner.Core.Termin(s.ToUpper())
         {
             Tag = BookLinkTyp.Press
         });
     }
     tt = new Pullenti.Ner.Core.Termin("ИЗДАТЕЛЬСТВО")
     {
         Tag = BookLinkTyp.Press
     };
     tt.AddAbridge("ИЗ-ВО");
     tt.AddAbridge("ИЗД-ВО");
     tt.AddAbridge("ИЗДАТ-ВО");
     tt.AddVariant("ISSN", false);
     tt.AddVariant("PRESS", false);
     tt.AddVariant("VERLAG", false);
     tt.AddVariant("JOURNAL", false);
     m_Termins.Add(tt);
 }
Пример #9
0
 internal static void Initialize()
 {
     if (m_Termins != null)
     {
         return;
     }
     m_Termins = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin t = new Pullenti.Ner.Core.Termin("НЕ МЕНЕЕ")
     {
         Tag = DiapTyp.Ge
     };
     t.AddVariant("НЕ МЕНЬШЕ", false);
     t.AddVariant("НЕ КОРОЧЕ", false);
     t.AddVariant("НЕ МЕДЛЕННЕЕ", false);
     t.AddVariant("НЕ НИЖЕ", false);
     t.AddVariant("НЕ МОЛОЖЕ", false);
     t.AddVariant("НЕ ДЕШЕВЛЕ", false);
     t.AddVariant("НЕ РЕЖЕ", false);
     t.AddVariant("НЕ МЕНЕ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("МЕНЕЕ")
     {
         Tag = DiapTyp.Ls
     };
     t.AddVariant("МЕНЬШЕ", false);
     t.AddVariant("МЕНЕ", false);
     t.AddVariant("КОРОЧЕ", false);
     t.AddVariant("МЕДЛЕННЕЕ", false);
     t.AddVariant("НИЖЕ", false);
     t.AddVariant("МЛАДШЕ", false);
     t.AddVariant("ДЕШЕВЛЕ", false);
     t.AddVariant("РЕЖЕ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("НЕ БОЛЕЕ")
     {
         Tag = DiapTyp.Le
     };
     t.AddVariant("НЕ БОЛЬШЕ", false);
     t.AddVariant("НЕ БОЛЕ", false);
     t.AddVariant("НЕ ДЛИННЕЕ", false);
     t.AddVariant("НЕ БЫСТРЕЕ", false);
     t.AddVariant("НЕ ВЫШЕ", false);
     t.AddVariant("НЕ ПОЗДНЕЕ", false);
     t.AddVariant("НЕ ДОЛЬШЕ", false);
     t.AddVariant("НЕ СТАРШЕ", false);
     t.AddVariant("НЕ ДОРОЖЕ", false);
     t.AddVariant("НЕ ЧАЩЕ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("БОЛЕЕ")
     {
         Tag = DiapTyp.Gt
     };
     t.AddVariant("БОЛЬШЕ", false);
     t.AddVariant("ДЛИННЕЕ", false);
     t.AddVariant("БЫСТРЕЕ", false);
     t.AddVariant("БОЛЕ", false);
     t.AddVariant("ЧАЩЕ", false);
     t.AddVariant("ГЛУБЖЕ", false);
     t.AddVariant("ВЫШЕ", false);
     t.AddVariant("СВЫШЕ", false);
     t.AddVariant("СТАРШЕ", false);
     t.AddVariant("ДОРОЖЕ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ОТ")
     {
         Tag = DiapTyp.From
     };
     t.AddVariant("С", false);
     t.AddVariant("C", false);
     t.AddVariant("НАЧИНАЯ С", false);
     t.AddVariant("НАЧИНАЯ ОТ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ДО")
     {
         Tag = DiapTyp.To
     };
     t.AddVariant("ПО", false);
     t.AddVariant("ЗАКАНЧИВАЯ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("НЕ ХУЖЕ")
     {
         Tag = DiapTyp.Undefined
     };
     m_Termins.Add(t);
     m_Spec = new Pullenti.Ner.Core.TerminCollection();
     t      = new Pullenti.Ner.Core.Termin("ПОЛЛИТРА")
     {
         Tag = 0.5, Tag2 = "литр"
     };
     t.AddVariant("ПОЛУЛИТРА", false);
     m_Spec.Add(t);
     t = new Pullenti.Ner.Core.Termin("ПОЛКИЛО")
     {
         Tag = 0.5, Tag2 = "килограмм"
     };
     t.AddVariant("ПОЛКИЛОГРАММА", false);
     m_Spec.Add(t);
     t = new Pullenti.Ner.Core.Termin("ПОЛМЕТРА")
     {
         Tag = 0.5, Tag2 = "метр"
     };
     t.AddVariant("ПОЛУМЕТРА", false);
     m_Spec.Add(t);
     t = new Pullenti.Ner.Core.Termin("ПОЛТОННЫ")
     {
         Tag = 0.5, Tag2 = "тонна"
     };
     t.AddVariant("ПОЛУТОННЫ", false);
     m_Spec.Add(t);
     m_Spec.Add(t);
 }
Пример #10
0
        public static void Initialize()
        {
            if (m_Inited)
            {
                return;
            }
            m_Inited        = true;
            Units           = new List <Unit>();
            Termins         = new Pullenti.Ner.Core.TerminCollection();
            m_KindsKeywords = new Dictionary <Pullenti.Ner.Measure.MeasureKind, List <string> >();
            m_KindsKeywords.Add(Pullenti.Ner.Measure.MeasureKind.Speed, new List <string>(new string[] { "СКОРОСТЬ", "SPEED", "ШВИДКІСТЬ" }));
            Pullenti.Ner.Core.Termin.AssignAllTextsAsNormal = true;
            Unit u;
            Unit uu;

            Pullenti.Ner.Core.Termin t;
            u = new Unit("м", "m", "метр", "meter")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Length
            };
            u.Keywords.AddRange(new string[] { "ДЛИНА", "ДЛИННА", "ШИРИНА", "ГЛУБИНА", "ВЫСОТА", "РАЗМЕР", "ГАБАРИТ", "РАССТОЯНИЕ", "РАДИУС", "ПЕРИМЕТР", "ДИАМЕТР", "ТОЛЩИНА", "ПОДАЧА", "НАПОР", "ДАЛЬНОСТЬ", "ТИПОРАЗМЕР", "КАЛИБР", "LENGTH", "WIDTH", "DEPTH", "HEIGHT", "SIZE", "ENVELOPE", "DISTANCE", "RADIUS", "PERIMETER", "DIAMETER", "FLOW", "PRESSURE", "CALIBER", "ДОВЖИНА", "ШИРИНА", "ГЛИБИНА", "ВИСОТА", "РОЗМІР", "ГАБАРИТ", "ВІДСТАНЬ", "РАДІУС", "ДІАМЕТР", "НАТИСК", "КАЛІБР" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("МЕТР")
            {
                Tag = u
            };
            t.AddVariant("МЕТРОВЫЙ", false);
            t.AddVariant("МЕТРОВИЙ", false);
            t.AddVariant("METER", false);
            t.AddAbridge("М.");
            t.AddAbridge("M.");
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Deci, UnitsFactors.Centi, UnitsFactors.Milli, UnitsFactors.Micro, UnitsFactors.Nano })
            {
                _addFactor(f, u, "М.", "M.", "МЕТР;МЕТРОВЫЙ", "МЕТР;МЕТРОВИЙ", "METER;METRE");
            }
            uu = new Unit("миль", "mile", "морская миля", "mile")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Length
            };
            uu.BaseUnit       = u;
            uu.BaseMultiplier = 1852;
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("МИЛЯ")
            {
                Tag = uu
            };
            t.AddVariant("МОРСКАЯ МИЛЯ", false);
            t.AddAbridge("NMI");
            t.AddVariant("MILE", false);
            t.AddVariant("NAUTICAL MILE", false);
            Termins.Add(t);
            uu = new Unit("фут", "ft", "фут", "foot")
            {
                BaseUnit = u, BaseMultiplier = 0.304799472, Kind = Pullenti.Ner.Measure.MeasureKind.Length
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ФУТ")
            {
                Tag = uu
            };
            t.AddAbridge("FT.");
            t.AddVariant("FOOT", false);
            Termins.Add(t);
            uu = new Unit("дюйм", "in", "дюйм", "inch")
            {
                BaseUnit = u, BaseMultiplier = 0.0254, Kind = Pullenti.Ner.Measure.MeasureKind.Length
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ДЮЙМ")
            {
                Tag = uu
            };
            t.AddAbridge("IN");
            t.AddVariant("INCH", false);
            Termins.Add(t);
            u = new Unit("ар", "are", "ар", "are")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Area
            };
            u.Keywords.AddRange(new string[] { "ПЛОЩАДЬ", "ПРОЩИНА", "AREA", "SQWARE", "SPACE" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("АР")
            {
                Tag = u
            };
            t.AddVariant("ARE", false);
            t.AddVariant("СОТКА", false);
            Termins.Add(t);
            uu = new Unit("га", "ga", "гектар", "hectare")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Area
            };
            uu.BaseUnit       = u;
            uu.BaseMultiplier = 100;
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ГЕКТАР")
            {
                Tag = uu
            };
            t.AddVariant("HECTARE", false);
            t.AddAbridge("ГА");
            t.AddAbridge("GA");
            Termins.Add(t);
            u = new Unit("г", "g", "грамм", "gram")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Weight
            };
            u.Keywords.AddRange(new string[] { "ВЕС", "ТЯЖЕСТЬ", "НЕТТО", "БРУТТО", "МАССА", "НАГРУЗКА", "ЗАГРУЗКА", "УПАКОВКА", "WEIGHT", "NET", "GROSS", "MASS", "ВАГА", "ТЯЖКІСТЬ", "МАСА" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ГРАММ")
            {
                Tag = u
            };
            t.AddAbridge("Г.");
            t.AddAbridge("ГР.");
            t.AddAbridge("G.");
            t.AddAbridge("GR.");
            t.AddVariant("ГРАММОВЫЙ", false);
            t.AddVariant("ГРАММНЫЙ", false);
            t.AddVariant("ГРАМОВИЙ", false);
            t.AddVariant("GRAM", false);
            t.AddVariant("GRAMME", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Milli })
            {
                _addFactor(f, u, "Г.;ГР;", "G.;GR.", "ГРАМ;ГРАММ;ГРАММНЫЙ", "ГРАМ;ГРАМОВИЙ", "GRAM;GRAMME");
            }
            uu = new Unit("ц", "centner", "центнер", "centner")
            {
                BaseUnit = u, BaseMultiplier = 100000, Kind = Pullenti.Ner.Measure.MeasureKind.Weight
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ЦЕНТНЕР")
            {
                Tag = uu
            };
            t.AddVariant("CENTNER", false);
            t.AddVariant("QUINTAL", false);
            t.AddAbridge("Ц.");
            Termins.Add(t);
            uu = new Unit("т", "t", "тонна", "tonne")
            {
                BaseUnit = u, BaseMultiplier = 1000000, Kind = Pullenti.Ner.Measure.MeasureKind.Weight
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ТОННА")
            {
                Tag = uu
            };
            t.AddVariant("TONNE", false);
            t.AddVariant("TON", false);
            t.AddAbridge("Т.");
            t.AddAbridge("T.");
            Termins.Add(t);
            _addFactor(UnitsFactors.Mega, uu, "Т", "T", "ТОННА;ТОННЫЙ", "ТОННА;ТОННИЙ", "TONNE;TON");
            u = new Unit("л", "l", "литр", "liter")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Volume
            };
            u.Keywords.AddRange(new string[] { "ОБЪЕМ", "ЕМКОСТЬ", "ВМЕСТИМОСЬ", "ОБСЯГ", "ЄМНІСТЬ", "МІСТКІСТЬ", "VOLUME", "CAPACITY" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ЛИТР")
            {
                Tag = u
            };
            t.AddAbridge("Л.");
            t.AddAbridge("L.");
            t.AddVariant("LITER", false);
            t.AddVariant("LITRE", false);
            t.AddVariant("ЛІТР", false);
            t.AddVariant("ЛІТРОВИЙ", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Milli, UnitsFactors.Centi })
            {
                _addFactor(f, u, "Л.", "L.", "ЛИТР;ЛИТРОВЫЙ", "ЛІТР;ЛІТРОВИЙ", "LITER;LITRE");
            }
            uu = new Unit("галлон", "gallon", "галлон", "gallon")
            {
                BaseUnit = u, BaseMultiplier = 4.5461, Kind = Pullenti.Ner.Measure.MeasureKind.Volume
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ГАЛЛОН")
            {
                Tag = u
            };
            t.AddVariant("ГАЛОН", false);
            t.AddVariant("GALLON", false);
            t.AddAbridge("ГАЛ");
            Termins.Add(t);
            uu = new Unit("баррель", "bbls", "баррель нефти", "barrel")
            {
                BaseUnit = u, BaseMultiplier = 158.987, Kind = Pullenti.Ner.Measure.MeasureKind.Volume
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("БАРРЕЛЬ")
            {
                Tag = uu
            };
            t.AddAbridge("BBLS");
            t.AddVariant("БАРРЕЛЬ НЕФТИ", false);
            t.AddVariant("BARRREL", false);
            Termins.Add(t);
            uSec = (u = new Unit("сек", "sec", "секунда", "second")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Time
            });
            u.Keywords.AddRange(new string[] { "ВРЕМЯ", "ПРОДОЛЖИТЕЛЬНОСТЬ", "ЗАДЕРЖКА", "ДЛИТЕЛЬНОСТЬ", "ДОЛГОТА", "TIME", "DURATION", "DELAY", "ЧАС", "ТРИВАЛІСТЬ", "ЗАТРИМКА" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("СЕКУНДА")
            {
                Tag = u
            };
            t.AddAbridge("С.");
            t.AddAbridge("C.");
            t.AddAbridge("СЕК");
            t.AddAbridge("СЕК");
            t.AddAbridge("S.");
            t.AddAbridge("SEC");
            t.AddVariant("СЕКУНДНЫЙ", false);
            t.AddVariant("СЕКУНДНИЙ", false);
            t.AddVariant("SECOND", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Milli, UnitsFactors.Micro })
            {
                _addFactor(f, u, "С.;СЕК", "C;S.;SEC;", "СЕКУНДА;СЕКУНДНЫЙ", "СЕКУНДА;СЕКУНДНИЙ", "SECOND");
            }
            uMinute           = (uu = new Unit("мин", "min", "минута", "minute")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Time
            });
            uu.BaseUnit       = u;
            uu.BaseMultiplier = 60;
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("МИНУТА")
            {
                Tag = uu
            };
            t.AddAbridge("МИН.");
            t.AddAbridge("MIN.");
            t.AddVariant("МИНУТНЫЙ", false);
            t.AddVariant("ХВИЛИННИЙ", false);
            t.AddVariant("ХВИЛИНА", false);
            t.AddVariant("МІНУТА", false);
            t.AddVariant("MINUTE", false);
            Termins.Add(t);
            u     = uu;
            uHour = (uu = new Unit("ч", "h", "час", "hour")
            {
                BaseUnit = u, BaseMultiplier = 60, Kind = Pullenti.Ner.Measure.MeasureKind.Time
            });
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ЧАС")
            {
                Tag = uu
            };
            t.AddAbridge("Ч.");
            t.AddAbridge("H.");
            t.AddVariant("ЧАСОВОЙ", false);
            t.AddVariant("HOUR", false);
            t.AddVariant("ГОДИННИЙ", false);
            t.AddVariant("ГОДИНА", false);
            Termins.Add(t);
            u = new Unit("дн", "d", "день", "day")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Time
            };
            u.Keywords.AddRange(uSec.Keywords);
            u.Keywords.AddRange(new string[] { "ПОСТАВКА", "СРОК", "РАБОТА", "ЗАВЕРШЕНИЕ" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ДЕНЬ")
            {
                Tag = u
            };
            t.AddAbridge("ДН.");
            t.AddAbridge("Д.");
            t.AddVariant("DAY", false);
            Termins.Add(t);
            uu = new Unit("сут", "d", "сутки", "day")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Time
            };
            uu.Keywords.AddRange(uu.Keywords);
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("СУТКИ")
            {
                Tag = uu
            };
            t.AddAbridge("СУТ.");
            t.AddVariant("DAY", false);
            Termins.Add(t);
            uu = new Unit("нед", "week", "неделя", "week")
            {
                BaseUnit = u, BaseMultiplier = 7, Kind = Pullenti.Ner.Measure.MeasureKind.Time
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("НЕДЕЛЯ")
            {
                Tag = uu
            };
            t.AddAbridge("НЕД");
            t.AddVariant("WEEK", false);
            t.AddVariant("ТИЖДЕНЬ", false);
            Termins.Add(t);
            uu = new Unit("мес", "mon", "месяц", "month")
            {
                BaseUnit = u, BaseMultiplier = 30, Kind = Pullenti.Ner.Measure.MeasureKind.Time
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("МЕСЯЦ")
            {
                Tag = uu
            };
            t.AddAbridge("МЕС");
            t.AddAbridge("MON");
            t.AddVariant("MONTH", false);
            t.AddVariant("МІСЯЦЬ", false);
            Termins.Add(t);
            uu = new Unit("г", "year", "год", "year")
            {
                BaseUnit = u, BaseMultiplier = 365, Kind = Pullenti.Ner.Measure.MeasureKind.Time
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ГОД")
            {
                Tag = uu
            };
            t.AddAbridge("Г.");
            t.AddAbridge("ГД");
            t.AddVariant("YEAR", false);
            t.AddVariant("РІК", false);
            t.AddVariant("ЛЕТ", false);
            Termins.Add(t);
            uGradus = new Unit("°", "°", "градус", "degree");
            uGradus.Keywords.AddRange(new string[] { "ТЕМПЕРАТУРА", "ШИРОТА", "ДОЛГОТА", "АЗИМУТ", "ДОВГОТА", "TEMPERATURE", "LATITUDE", "LONGITUDE", "AZIMUTH" });
            Units.Add(uGradus);
            t = new Pullenti.Ner.Core.Termin("ГРАДУС")
            {
                Tag = uGradus
            };
            t.AddVariant("DEGREE", false);
            Termins.Add(t);
            uGradusC = new Unit("°C", "°C", "градус Цельсия", "celsius degree")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Temperature
            };
            uGradusC.Keywords.Add("ТЕМПЕРАТУРА");
            uGradus.Keywords.Add("TEMPERATURE");
            uGradus.Psevdo.Add(uGradusC);
            Units.Add(uGradusC);
            t = new Pullenti.Ner.Core.Termin("ГРАДУС ЦЕЛЬСИЯ")
            {
                Tag = uGradusC
            };
            t.AddVariant("ГРАДУС ПО ЦЕЛЬСИЮ", false);
            t.AddVariant("CELSIUS DEGREE", false);
            Termins.Add(t);
            uGradusF = new Unit("°F", "°F", "градус Фаренгейта", "Fahrenheit degree")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Temperature
            };
            uGradusF.Keywords = uGradusC.Keywords;
            uGradus.Psevdo.Add(uGradusF);
            Units.Add(uGradusF);
            t = new Pullenti.Ner.Core.Termin("ГРАДУС ФАРЕНГЕЙТА")
            {
                Tag = uGradusF
            };
            t.AddVariant("ГРАДУС ПО ФАРЕНГЕЙТУ", false);
            t.AddVariant("FAHRENHEIT DEGREE", false);
            Termins.Add(t);
            uPercent = new Unit("%", "%", "процент", "percent")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Percent
            };
            Units.Add(uPercent);
            t = new Pullenti.Ner.Core.Termin("ПРОЦЕНТ")
            {
                Tag = uPercent
            };
            t.AddVariant("ПРОЦ", false);
            t.AddVariant("PERC", false);
            t.AddVariant("PERCENT", false);
            Termins.Add(t);
            uAlco = new Unit("%(об)", "%(vol)", "объёмный процент", "volume percent");
            uAlco.Keywords.AddRange(new string[] { "КРЕПОСТЬ", "АЛКОГОЛЬ", "ALCOHOL", "СПИРТ", "АЛКОГОЛЬНЫЙ", "SPIRIT" });
            uPercent.Psevdo.Add(uAlco);
            uGradus.Psevdo.Add(uAlco);
            Units.Add(uAlco);
            t = new Pullenti.Ner.Core.Termin("ОБЪЕМНЫЙ ПРОЦЕНТ")
            {
                Tag = uAlco
            };
            t.AddVariant("ГРАДУС", false);
            Termins.Add(t);
            u = new Unit("об", "rev", "оборот", "revolution");
            uGradus.Keywords.AddRange(new string[] { "ЧАСТОТА", "ВРАЩЕНИЕ", "ВРАЩАТЕЛЬНЫЙ", "СКОРОСТЬ", "ОБОРОТ", "FREQUENCY", "ROTATION", "ROTATIONAL", "SPEED", "ОБЕРТАННЯ", "ОБЕРТАЛЬНИЙ" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ОБОРОТ")
            {
                Tag = u
            };
            t.AddAbridge("ОБ.");
            t.AddAbridge("ROT.");
            t.AddAbridge("REV.");
            t.AddVariant("ROTATION", false);
            t.AddVariant("REVOLUTION", false);
            Termins.Add(t);
            u = new Unit("В", "V", "вольт", "volt");
            u.Keywords.AddRange(new string[] { "ЭЛЕКТРИЧЕСКИЙ", "ПОТЕНЦИАЛ", "НАПРЯЖЕНИЕ", "ЭЛЕКТРОДВИЖУЩИЙ", "ПИТАНИЕ", "ТОК", "ПОСТОЯННЫЙ", "ПЕРЕМЕННЫЙ", "ЕЛЕКТРИЧНИЙ", "ПОТЕНЦІАЛ", "НАПРУГА", "ЕЛЕКТРОРУШІЙНОЇ", "ХАРЧУВАННЯ", "СТРУМ", "ПОСТІЙНИЙ", "ЗМІННИЙ", "ELECTRIC", "POTENTIAL", "TENSION", "ELECTROMOTIVE", "FOOD", "CURRENT", "CONSTANT", "VARIABLE" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ВОЛЬТ")
            {
                Tag = u
            };
            t.AddVariant("VOLT", false);
            t.AddAbridge("V");
            t.AddAbridge("В.");
            t.AddAbridge("B.");
            t.AddVariant("VAC", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Milli, UnitsFactors.Milli, UnitsFactors.Micro })
            {
                _addFactor(f, u, "В.", "V.", "ВОЛЬТ;ВОЛЬТНЫЙ", "ВОЛЬТ;ВОЛЬТНІ", "VOLT");
            }
            u = new Unit("Вт", "W", "ватт", "watt");
            u.Keywords.AddRange(new string[] { "МОЩНОСТЬ", "ЭНЕРГИЯ", "ПОТОК", "ИЗЛУЧЕНИЕ", "ЭНЕРГОПОТРЕБЛЕНИЕ", "ПОТУЖНІСТЬ", "ЕНЕРГІЯ", "ПОТІК", "ВИПРОМІНЮВАННЯ", "POWER", "ENERGY", "FLOW", "RADIATION" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ВАТТ")
            {
                Tag = u
            };
            t.AddAbridge("Вт");
            t.AddAbridge("W");
            t.AddVariant("WATT", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Milli })
            {
                _addFactor(f, u, "ВТ.", "W.", "ВАТТ;ВАТТНЫЙ", "ВАТ;ВАТНИЙ", "WATT;WATTS");
            }
            uu = new Unit("л.с.", "hp", "лошадиная сила", "horsepower")
            {
                BaseUnit = u, BaseMultiplier = 735.49875
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ЛОШАДИНАЯ СИЛА")
            {
                Tag = uu
            };
            t.AddAbridge("Л.С.");
            t.AddAbridge("ЛОШ.С.");
            t.AddAbridge("ЛОШ.СИЛА");
            t.AddAbridge("HP");
            t.AddAbridge("PS");
            t.AddAbridge("SV");
            t.AddVariant("HORSEPOWER", false);
            Termins.Add(t);
            u = new Unit("Дж", "J", "джоуль", "joule");
            u.Keywords.AddRange(new string[] { "РАБОТА", "ЭНЕРГИЯ", "ТЕПЛОТА", "ТЕПЛОВОЙ", "ТЕПЛОВЫДЕЛЕНИЕ", "МОЩНОСТЬ", "ХОЛОДИЛЬНЫЙ" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ДЖОУЛЬ")
            {
                Tag = u
            };
            t.AddAbridge("ДЖ");
            t.AddAbridge("J");
            t.AddVariant("JOULE", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Tera, UnitsFactors.Milli })
            {
                _addFactor(f, u, "ДЖ.", "J.", "ДЖОУЛЬ", "ДЖОУЛЬ", "JOULE");
            }
            uu          = new Unit("БТЕ", "BTU", "британская терминальная единица", "british terminal unit");
            uu.Keywords = u.Keywords;
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("БРИТАНСКАЯ ТЕРМИНАЛЬНАЯ ЕДИНИЦА")
            {
                Tag = uu
            };
            t.AddAbridge("БТЕ");
            t.AddAbridge("BTU");
            t.AddVariant("BRITISH TERMINAL UNIT", false);
            Termins.Add(t);
            u = new Unit("К", "K", "кельвин", "kelvin");
            u.Keywords.AddRange(uGradusC.Keywords);
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("КЕЛЬВИН")
            {
                Tag = u
            };
            t.AddAbridge("К.");
            t.AddAbridge("K.");
            t.AddVariant("KELVIN", false);
            t.AddVariant("КЕЛЬВІН", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Milli })
            {
                _addFactor(f, u, "К.", "K.", "КЕЛЬВИН", "КЕЛЬВІН", "KELVIN");
            }
            u = new Unit("Гц", "Hz", "герц", "herz");
            u.Keywords.AddRange(new string[] { "ЧАСТОТА", "ЧАСТОТНЫЙ", "ПЕРИОДИЧНОСТЬ", "ПИТАНИЕ", "ЧАСТОТНИЙ", "ПЕРІОДИЧНІСТЬ", "FREQUENCY" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ГЕРЦ")
            {
                Tag = u
            };
            t.AddAbridge("HZ");
            t.AddAbridge("ГЦ");
            t.AddVariant("ГЕРЦОВЫЙ", false);
            t.AddVariant("ГЕРЦОВИЙ", false);
            t.AddVariant("HERZ", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Micro })
            {
                _addFactor(f, u, "ГЦ.", "W.", "ГЕРЦ;ГЕРЦОВЫЙ", "ГЕРЦ;ГЕРЦОВИЙ", "HERZ");
            }
            uOm = (u = new Unit("Ом", "Ω", "Ом", "Ohm"));
            u.Keywords.AddRange(new string[] { "СОПРОТИВЛЕНИЕ", "РЕЗИСТОР", "РЕЗИСТНЫЙ", "ИМПЕДАНС", "РЕЗИСТОРНЫЙ", "ОПІР", "РЕЗИСТИВНИЙ", "ІМПЕДАНС", "RESISTANCE", "RESISTOR", "RESISTIVE", "IMPEDANCE" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ОМ")
            {
                Tag = uOm
            };
            t.AddVariant("OHM", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Micro, UnitsFactors.Milli })
            {
                _addFactor(f, u, "ОМ", "Ω", "ОМ", "ОМ", "OHM");
            }
            u = new Unit("А", "A", "ампер", "ampere");
            u.Keywords.AddRange(new string[] { "ТОК", "СИЛА", "ЭЛЕКТРИЧЕСКИЙ", "ЭЛЕКТРИЧЕСТВО", "МАГНИТ", "МАГНИТОДВИЖУЩИЙ", "ПОТРЕБЛЕНИЕ", "CURRENT", "POWER", "ELECTRICAL", "ELECTRICITY", "MAGNET", "MAGNETOMOTIVE", "CONSUMPTION", "СТРУМ", "ЕЛЕКТРИЧНИЙ", "ЕЛЕКТРИКА", "МАГНІТ", "МАГНИТОДВИЖУЩИЙ", "СПОЖИВАННЯ" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("АМПЕР")
            {
                Tag = u
            };
            t.AddAbridge("A");
            t.AddAbridge("А");
            t.AddVariant("АМПЕРНЫЙ", false);
            t.AddVariant("AMP", false);
            t.AddVariant("AMPERE", false);
            Termins.Add(t);
            uu = new Unit("Ач", "Ah", "ампер-час", "ampere-hour")
            {
                BaseUnit = u, MultUnit = uHour
            };
            uu.Keywords.AddRange(new string[] { "ЗАРЯД", "АККУМУЛЯТОР", "АККУМУЛЯТОРНЫЙ", "ЗАРЯДКА", "БАТАРЕЯ", "CHARGE", "BATTERY", "CHARGING", "АКУМУЛЯТОР", "АКУМУЛЯТОРНИЙ" });
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("АМПЕР ЧАС")
            {
                Tag = uu
            };
            t.AddAbridge("АЧ");
            t.AddAbridge("AH");
            t.AddVariant("AMPERE HOUR", false);
            t.AddVariant("АМПЕРЧАС", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Micro, UnitsFactors.Milli })
            {
                Unit u1  = _addFactor(f, u, "А", "A", "АМПЕР;АМПЕРНЫЙ", "АМПЕР;АМПЕРНИЙ", "AMPERE;AMP");
                Unit uu1 = _addFactor(f, uu, "АЧ", "AH", "АМПЕР ЧАС", "АМПЕР ЧАС", "AMPERE HOUR");
                uu1.BaseUnit = u1;
                uu1.MultUnit = uHour;
            }
            uu          = new Unit("ВА", "VA", "вольт-ампер", "volt-ampere");
            uu.MultUnit = u;
            uu.BaseUnit = FindUnit("V", UnitsFactors.No);
            uu.Keywords.AddRange(new string[] { "ТОК", "СИЛА", "МОЩНОСТЬ", "ЭЛЕКТРИЧЕСКИЙ", "ПЕРЕМЕННЫЙ" });
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("ВОЛЬТ-АМПЕР")
            {
                Tag = uu
            };
            t.AddAbridge("BA");
            t.AddAbridge("BA");
            t.AddVariant("VA", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Micro, UnitsFactors.Milli })
            {
                Unit u1 = _addFactor(f, uu, "ВА;BA", "VA", "ВОЛЬТ-АМПЕР", "ВОЛЬТ-АМПЕР", "VOLT-AMPERE");
            }
            u = new Unit("лк", "lx", "люкс", "lux");
            u.Keywords.AddRange(new string[] { "СВЕТ", "ОСВЕЩЕННОСТЬ", "ILLUMINANCE", "СВІТЛО", " ОСВІТЛЕНІСТЬ" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ЛЮКС")
            {
                Tag = u
            };
            t.AddAbridge("ЛК");
            t.AddAbridge("LX");
            t.AddVariant("LUX", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Deci, UnitsFactors.Centi, UnitsFactors.Micro, UnitsFactors.Milli, UnitsFactors.Nano })
            {
                Unit u1 = _addFactor(f, u, "ЛК", "LX", "ЛЮКС", "ЛЮКС", "LUX");
            }
            u = new Unit("Б", "B", "белл", "bell");
            u.Keywords.AddRange(new string[] { "ЗВУК", "ЗВУКОВОЙ", "ШУМ", "ШУМОВОЙ", "ГРОМКОСТЬ", "ГРОМКИЙ", "СИГНАЛ", "УСИЛЕНИЕ", "ЗАТУХАНИЕ", "ГАРМОНИЧЕСКИЙ", "ПОДАВЛЕНИЕ", "ЗВУКОВИЙ", "ШУМОВИЙ", "ГУЧНІСТЬ", "ГУЧНИЙ", "ПОСИЛЕННЯ", "ЗАГАСАННЯ", "ГАРМОНІЙНИЙ", "ПРИДУШЕННЯ", "SOUND", "NOISE", "VOLUME", "LOUD", "SIGNAL", "STRENGTHENING", "ATTENUATION", "HARMONIC", "SUPPRESSION" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("БЕЛЛ")
            {
                Tag = u
            };
            t.AddAbridge("Б.");
            t.AddAbridge("B.");
            t.AddAbridge("В.");
            t.AddVariant("БЕЛ", false);
            t.AddVariant("BELL", false);
            Termins.Add(t);
            _addFactor(UnitsFactors.Deci, u, "Б", "B", "БЕЛЛ;БЕЛ", "БЕЛЛ;БЕЛ", "BELL");
            u = new Unit("дБи", "dBi", "коэффициент усиления антенны", "dBi");
            u.Keywords.AddRange(new string[] { "УСИЛЕНИЕ", "АНТЕННА", "АНТЕНА", "ПОСИЛЕННЯ", "GAIN", "ANTENNA" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("DBI")
            {
                Tag = u
            };
            t.AddVariant("ДБИ", false);
            Termins.Add(t);
            u = new Unit("дБм", "dBm", "опорная мощность", "dBm");
            u.Keywords.AddRange(new string[] { "МОЩНОСТЬ" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("DBM")
            {
                Tag = u
            };
            t.AddVariant("ДБМ", false);
            t.AddVariant("ДВМ", false);
            Termins.Add(t);
            u = new Unit("Ф", "F", "фарад", "farad");
            u.Keywords.AddRange(new string[] { "ЕМКОСТЬ", "ЭЛЕКТРИЧНСКИЙ", "КОНДЕНСАТОР" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ФАРАД")
            {
                Tag = u
            };
            t.AddAbridge("Ф.");
            t.AddAbridge("ФА");
            t.AddAbridge("F");
            t.AddVariant("FARAD", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Micro, UnitsFactors.Milli, UnitsFactors.Nano, UnitsFactors.Pico })
            {
                _addFactor(f, u, "Ф.;ФА.", "F", "ФАРАД", "ФАРАД", "FARAD");
            }
            u = new Unit("Н", "N", "ньютон", "newton");
            u.Keywords.AddRange(new string[] { "СИЛА", "МОМЕНТ", "НАГРУЗКА" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("НЬЮТОН")
            {
                Tag = u
            };
            t.AddAbridge("Н.");
            t.AddAbridge("H.");
            t.AddAbridge("N.");
            t.AddVariant("NEWTON", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Mega, UnitsFactors.Kilo, UnitsFactors.Micro, UnitsFactors.Milli })
            {
                _addFactor(f, u, "Н.", "N.", "НЬЮТОН", "НЬЮТОН", "NEWTON");
            }
            u = new Unit("моль", "mol", "моль", "mol");
            u.Keywords.AddRange(new string[] { "МОЛЕКУЛА", "МОЛЕКУЛЯРНЫЙ", "КОЛИЧЕСТВО", "ВЕЩЕСТВО" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("МОЛЬ")
            {
                Tag = u
            };
            t.AddAbridge("МЛЬ");
            t.AddVariant("МОЛ", false);
            t.AddVariant("MOL", false);
            t.AddVariant("ГРАММ МОЛЕКУЛА", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Mega, UnitsFactors.Kilo, UnitsFactors.Micro, UnitsFactors.Milli, UnitsFactors.Nano })
            {
                _addFactor(f, u, "МЛЬ", "MOL", "МОЛЬ", "МОЛЬ", "MOL");
            }
            u = new Unit("Бк", "Bq", "беккерель", "becquerel");
            u.Keywords.AddRange(new string[] { "АКТИВНОСТЬ", "РАДИОАКТИВНЫЙ", "ИЗЛУЧЕНИЕ", "ИСТОЧНИК" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("БЕККЕРЕЛЬ")
            {
                Tag = u
            };
            t.AddAbridge("БК.");
            t.AddVariant("BQ.", false);
            t.AddVariant("БЕК", false);
            t.AddVariant("БЕКЕРЕЛЬ", false);
            t.AddVariant("BECQUEREL", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Mega, UnitsFactors.Kilo, UnitsFactors.Micro, UnitsFactors.Milli, UnitsFactors.Nano })
            {
                _addFactor(f, u, "БК.", "BQ.", "БЕККЕРЕЛЬ;БЕК", "БЕКЕРЕЛЬ", "BECQUEREL");
            }
            u = new Unit("См", "S", "сименс", "siemens");
            u.Keywords.AddRange(new string[] { "ПРОВОДИМОСТЬ", "ЭЛЕКТРИЧЕСКИЙ", "ПРОВОДНИК" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("СИМЕНС")
            {
                Tag = u
            };
            t.AddAbridge("СМ.");
            t.AddAbridge("CM.");
            t.AddVariant("S.", false);
            t.AddVariant("SIEMENS", false);
            t.AddVariant("СІМЕНС", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Mega, UnitsFactors.Kilo, UnitsFactors.Micro, UnitsFactors.Milli, UnitsFactors.Nano })
            {
                _addFactor(f, u, "СМ.", "S.", "СИМЕНС", "СІМЕНС", "SIEMENS");
            }
            u = new Unit("кд", "cd", "кандела", "candela");
            u.Keywords.AddRange(new string[] { "СВЕТ", "СВЕТОВОЙ", "ПОТОК", "ИСТОЧНИК" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("КАНДЕЛА")
            {
                Tag = u
            };
            t.AddAbridge("КД.");
            t.AddVariant("CD.", false);
            t.AddVariant("КАНДЕЛА", false);
            t.AddVariant("CANDELA", false);
            Termins.Add(t);
            u = new Unit("Па", "Pa", "паскаль", "pascal");
            u.Keywords.AddRange(new string[] { "ДАВЛЕНИЕ", "НАПРЯЖЕНИЕ", "ТЯЖЕСТЬ", "PRESSURE", "STRESS", "ТИСК", "НАПРУГА" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ПАСКАЛЬ")
            {
                Tag = u
            };
            t.AddAbridge("ПА");
            t.AddAbridge("РА");
            t.AddVariant("PA", false);
            t.AddVariant("PASCAL", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Micro, UnitsFactors.Milli })
            {
                _addFactor(f, u, "ПА", "PA", "ПАСКАЛЬ", "ПАСКАЛЬ", "PASCAL");
            }
            uu = new Unit("бар", "bar", "бар", "bar")
            {
                BaseUnit = u, BaseMultiplier = 100000
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("БАР")
            {
                Tag = uu
            };
            t.AddVariant("BAR", false);
            Termins.Add(t);
            uu = new Unit("мм.рт.ст.", "mm Hg", "миллиметр ртутного столба", "millimeter of mercury")
            {
                BaseUnit = u, BaseMultiplier = 133.332
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("МИЛЛИМЕТР РТУТНОГО СТОЛБА")
            {
                Tag = uu
            };
            t.AddAbridge("ММ.РТ.СТ.");
            t.AddAbridge("MM.PT.CT");
            t.AddAbridge("MM HG");
            t.AddVariant("MMGH", false);
            t.AddVariant("ТОРР", false);
            t.AddVariant("TORR", false);
            t.AddVariant("MILLIMETER OF MERCURY", false);
            Termins.Add(t);
            u = new Unit("бит", "bit", "бит", "bit");
            u.Keywords.AddRange(new string[] { "ОБЪЕМ", "РАЗМЕР", "ПАМЯТЬ", "ЕМКОСТЬ", "ПЕРЕДАЧА", "ПРИЕМ", "ОТПРАВКА", "ОП", "ДИСК", "НАКОПИТЕЛЬ", "КЭШ", "ОБСЯГ", "РОЗМІР", "ВІДПРАВЛЕННЯ", "VOLUME", "SIZE", "MEMORY", "TRANSFER", "SEND", "RECEPTION", "RAM", "DISK", "HDD", "RAM", "ROM", "CD-ROM", "CASHE" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("БИТ")
            {
                Tag = u
            };
            t.AddVariant("BIT", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Tera })
            {
                _addFactor(f, u, "БИТ", "BIT", "БИТ", "БИТ", "BIT");
            }
            uu          = new Unit("б", "b", "байт", "byte");
            uu.Keywords = u.Keywords;
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("БАЙТ")
            {
                Tag = uu
            };
            t.AddVariant("BYTE", false);
            t.AddAbridge("B.");
            t.AddAbridge("Б.");
            t.AddAbridge("В.");
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Tera })
            {
                _addFactor(f, uu, "Б.", "B.", "БАЙТ", "БАЙТ", "BYTE");
            }
            u = new Unit("бод", "Bd", "бод", "baud");
            u.Keywords.AddRange(new string[] { "СКОРОСТЬ", "ПЕРЕДАЧА", "ПРИЕМ", "ДАННЫЕ", "ОТПРАВКА" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("БОД")
            {
                Tag = u
            };
            t.AddAbridge("BD");
            t.AddVariant("BAUD", false);
            Termins.Add(t);
            foreach (UnitsFactors f in new UnitsFactors[] { UnitsFactors.Kilo, UnitsFactors.Mega, UnitsFactors.Giga, UnitsFactors.Tera })
            {
                _addFactor(f, uu, "БОД", "BD.", "БОД", "БОД", "BAUD");
            }
            u = new Unit("гс", "gf", "грамм-сила", "gram-force");
            u.Keywords.AddRange(new string[] { "СИЛА", "ДАВЛЕНИЕ" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("ГРАММ СИЛА")
            {
                Tag = u
            };
            t.AddAbridge("ГС");
            t.AddVariant("POND", false);
            t.AddVariant("ГРАМ СИЛА", false);
            t.AddAbridge("GP.");
            t.AddVariant("GRAM POND", false);
            t.AddVariant("GRAM FORCE", false);
            Termins.Add(t);
            uu = new Unit("кгс", "kgf", "килограмм-сила", "kilogram-force")
            {
                BaseUnit = u, BaseMultiplier = 1000
            };
            Units.Add(uu);
            t = new Pullenti.Ner.Core.Termin("КИЛОГРАММ СИЛА")
            {
                Tag = uu
            };
            t.AddAbridge("КГС");
            t.AddVariant("KILOPOND", false);
            t.AddVariant("КІЛОГРАМ СИЛА", false);
            t.AddAbridge("KP.");
            t.AddVariant("KILOGRAM POND", false);
            Termins.Add(t);
            u = new Unit("dpi", "точек на дюйм", "dpi", "dots per inch");
            u.Keywords.AddRange(new string[] { "РАЗРЕШЕНИЕ", "ЭКРАН", "МОНИТОР" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("DOTS PER INCH")
            {
                Tag = u
            };
            t.AddVariant("DPI", false);
            Termins.Add(t);
            u = new Unit("IP", "IP", "IP", "IP")
            {
                Kind = Pullenti.Ner.Measure.MeasureKind.Ip
            };
            u.Keywords.AddRange(new string[] { "ЗАЩИТА", "КЛАСС ЗАЩИТЫ", "PROTECTION", "PROTACTION RATING" });
            Units.Add(u);
            t = new Pullenti.Ner.Core.Termin("IP")
            {
                Tag = u
            };
            Termins.Add(t);
            Pullenti.Ner.Core.Termin.AssignAllTextsAsNormal = false;
        }
Пример #11
0
        static Unit _addFactor(UnitsFactors f, Unit u0, string abbrCyr, string abbrLat, string namesRu, string namesUa, string namesEn)
        {
            string prefCyr = null;
            string prefLat = null;
            string prefRu  = null;
            string prefUa  = null;
            string prefEn  = null;
            double mult    = (double)1;

            switch (f)
            {
            case UnitsFactors.Centi:
                prefCyr = "С";
                prefLat = "C";
                prefRu  = "САНТИ";
                prefUa  = "САНТИ";
                prefEn  = "CENTI";
                mult    = 0.1;
                break;

            case UnitsFactors.Deci:
                prefCyr = "Д";
                prefLat = "D";
                prefRu  = "ДЕЦИ";
                prefUa  = "ДЕЦИ";
                prefEn  = "DECI";
                mult    = 0.01;
                break;

            case UnitsFactors.Giga:
                prefCyr = "Г";
                prefLat = "G";
                prefRu  = "ГИГА";
                prefUa  = "ГІГА";
                prefEn  = "GIGA";
                mult    = 1000000000;
                break;

            case UnitsFactors.Kilo:
                prefCyr = "К";
                prefLat = "K";
                prefRu  = "КИЛО";
                prefUa  = "КІЛО";
                prefEn  = "KILO";
                mult    = 1000;
                break;

            case UnitsFactors.Mega:
                prefCyr = "М";
                prefLat = "M";
                prefRu  = "МЕГА";
                prefUa  = "МЕГА";
                prefEn  = "MEGA";
                mult    = 1000000;
                break;

            case UnitsFactors.Micro:
                prefCyr = "МК";
                prefLat = "MK";
                prefRu  = "МИКРО";
                prefUa  = "МІКРО";
                prefEn  = "MICRO";
                mult    = 0.0001;
                break;

            case UnitsFactors.Milli:
                prefCyr = "М";
                prefLat = "M";
                prefRu  = "МИЛЛИ";
                prefUa  = "МІЛІ";
                prefEn  = "MILLI";
                mult    = 0.001;
                break;

            case UnitsFactors.Nano:
                prefCyr = "Н";
                prefLat = "N";
                prefRu  = "НАНО";
                prefUa  = "НАНО";
                prefEn  = "NANO";
                mult    = 0.0000000001;
                break;

            case UnitsFactors.Pico:
                prefCyr = "П";
                prefLat = "P";
                prefRu  = "ПИКО";
                prefUa  = "ПІКО";
                prefEn  = "PICO";
                mult    = 0.0000000000001;
                break;

            case UnitsFactors.Tera:
                prefCyr = "Т";
                prefLat = "T";
                prefRu  = "ТЕРА";
                prefUa  = "ТЕРА";
                prefEn  = "TERA";
                mult    = 1000000000000;
                break;
            }
            Unit u = new Unit(prefCyr.ToLower() + u0.NameCyr, prefLat.ToLower() + u0.NameLat, prefRu.ToLower() + u0.FullnameCyr, prefEn.ToLower() + u0.FullnameLat)
            {
                Factor = f, BaseMultiplier = mult, BaseUnit = u0, Kind = u0.Kind, Keywords = u0.Keywords
            };

            if (f == UnitsFactors.Mega || f == UnitsFactors.Tera || f == UnitsFactors.Giga)
            {
                u.NameCyr = prefCyr + u0.NameCyr;
                u.NameLat = prefLat + u0.NameLat;
            }
            Units.Add(u);
            string[] nams = namesRu.Split(';');
            Pullenti.Ner.Core.Termin t = new Pullenti.Ner.Core.Termin(prefRu + nams[0])
            {
                Tag = u
            };
            for (int i = 1; i < nams.Length; i++)
            {
                if (!string.IsNullOrEmpty(nams[i]))
                {
                    t.AddVariant(prefRu + nams[i], false);
                }
            }
            foreach (string n in nams)
            {
                if (!string.IsNullOrEmpty(n))
                {
                    t.AddVariant(prefCyr + n, false);
                }
            }
            foreach (string n in namesUa.Split(';'))
            {
                if (!string.IsNullOrEmpty(n))
                {
                    t.AddVariant(prefUa + n, false);
                    t.AddVariant(prefCyr + n, false);
                }
            }
            foreach (string n in namesEn.Split(';'))
            {
                if (!string.IsNullOrEmpty(n))
                {
                    t.AddVariant(prefEn + n, false);
                    t.AddVariant(prefLat + n, false);
                }
            }
            foreach (string n in abbrCyr.Split(';'))
            {
                if (!string.IsNullOrEmpty(n))
                {
                    t.AddAbridge(prefCyr + n);
                }
            }
            foreach (string n in abbrLat.Split(';'))
            {
                if (!string.IsNullOrEmpty(n))
                {
                    t.AddAbridge(prefLat + n);
                }
            }
            Termins.Add(t);
            return(u);
        }
Пример #12
0
 public static void Initialize()
 {
     if (m_PhoneTermins != null)
     {
         return;
     }
     m_PhoneTermins = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin t;
     t = new Pullenti.Ner.Core.Termin("ТЕЛЕФОН", Pullenti.Morph.MorphLang.RU, true);
     t.AddAbridge("ТЕЛ.");
     t.AddAbridge("TEL.");
     t.AddAbridge("Т-Н");
     t.AddAbridge("Т.");
     t.AddAbridge("T.");
     t.AddAbridge("TEL.EXT.");
     t.AddVariant("ТЛФ", false);
     t.AddVariant("ТЛФН", false);
     t.AddAbridge("Т/Ф");
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("МОБИЛЬНЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Mobile
     };
     t.AddAbridge("МОБ.");
     t.AddAbridge("Т.М.");
     t.AddAbridge("М.Т.");
     t.AddAbridge("М.");
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("СОТОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Mobile
     };
     t.AddAbridge("СОТ.");
     t.AddAbridge("CELL.");
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("РАБОЧИЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Work
     };
     t.AddAbridge("РАБ.");
     t.AddAbridge("Т.Р.");
     t.AddAbridge("Р.Т.");
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ГОРОДСКОЙ", Pullenti.Morph.MorphLang.RU, true);
     t.AddAbridge("ГОР.");
     t.AddAbridge("Г.Т.");
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ДОМАШНИЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Home
     };
     t.AddAbridge("ДОМ.");
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("КОНТАКТНЫЙ", Pullenti.Morph.MorphLang.RU, true);
     t.AddVariant("КОНТАКТНЫЕ ДАННЫЕ", false);
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("МНОГОКАНАЛЬНЫЙ", Pullenti.Morph.MorphLang.RU, true);
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ФАКС", Pullenti.Morph.MorphLang.RU, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Fax
     };
     t.AddAbridge("Ф.");
     t.AddAbridge("Т/ФАКС");
     t.AddAbridge("ТЕЛ/ФАКС");
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЗВОНИТЬ", Pullenti.Morph.MorphLang.RU, true);
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ПРИЕМНАЯ", Pullenti.Morph.MorphLang.RU, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Work
     };
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("PHONE", Pullenti.Morph.MorphLang.EN, true);
     t.AddAbridge("PH.");
     t.AddVariant("TELEFON", true);
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("DIRECT LINE", Pullenti.Morph.MorphLang.EN, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Work
     };
     t.AddVariant("DIRECT LINES", true);
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("MOBILE", Pullenti.Morph.MorphLang.EN, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Mobile
     };
     t.AddAbridge("MOB.");
     t.AddVariant("MOBIL", true);
     t.AddAbridge("M.");
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("FAX", Pullenti.Morph.MorphLang.EN, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Fax
     };
     t.AddAbridge("F.");
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("HOME", Pullenti.Morph.MorphLang.EN, true)
     {
         Tag2 = Pullenti.Ner.Phone.PhoneKind.Home
     };
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("CALL", Pullenti.Morph.MorphLang.EN, true);
     t.AddVariant("SEDIU", true);
     m_PhoneTermins.Add(t);
     t     = new Pullenti.Ner.Core.Termin("ДОПОЛНИТЕЛЬНЫЙ", Pullenti.Morph.MorphLang.RU, true);
     t.Tag = t;
     t.AddAbridge("ДОП.");
     t.AddAbridge("EXT.");
     m_PhoneTermins.Add(t);
     t     = new Pullenti.Ner.Core.Termin("ДОБАВОЧНЫЙ", Pullenti.Morph.MorphLang.RU, true);
     t.Tag = t;
     t.AddAbridge("ДОБ.");
     t.AddAbridge("Д.");
     m_PhoneTermins.Add(t);
     t     = new Pullenti.Ner.Core.Termin("ВНУТРЕННИЙ", Pullenti.Morph.MorphLang.RU, true);
     t.Tag = t;
     t.AddAbridge("ВНУТР.");
     t.AddAbridge("ВН.");
     t.AddAbridge("ВНТ.");
     t.AddAbridge("Т.ВН.");
     m_PhoneTermins.Add(t);
     t     = new Pullenti.Ner.Core.Termin("TONE MODE", Pullenti.Morph.MorphLang.EN, true);
     t.Tag = t;
     m_PhoneTermins.Add(t);
     t     = new Pullenti.Ner.Core.Termin("TONE", Pullenti.Morph.MorphLang.EN, true);
     t.Tag = t;
     m_PhoneTermins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ADDITIONAL", Pullenti.Morph.MorphLang.EN, true);
     t.AddAbridge("ADD.");
     t.Tag = t;
     t.AddVariant("INTERNAL", true);
     t.AddAbridge("INT.");
     m_PhoneTermins.Add(t);
 }
Пример #13
0
 public static void Initialize()
 {
     m_StdTails    = new Pullenti.Ner.Core.TerminCollection();
     m_StdNames    = new Pullenti.Ner.Core.TerminCollection();
     m_VervotWords = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin t;
     t = new Pullenti.Ner.Core.Termin("INCORPORATED");
     t.AddAbridge("INC.");
     m_StdTails.Add(t);
     t = new Pullenti.Ner.Core.Termin("CORPORATION");
     t.AddAbridge("CORP.");
     m_StdTails.Add(t);
     t = new Pullenti.Ner.Core.Termin("LIMITED");
     t.AddAbridge("LTD.");
     m_StdTails.Add(t);
     t = new Pullenti.Ner.Core.Termin("AG");
     m_StdTails.Add(t);
     t = new Pullenti.Ner.Core.Termin("GMBH");
     m_StdTails.Add(t);
     foreach (string s in new string[] { "ЗАКАЗЧИК", "ИСПОЛНИТЕЛЬ", "РАЗРАБОТЧИК", "БЕНЕФИЦИАР", "ПОЛУЧАТЕЛЬ", "ОТПРАВИТЕЛЬ", "ИЗГОТОВИТЕЛЬ", "ПРОИЗВОДИТЕЛЬ", "ПОСТАВЩИК", "АБОНЕНТ", "КЛИЕНТ", "ВКЛАДЧИК", "СУБЪЕКТ", "ПРОДАВЕЦ", "ПОКУПАТЕЛЬ", "АРЕНДОДАТЕЛЬ", "АРЕНДАТОР", "СУБАРЕНДАТОР", "НАЙМОДАТЕЛЬ", "НАНИМАТЕЛЬ", "АГЕНТ", "ПРИНЦИПАЛ", "ПРОДАВЕЦ", "ПОСТАВЩИК", "ПОДРЯДЧИК", "СУБПОДРЯДЧИК" })
     {
         m_StdTails.Add(new Pullenti.Ner.Core.Termin(s)
         {
             Tag = s
         });
     }
     foreach (string s in new string[] { "ЗАМОВНИК", "ВИКОНАВЕЦЬ", "РОЗРОБНИК", "БЕНЕФІЦІАР", "ОДЕРЖУВАЧ", "ВІДПРАВНИК", "ВИРОБНИК", "ВИРОБНИК", "ПОСТАЧАЛЬНИК", "АБОНЕНТ", "КЛІЄНТ", "ВКЛАДНИК", "СУБ'ЄКТ", "ПРОДАВЕЦЬ", "ПОКУПЕЦЬ", "ОРЕНДОДАВЕЦЬ", "ОРЕНДАР", "СУБОРЕНДАР", "НАЙМОДАВЕЦЬ", "НАЙМАЧ", "АГЕНТ", "ПРИНЦИПАЛ", "ПРОДАВЕЦЬ", "ПОСТАЧАЛЬНИК", "ПІДРЯДНИК", "СУБПІДРЯДНИК" })
     {
         m_StdTails.Add(new Pullenti.Ner.Core.Termin(s, Pullenti.Morph.MorphLang.UA)
         {
             Tag = s
         });
     }
     t = new Pullenti.Ner.Core.Termin("РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ");
     t.AddAbridge("РАЗРАБОТКИ ПО");
     m_StdNames.Add(t);
     foreach (string s in new string[] { "СПЕЦИАЛЬНОСТЬ", "ДИАГНОЗ" })
     {
         m_VervotWords.Add(new Pullenti.Ner.Core.Termin(s));
     }
     foreach (string s in new string[] { "СПЕЦІАЛЬНІСТЬ", "ДІАГНОЗ" })
     {
         m_VervotWords.Add(new Pullenti.Ner.Core.Termin(s, Pullenti.Morph.MorphLang.UA));
     }
     m_StdNouns = new Pullenti.Ner.Core.TerminCollection();
     for (int k = 0; k < 2; k++)
     {
         string name = (k == 0 ? "NameNouns_ru.dat" : "NameNouns_ua.dat");
         byte[] dat  = ResourceHelper.GetBytes(name);
         if (dat == null)
         {
             throw new Exception(string.Format("Can't file resource file {0} in Organization analyzer", name));
         }
         string str = Encoding.UTF8.GetString(OrgItemTypeToken.Deflate(dat));
         foreach (string line0 in str.Split('\n'))
         {
             string line = line0.Trim();
             if (string.IsNullOrEmpty(line))
             {
                 continue;
             }
             if (k == 0)
             {
                 m_StdNouns.Add(new Pullenti.Ner.Core.Termin(line));
             }
             else
             {
                 m_StdNouns.Add(new Pullenti.Ner.Core.Termin(line)
                 {
                     Lang = Pullenti.Morph.MorphLang.UA
                 });
             }
         }
     }
 }
Пример #14
0
 public static void Initialize()
 {
     if (m_Termins != null)
     {
         return;
     }
     m_Termins = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin t;
     t = new Pullenti.Ner.Core.Termin("ЕЩЕ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.Still
     };
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("УЖЕ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.Already
     };
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ВСЕ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.All
     };
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЛЮБОЙ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.Any
     };
     t.AddVariant("ЛЮБОЙ", false);
     t.AddVariant("КАЖДЫЙ", false);
     t.AddVariant("ЧТО УГОДНО", false);
     t.AddVariant("ВСЯКИЙ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("НЕКОТОРЫЙ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.Some
     };
     t.AddVariant("НЕКИЙ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ДРУГОЙ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.Other
     };
     t.AddVariant("ИНОЙ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ВЕСЬ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.Whole
     };
     t.AddVariant("ЦЕЛИКОМ", false);
     t.AddVariant("ПОЛНОСТЬЮ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("ОЧЕНЬ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.Very
     };
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("МЕНЬШЕ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.Less
     };
     t.AddVariant("МЕНЕЕ", false);
     t.AddVariant("МЕНЕЕ", false);
     t.AddVariant("МЕНЬШЕ", false);
     m_Termins.Add(t);
     t = new Pullenti.Ner.Core.Termin("БОЛЬШЕ")
     {
         Tag = Pullenti.Semantic.SemAttributeType.Great
     };
     t.AddVariant("БОЛЕЕ", false);
     t.AddVariant("СВЫШЕ", false);
     m_Termins.Add(t);
 }
Пример #15
0
 public static void Initialize()
 {
     if (m_Ontology != null)
     {
         return;
     }
     m_Ontology = new Pullenti.Ner.Core.TerminCollection();
     Pullenti.Ner.Core.Termin t;
     t = new Pullenti.Ner.Core.Termin("BANK");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Public Limited Company".ToUpper())
     {
         Acronym = "PLC"
     };
     t.AddAbridge("P.L.C.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Limited Liability Company".ToUpper())
     {
         Acronym = "LLC"
     };
     t.AddAbridge("L.L.C.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Limited Liability Partnership".ToUpper())
     {
         Acronym = "LLP"
     };
     t.AddAbridge("L.L.P.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Limited Liability Limited Partnership".ToUpper())
     {
         Acronym = "LLLP"
     };
     t.AddAbridge("L.L.L.P.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Limited Duration Company".ToUpper())
     {
         Acronym = "LDC"
     };
     t.AddAbridge("L.D.C.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("International Business Company".ToUpper())
     {
         Acronym = "IBC"
     };
     t.AddAbridge("I.B.S.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Joint stock company".ToUpper())
     {
         Acronym = "JSC"
     };
     t.AddAbridge("J.S.C.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Open Joint stock company".ToUpper())
     {
         Acronym = "OJSC"
     };
     t.AddAbridge("O.J.S.C.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Sosiedad Anonima".ToUpper())
     {
         Acronym = "SA"
     };
     t.AddVariant("Sociedad Anonima".ToUpper(), false);
     t.AddAbridge("S.A.");
     t.AddVariant("SPA", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Société en commandite".ToUpper())
     {
         Acronym = "SC"
     };
     t.AddAbridge("S.C.");
     t.AddVariant("SCS", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Societas Europaea".ToUpper())
     {
         Acronym = "SE"
     };
     t.AddAbridge("S.E.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Società in accomandita".ToUpper())
     {
         Acronym = "SAS"
     };
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Société en commandite par actions".ToUpper())
     {
         Acronym = "SCA"
     };
     t.AddAbridge("S.C.A.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Société en nom collectif".ToUpper())
     {
         Acronym = "SNC"
     };
     t.AddVariant("Società in nome collettivo".ToUpper(), false);
     t.AddAbridge("S.N.C.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("General Partnership".ToUpper())
     {
         Acronym = "GP"
     };
     t.AddVariant("General Partners", false);
     t.AddAbridge("G.P.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Limited Partnership".ToUpper())
     {
         Acronym = "LP"
     };
     t.AddAbridge("L.P.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Kommanditaktiengesellschaft".ToUpper())
     {
         Acronym = "KGAA"
     };
     t.AddVariant("KOMMAG", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Societe a Responsidilite Limitee".ToUpper())
     {
         Acronym = "SRL"
     };
     t.AddAbridge("S.A.R.L.");
     t.AddAbridge("S.R.L.");
     t.AddVariant("SARL", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Società a garanzia limitata".ToUpper())
     {
         Acronym = "SAGL"
     };
     t.AddAbridge("S.A.G.L.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Società limitata".ToUpper())
     {
         Acronym = "SL"
     };
     t.AddAbridge("S.L.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Vennootschap Met Beperkte Aansparkelij kheid".ToUpper())
     {
         Acronym = "BV"
     };
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Vennootschap Met Beperkte Aansparkelij".ToUpper())
     {
         Acronym = "AVV"
     };
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Naamlose Vennootschap".ToUpper())
     {
         Acronym = "NV"
     };
     t.AddAbridge("N.V.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Gesellschaft mit beschrakter Haftung".ToUpper())
     {
         Acronym = "GMBH"
     };
     t.AddVariant("ГМБХ", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Aktiengesellschaft".ToUpper())
     {
         Acronym = "AG"
     };
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("International Company".ToUpper())
     {
         Acronym = "IC"
     };
     t.AddAbridge("I.C.");
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("And Company".ToUpper());
     t.AddVariant("& Company", false);
     t.AddVariant("& Co", false);
     t.AddVariant("& Company", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Kollektivgesellschaft".ToUpper())
     {
         Acronym = "KG"
     };
     t.AddAbridge("K.G.");
     t.AddVariant("OHG", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("Kommanditgesellschaft".ToUpper())
     {
         Acronym = "KG"
     };
     t.AddVariant("KOMMG", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("LIMITED");
     t.AddAbridge("LTD");
     t.AddVariant("LTD", false);
     t.AddVariant("ЛИМИТЕД", false);
     t.AddVariant("ЛТД", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("PRIVATE LIMITED");
     t.AddVariant("PTE LTD", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("INCORPORATED");
     t.AddAbridge("INC");
     t.AddVariant("INC", false);
     t.AddVariant("ИНКОРПОРЕЙТЕД", false);
     t.AddVariant("ИНК", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("CORPORATION");
     t.AddVariant("CO", false);
     t.AddVariant("СО", false);
     t.AddVariant("КОРПОРЕЙШН", false);
     t.AddVariant("КОРПОРЕЙШЕН", false);
     m_Ontology.Add(t);
     t = new Pullenti.Ner.Core.Termin("COMPANY");
     m_Ontology.Add(t);
 }
Пример #16
0
 internal static void Initialize()
 {
     if (m_Postfixes != null)
     {
         return;
     }
     Pullenti.Ner.Core.Termin t;
     m_Postfixes = new Pullenti.Ner.Core.TerminCollection();
     t           = new Pullenti.Ner.Core.Termin("КВАДРАТНЫЙ МЕТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "кв.м.", Tag = Pullenti.Ner.Core.NumberExType.Meter2
     };
     t.AddAbridge("КВ.МЕТР");
     t.AddAbridge("КВ.МЕТРА");
     t.AddAbridge("КВ.М.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КВАДРАТНИЙ МЕТР", Pullenti.Morph.MorphLang.UA, true)
     {
         CanonicText = "КВ.М.", Tag = Pullenti.Ner.Core.NumberExType.Meter2
     };
     t.AddAbridge("КВ.МЕТР");
     t.AddAbridge("КВ.МЕТРА");
     t.AddAbridge("КВ.М.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КВАДРАТНЫЙ КИЛОМЕТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "кв.км.", Tag = Pullenti.Ner.Core.NumberExType.Kilometer2
     };
     t.AddVariant("КВАДРАТНИЙ КІЛОМЕТР", true);
     t.AddAbridge("КВ.КМ.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ГЕКТАР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "га", Tag = Pullenti.Ner.Core.NumberExType.Gektar
     };
     t.AddAbridge("ГА");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("АР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "ар", Tag = Pullenti.Ner.Core.NumberExType.Ar
     };
     t.AddVariant("СОТКА", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КУБИЧЕСКИЙ МЕТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "куб.м.", Tag = Pullenti.Ner.Core.NumberExType.Meter3
     };
     t.AddVariant("КУБІЧНИЙ МЕТР", true);
     t.AddAbridge("КУБ.МЕТР");
     t.AddAbridge("КУБ.М.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МЕТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "м.", Tag = Pullenti.Ner.Core.NumberExType.Meter
     };
     t.AddAbridge("М.");
     t.AddAbridge("M.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МЕТРОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "м.", Tag = Pullenti.Ner.Core.NumberExType.Meter
     };
     t.AddVariant("МЕТРОВИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МИЛЛИМЕТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "мм.", Tag = Pullenti.Ner.Core.NumberExType.Millimeter
     };
     t.AddAbridge("ММ");
     t.AddAbridge("MM");
     t.AddVariant("МІЛІМЕТР", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МИЛЛИМЕТРОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "мм.", Tag = Pullenti.Ner.Core.NumberExType.Millimeter
     };
     t.AddVariant("МІЛІМЕТРОВИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("САНТИМЕТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "см.", Tag = Pullenti.Ner.Core.NumberExType.Santimeter
     };
     t.AddAbridge("СМ");
     t.AddAbridge("CM");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("САНТИМЕТРОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "см.", Tag = Pullenti.Ner.Core.NumberExType.Santimeter
     };
     t.AddVariant("САНТИМЕТРОВИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КВАДРАТНЫЙ САНТИМЕТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "кв.см.", Tag = Pullenti.Ner.Core.NumberExType.Santimeter2
     };
     t.AddVariant("КВАДРАТНИЙ САНТИМЕТР", true);
     t.AddAbridge("КВ.СМ.");
     t.AddAbridge("СМ.КВ.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КУБИЧЕСКИЙ САНТИМЕТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "куб.см.", Tag = Pullenti.Ner.Core.NumberExType.Santimeter3
     };
     t.AddVariant("КУБІЧНИЙ САНТИМЕТР", true);
     t.AddAbridge("КУБ.САНТИМЕТР");
     t.AddAbridge("КУБ.СМ.");
     t.AddAbridge("СМ.КУБ.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КИЛОМЕТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "км.", Tag = Pullenti.Ner.Core.NumberExType.Kilometer
     };
     t.AddAbridge("КМ");
     t.AddAbridge("KM");
     t.AddVariant("КІЛОМЕТР", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КИЛОМЕТРОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "км.", Tag = Pullenti.Ner.Core.NumberExType.Kilometer
     };
     t.AddVariant("КІЛОМЕТРОВИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МИЛЯ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "миль", Tag = Pullenti.Ner.Core.NumberExType.Kilometer
     };
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ГРАММ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "гр.", Tag = Pullenti.Ner.Core.NumberExType.Gramm
     };
     t.AddAbridge("ГР");
     t.AddAbridge("Г");
     t.AddVariant("ГРАМ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ГРАММОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "гр.", Tag = Pullenti.Ner.Core.NumberExType.Gramm
     };
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КИЛОГРАММ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "кг.", Tag = Pullenti.Ner.Core.NumberExType.Kilogram
     };
     t.AddAbridge("КГ");
     t.AddVariant("КІЛОГРАМ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КИЛОГРАММОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "кг.", Tag = Pullenti.Ner.Core.NumberExType.Kilogram
     };
     t.AddVariant("КІЛОГРАМОВИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МИЛЛИГРАММ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "мг.", Tag = Pullenti.Ner.Core.NumberExType.Milligram
     };
     t.AddAbridge("МГ");
     t.AddVariant("МІЛІГРАМ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МИЛЛИГРАММОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "мг.", Tag = Pullenti.Ner.Core.NumberExType.Milligram
     };
     t.AddVariant("МИЛЛИГРАМОВЫЙ", true);
     t.AddVariant("МІЛІГРАМОВИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ТОННА", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "т.", Tag = Pullenti.Ner.Core.NumberExType.Tonna
     };
     t.AddAbridge("Т");
     t.AddAbridge("T");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ТОННЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "т.", Tag = Pullenti.Ner.Core.NumberExType.Tonna
     };
     t.AddVariant("ТОННИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЛИТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "л.", Tag = Pullenti.Ner.Core.NumberExType.Litr
     };
     t.AddAbridge("Л");
     t.AddVariant("ЛІТР", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЛИТРОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "л.", Tag = Pullenti.Ner.Core.NumberExType.Litr
     };
     t.AddVariant("ЛІТРОВИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МИЛЛИЛИТР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "мл.", Tag = Pullenti.Ner.Core.NumberExType.Millilitr
     };
     t.AddAbridge("МЛ");
     t.AddVariant("МІЛІЛІТР", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МИЛЛИЛИТРОВЫЙ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "мл.", Tag = Pullenti.Ner.Core.NumberExType.Millilitr
     };
     t.AddVariant("МІЛІЛІТРОВИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ЧАС", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "ч.", Tag = Pullenti.Ner.Core.NumberExType.Hour
     };
     t.AddAbridge("Ч.");
     t.AddVariant("ГОДИНА", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МИНУТА", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "мин.", Tag = Pullenti.Ner.Core.NumberExType.Minute
     };
     t.AddAbridge("МИН.");
     t.AddVariant("ХВИЛИНА", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("СЕКУНДА", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "сек.", Tag = Pullenti.Ner.Core.NumberExType.Second
     };
     t.AddAbridge("СЕК.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ГОД", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "г.", Tag = Pullenti.Ner.Core.NumberExType.Year
     };
     t.AddAbridge("Г.");
     t.AddAbridge("ЛЕТ");
     t.AddVariant("ЛЕТНИЙ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("МЕСЯЦ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "мес.", Tag = Pullenti.Ner.Core.NumberExType.Month
     };
     t.AddAbridge("МЕС.");
     t.AddVariant("МЕСЯЧНЫЙ", true);
     t.AddVariant("КАЛЕНДАРНЫЙ МЕСЯЦ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ДЕНЬ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "дн.", Tag = Pullenti.Ner.Core.NumberExType.Day
     };
     t.AddAbridge("ДН.");
     t.AddVariant("ДНЕВНЫЙ", true);
     t.AddVariant("СУТКИ", true);
     t.AddVariant("СУТОЧНЫЙ", true);
     t.AddVariant("КАЛЕНДАРНЫЙ ДЕНЬ", true);
     t.AddVariant("РАБОЧИЙ ДЕНЬ", true);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("НЕДЕЛЯ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "нед.", Tag = Pullenti.Ner.Core.NumberExType.Week
     };
     t.AddVariant("НЕДЕЛЬНЫЙ", true);
     t.AddVariant("КАЛЕНДАРНАЯ НЕДЕЛЯ", false);
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ПРОЦЕНТ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "%", Tag = Pullenti.Ner.Core.NumberExType.Percent
     };
     t.AddVariant("%", false);
     t.AddVariant("ПРОЦ", true);
     t.AddAbridge("ПРОЦ.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ШТУКА", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "шт.", Tag = Pullenti.Ner.Core.NumberExType.Shuk
     };
     t.AddVariant("ШТ", false);
     t.AddAbridge("ШТ.");
     t.AddAbridge("ШТ-К");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("УПАКОВКА", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "уп.", Tag = Pullenti.Ner.Core.NumberExType.Upak
     };
     t.AddVariant("УПАК", true);
     t.AddVariant("УП", true);
     t.AddAbridge("УПАК.");
     t.AddAbridge("УП.");
     t.AddAbridge("УП-КА");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("РУЛОН", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "рулон", Tag = Pullenti.Ner.Core.NumberExType.Rulon
     };
     t.AddVariant("РУЛ", true);
     t.AddAbridge("РУЛ.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("НАБОР", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "набор", Tag = Pullenti.Ner.Core.NumberExType.Nabor
     };
     t.AddVariant("НАБ", true);
     t.AddAbridge("НАБ.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("КОМПЛЕКТ", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "компл.", Tag = Pullenti.Ner.Core.NumberExType.Komplekt
     };
     t.AddVariant("КОМПЛ", true);
     t.AddAbridge("КОМПЛ.");
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ПАРА", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "пар", Tag = Pullenti.Ner.Core.NumberExType.Para
     };
     m_Postfixes.Add(t);
     t = new Pullenti.Ner.Core.Termin("ФЛАКОН", Pullenti.Morph.MorphLang.RU, true)
     {
         CanonicText = "флак.", Tag = Pullenti.Ner.Core.NumberExType.Flakon
     };
     t.AddVariant("ФЛ", true);
     t.AddAbridge("ФЛ.");
     t.AddVariant("ФЛАК", true);
     t.AddAbridge("ФЛАК.");
     m_Postfixes.Add(t);
     foreach (Pullenti.Ner.Core.Termin te in m_Postfixes.Termins)
     {
         Pullenti.Ner.Core.NumberExType ty = (Pullenti.Ner.Core.NumberExType)te.Tag;
         if (!m_NormalsTyps.ContainsKey(ty))
         {
             m_NormalsTyps.Add(ty, te.CanonicText);
         }
     }
     m_SmallMoney = new Pullenti.Ner.Core.TerminCollection();
     t            = new Pullenti.Ner.Core.Termin("УСЛОВНАЯ ЕДИНИЦА")
     {
         CanonicText = "УЕ", Tag = Pullenti.Ner.Core.NumberExType.Money
     };
     t.AddAbridge("У.Е.");
     t.AddAbridge("У.E.");
     t.AddAbridge("Y.Е.");
     t.AddAbridge("Y.E.");
     m_Postfixes.Add(t);
     for (int k = 0; k < 3; k++)
     {
         string str = ResourceHelper.GetString((k == 0 ? "Money.csv" : (k == 1 ? "MoneyUA.csv" : "MoneyEN.csv")));
         if (str == null)
         {
             continue;
         }
         Pullenti.Morph.MorphLang lang = (k == 0 ? Pullenti.Morph.MorphLang.RU : (k == 1 ? Pullenti.Morph.MorphLang.UA : Pullenti.Morph.MorphLang.EN));
         if (str == null)
         {
             continue;
         }
         foreach (string line0 in str.Split('\n'))
         {
             string line = line0.Trim();
             if (string.IsNullOrEmpty(line))
             {
                 continue;
             }
             string[] parts = line.ToUpper().Split(';');
             if (parts == null || parts.Length != 5)
             {
                 continue;
             }
             if (string.IsNullOrEmpty(parts[1]) || string.IsNullOrEmpty(parts[2]))
             {
                 continue;
             }
             t = new Pullenti.Ner.Core.Termin();
             t.InitByNormalText(parts[1], lang);
             t.CanonicText = parts[2];
             t.Acronym     = parts[2];
             t.Tag         = Pullenti.Ner.Core.NumberExType.Money;
             foreach (string p in parts[0].Split(','))
             {
                 if (p != parts[1])
                 {
                     Pullenti.Ner.Core.Termin t0 = new Pullenti.Ner.Core.Termin();
                     t0.InitByNormalText(p, null);
                     t.AddVariantTerm(t0);
                 }
             }
             if (parts[1] == "РУБЛЬ")
             {
                 t.AddAbridge("РУБ.");
             }
             else if (parts[1] == "ГРИВНЯ" || parts[1] == "ГРИВНА")
             {
                 t.AddAbridge("ГРН.");
             }
             else if (parts[1] == "ДОЛЛАР")
             {
                 t.AddAbridge("ДОЛ.");
                 t.AddAbridge("ДОЛЛ.");
             }
             else if (parts[1] == "ДОЛАР")
             {
                 t.AddAbridge("ДОЛ.");
             }
             else if (parts[1] == "ИЕНА")
             {
                 t.AddVariant("ЙЕНА", false);
             }
             m_Postfixes.Add(t);
             if (string.IsNullOrEmpty(parts[3]))
             {
                 continue;
             }
             int num = 0;
             int i   = parts[3].IndexOf(' ');
             if (i < 2)
             {
                 continue;
             }
             if (!int.TryParse(parts[3].Substring(0, i), out num))
             {
                 continue;
             }
             string vv = parts[3].Substring(i).Trim();
             t = new Pullenti.Ner.Core.Termin();
             t.InitByNormalText(parts[4], lang);
             t.Tag = num;
             if (vv != parts[4])
             {
                 Pullenti.Ner.Core.Termin t0 = new Pullenti.Ner.Core.Termin();
                 t0.InitByNormalText(vv, null);
                 t.AddVariantTerm(t0);
             }
             if (parts[4] == "КОПЕЙКА" || parts[4] == "КОПІЙКА")
             {
                 t.AddAbridge("КОП.");
             }
             m_SmallMoney.Add(t);
         }
     }
 }
Пример #17
0
        internal static TitlePageReferent _process(Pullenti.Ner.Token begin, int maxCharPos, Pullenti.Ner.Core.AnalysisKit kit, out Pullenti.Ner.Token endToken)
        {
            endToken = begin;
            TitlePageReferent res = new TitlePageReferent();

            Pullenti.Ner.Core.Termin term = null;
            List <Pullenti.Ner.Titlepage.Internal.Line> lines = Pullenti.Ner.Titlepage.Internal.Line.Parse(begin, 30, 1500, maxCharPos);

            if (lines.Count < 1)
            {
                return(null);
            }
            int cou = lines.Count;
            int minNewlinesCount = 10;
            Dictionary <int, int> linesCountStat = new Dictionary <int, int>();

            for (int i = 0; i < lines.Count; i++)
            {
                if (Pullenti.Ner.Titlepage.Internal.TitleNameToken.CanBeStartOfTextOrContent(lines[i].BeginToken, lines[i].EndToken))
                {
                    cou = i;
                    break;
                }
                int j = lines[i].NewlinesBeforeCount;
                if (i > 0 && j > 0)
                {
                    if (!linesCountStat.ContainsKey(j))
                    {
                        linesCountStat.Add(j, 1);
                    }
                    else
                    {
                        linesCountStat[j]++;
                    }
                }
            }
            int max = 0;

            foreach (KeyValuePair <int, int> kp in linesCountStat)
            {
                if (kp.Value > max)
                {
                    max = kp.Value;
                    minNewlinesCount = kp.Key;
                }
            }
            int endChar = (cou > 0 ? lines[cou - 1].EndChar : 0);

            if (maxCharPos > 0 && endChar > maxCharPos)
            {
                endChar = maxCharPos;
            }
            List <Pullenti.Ner.Titlepage.Internal.TitleNameToken> names = new List <Pullenti.Ner.Titlepage.Internal.TitleNameToken>();

            for (int i = 0; i < cou; i++)
            {
                if (i == 6)
                {
                }
                for (int j = i; (j < cou) && (j < (i + 5)); j++)
                {
                    if (i == 6 && j == 8)
                    {
                    }
                    if (j > i)
                    {
                        if (lines[j - 1].IsPureEn && lines[j].IsPureRu)
                        {
                            break;
                        }
                        if (lines[j - 1].IsPureRu && lines[j].IsPureEn)
                        {
                            break;
                        }
                        if (lines[j].NewlinesBeforeCount >= (minNewlinesCount * 2))
                        {
                            break;
                        }
                    }
                    Pullenti.Ner.Titlepage.Internal.TitleNameToken ttt = Pullenti.Ner.Titlepage.Internal.TitleNameToken.TryParse(lines[i].BeginToken, lines[j].EndToken, minNewlinesCount);
                    if (ttt != null)
                    {
                        if (lines[i].IsPureEn)
                        {
                            ttt.Morph.Language = Pullenti.Morph.MorphLang.EN;
                        }
                        else if (lines[i].IsPureRu)
                        {
                            ttt.Morph.Language = Pullenti.Morph.MorphLang.RU;
                        }
                        names.Add(ttt);
                    }
                }
            }
            Pullenti.Ner.Titlepage.Internal.TitleNameToken.Sort(names);
            Pullenti.Ner.ReferentToken nameRt = null;
            if (names.Count > 0)
            {
                int i0 = 0;
                if (names[i0].Morph.Language.IsEn)
                {
                    for (int ii = 1; ii < names.Count; ii++)
                    {
                        if (names[ii].Morph.Language.IsRu && names[ii].Rank > 0)
                        {
                            i0 = ii;
                            break;
                        }
                    }
                }
                term = res.AddName(names[i0].BeginNameToken, names[i0].EndNameToken);
                if (names[i0].TypeValue != null)
                {
                    res.AddType(names[i0].TypeValue);
                }
                if (names[i0].Speciality != null)
                {
                    res.Speciality = names[i0].Speciality;
                }
                Pullenti.Ner.ReferentToken rt = new Pullenti.Ner.ReferentToken(res, names[i0].BeginToken, names[i0].EndToken);
                if (kit != null)
                {
                    kit.EmbedToken(rt);
                }
                else
                {
                    res.AddOccurence(new Pullenti.Ner.TextAnnotation(rt.BeginToken, rt.EndToken));
                }
                endToken = rt.EndToken;
                nameRt   = rt;
                if (begin.BeginChar == rt.BeginChar)
                {
                    begin = rt;
                }
            }
            if (term != null && kit != null)
            {
                for (Pullenti.Ner.Token t = kit.FirstToken; t != null; t = t.Next)
                {
                    Pullenti.Ner.Core.TerminToken tok = term.TryParse(t, Pullenti.Ner.Core.TerminParseAttr.No);
                    if (tok == null)
                    {
                        continue;
                    }
                    Pullenti.Ner.Token t0 = t;
                    Pullenti.Ner.Token t1 = tok.EndToken;
                    if (t1.Next != null && t1.Next.IsChar('.'))
                    {
                        t1 = t1.Next;
                    }
                    if (Pullenti.Ner.Core.BracketHelper.CanBeStartOfSequence(t0.Previous, false, false) && Pullenti.Ner.Core.BracketHelper.CanBeEndOfSequence(t1.Next, false, null, false))
                    {
                        t0 = t0.Previous;
                        t1 = t1.Next;
                    }
                    Pullenti.Ner.ReferentToken rt = new Pullenti.Ner.ReferentToken(res, t0, t1);
                    kit.EmbedToken(rt);
                    t = rt;
                }
            }
            Pullenti.Ner.Titlepage.Internal.PersonRelations             pr        = new Pullenti.Ner.Titlepage.Internal.PersonRelations();
            Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types        persTyp   = Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined;
            List <Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types> persTypes = pr.RelTypes;

            for (Pullenti.Ner.Token t = begin; t != null; t = t.Next)
            {
                if (maxCharPos > 0 && t.BeginChar > maxCharPos)
                {
                    break;
                }
                if (t == nameRt)
                {
                    continue;
                }
                Pullenti.Ner.Titlepage.Internal.TitleItemToken tpt = Pullenti.Ner.Titlepage.Internal.TitleItemToken.TryAttach(t);
                if (tpt != null)
                {
                    persTyp = Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined;
                    if (tpt.Typ == Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Typ)
                    {
                        if (res.Types.Count == 0)
                        {
                            res.AddType(tpt.Value);
                        }
                        else if (res.Types.Count == 1)
                        {
                            string ty = res.Types[0].ToUpper();
                            if (ty == "РЕФЕРАТ")
                            {
                                res.AddType(tpt.Value);
                            }
                            else if (ty == "АВТОРЕФЕРАТ")
                            {
                                if (tpt.Value == "КАНДИДАТСКАЯ ДИССЕРТАЦИЯ")
                                {
                                    res.AddSlot(TitlePageReferent.ATTR_TYPE, "автореферат кандидатской диссертации", true, 0);
                                }
                                else if (tpt.Value == "ДОКТОРСКАЯ ДИССЕРТАЦИЯ")
                                {
                                    res.AddSlot(TitlePageReferent.ATTR_TYPE, "автореферат докторской диссертации", true, 0);
                                }
                                else if (tpt.Value == "МАГИСТЕРСКАЯ ДИССЕРТАЦИЯ")
                                {
                                    res.AddSlot(TitlePageReferent.ATTR_TYPE, "автореферат магистерской диссертации", true, 0);
                                }
                                else if (tpt.Value == "КАНДИДАТСЬКА ДИСЕРТАЦІЯ")
                                {
                                    res.AddSlot(TitlePageReferent.ATTR_TYPE, "автореферат кандидатської дисертації", true, 0);
                                }
                                else if (tpt.Value == "ДОКТОРСЬКА ДИСЕРТАЦІЯ")
                                {
                                    res.AddSlot(TitlePageReferent.ATTR_TYPE, "автореферат докторської дисертації", true, 0);
                                }
                                else if (tpt.Value == "МАГІСТЕРСЬКА ДИСЕРТАЦІЯ")
                                {
                                    res.AddSlot(TitlePageReferent.ATTR_TYPE, "автореферат магістерської дисертації", true, 0);
                                }
                                else
                                {
                                    res.AddType(tpt.Value);
                                }
                            }
                            else if (tpt.Value == "РЕФЕРАТ" || tpt.Value == "АВТОРЕФЕРАТ")
                            {
                                if (!ty.Contains(tpt.Value))
                                {
                                    res.AddType(tpt.Value);
                                }
                            }
                        }
                    }
                    else if (tpt.Typ == Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Speciality)
                    {
                        if (res.Speciality == null)
                        {
                            res.Speciality = tpt.Value;
                        }
                    }
                    else if (persTypes.Contains(tpt.Typ))
                    {
                        persTyp = tpt.Typ;
                    }
                    t = tpt.EndToken;
                    if (t.EndChar > endToken.EndChar)
                    {
                        endToken = t;
                    }
                    if (t.Next != null && t.Next.IsCharOf(":-"))
                    {
                        t = t.Next;
                    }
                    continue;
                }
                if (t.EndChar > endChar)
                {
                    break;
                }
                List <Pullenti.Ner.Referent> rli = t.GetReferents();
                if (rli == null)
                {
                    continue;
                }
                if (!t.IsNewlineBefore && (t.Previous is Pullenti.Ner.TextToken))
                {
                    string s = (t.Previous as Pullenti.Ner.TextToken).Term;
                    if (s == "ИМЕНИ" || s == "ИМ")
                    {
                        continue;
                    }
                    if (s == "." && t.Previous.Previous != null && t.Previous.Previous.IsValue("ИМ", null))
                    {
                        continue;
                    }
                }
                foreach (Pullenti.Ner.Referent r in rli)
                {
                    if (r is Pullenti.Ner.Person.PersonReferent)
                    {
                        if (r != rli[0])
                        {
                            continue;
                        }
                        Pullenti.Ner.Person.PersonReferent p = r as Pullenti.Ner.Person.PersonReferent;
                        if (persTyp != Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined)
                        {
                            if (t.Previous != null && t.Previous.IsChar('.'))
                            {
                                persTyp = Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined;
                            }
                        }
                        Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types typ = pr.CalcTypFromAttrs(p);
                        if (typ != Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined)
                        {
                            pr.Add(p, typ, 1);
                            persTyp = typ;
                        }
                        else if (persTyp != Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined)
                        {
                            pr.Add(p, persTyp, 1);
                        }
                        else if (t.Previous != null && t.Previous.IsChar('©'))
                        {
                            persTyp = Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Worker;
                            pr.Add(p, persTyp, 1);
                        }
                        else
                        {
                            for (Pullenti.Ner.Token tt = t.Next; tt != null; tt = tt.Next)
                            {
                                Pullenti.Ner.Referent rr = tt.GetReferent();
                                if (rr == res)
                                {
                                    persTyp = Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Worker;
                                    break;
                                }
                                if (rr is Pullenti.Ner.Person.PersonReferent)
                                {
                                    if (pr.CalcTypFromAttrs(r as Pullenti.Ner.Person.PersonReferent) != Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        continue;
                                    }
                                }
                                if (rr != null)
                                {
                                    break;
                                }
                                tpt = Pullenti.Ner.Titlepage.Internal.TitleItemToken.TryAttach(tt);
                                if (tpt != null)
                                {
                                    if (tpt.Typ != Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Typ && tpt.Typ != Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.TypAndTheme)
                                    {
                                        break;
                                    }
                                    tt = tpt.EndToken;
                                    if (tt.EndChar > endToken.EndChar)
                                    {
                                        endToken = tt;
                                    }
                                    continue;
                                }
                            }
                            if (persTyp == Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined)
                            {
                                for (Pullenti.Ner.Token tt = t.Previous; tt != null; tt = tt.Previous)
                                {
                                    Pullenti.Ner.Referent rr = tt.GetReferent();
                                    if (rr == res)
                                    {
                                        persTyp = Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Worker;
                                        break;
                                    }
                                    if (rr != null)
                                    {
                                        break;
                                    }
                                    if ((tt.IsValue("СТУДЕНТ", null) || tt.IsValue("СТУДЕНТКА", null) || tt.IsValue("СЛУШАТЕЛЬ", null)) || tt.IsValue("ДИПЛОМНИК", null) || tt.IsValue("ИСПОЛНИТЕЛЬ", null))
                                    {
                                        persTyp = Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Worker;
                                        break;
                                    }
                                    tpt = Pullenti.Ner.Titlepage.Internal.TitleItemToken.TryAttach(tt);
                                    if (tpt != null && tpt.Typ != Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Typ)
                                    {
                                        break;
                                    }
                                }
                            }
                            if (persTyp != Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined)
                            {
                                pr.Add(p, persTyp, 1);
                            }
                            else
                            {
                                pr.Add(p, persTyp, (float)0.5);
                            }
                            if (t.EndChar > endToken.EndChar)
                            {
                                endToken = t;
                            }
                        }
                        continue;
                    }
                    if (r == rli[0])
                    {
                        persTyp = Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined;
                    }
                    if (r is Pullenti.Ner.Date.DateReferent)
                    {
                        if (res.Date == null)
                        {
                            res.Date = r as Pullenti.Ner.Date.DateReferent;
                            if (t.EndChar > endToken.EndChar)
                            {
                                endToken = t;
                            }
                        }
                    }
                    else if (r is Pullenti.Ner.Geo.GeoReferent)
                    {
                        if (res.City == null && (r as Pullenti.Ner.Geo.GeoReferent).IsCity)
                        {
                            res.City = r as Pullenti.Ner.Geo.GeoReferent;
                            if (t.EndChar > endToken.EndChar)
                            {
                                endToken = t;
                            }
                        }
                    }
                    if (r is Pullenti.Ner.Org.OrganizationReferent)
                    {
                        Pullenti.Ner.Org.OrganizationReferent org = r as Pullenti.Ner.Org.OrganizationReferent;
                        if (org.Types.Contains("курс") && org.Number != null)
                        {
                            int i;
                            if (int.TryParse(org.Number, out i))
                            {
                                if (i > 0 && (i < 8))
                                {
                                    res.StudentYear = i;
                                }
                            }
                        }
                        for (; org.Higher != null; org = org.Higher)
                        {
                            if (org.Kind != Pullenti.Ner.Org.OrganizationKind.Department)
                            {
                                break;
                            }
                        }
                        if (org.Kind != Pullenti.Ner.Org.OrganizationKind.Department)
                        {
                            if (res.Org == null)
                            {
                                res.Org = org;
                            }
                            else if (Pullenti.Ner.Org.OrganizationReferent.CanBeHigher(res.Org, org))
                            {
                                res.Org = org;
                            }
                        }
                        if (t.EndChar > endToken.EndChar)
                        {
                            endToken = t;
                        }
                    }
                    if ((r is Pullenti.Ner.Uri.UriReferent) || (r is Pullenti.Ner.Geo.GeoReferent))
                    {
                        if (t.EndChar > endToken.EndChar)
                        {
                            endToken = t;
                        }
                    }
                }
            }
            foreach (Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types ty in persTypes)
            {
                foreach (Pullenti.Ner.Person.PersonReferent p in pr.GetPersons(ty))
                {
                    if (pr.GetAttrNameForType(ty) != null)
                    {
                        res.AddSlot(pr.GetAttrNameForType(ty), p, false, 0);
                    }
                }
            }
            if (res.GetSlotValue(TitlePageReferent.ATTR_AUTHOR) == null)
            {
                foreach (Pullenti.Ner.Person.PersonReferent p in pr.GetPersons(Pullenti.Ner.Titlepage.Internal.TitleItemToken.Types.Undefined))
                {
                    res.AddSlot(TitlePageReferent.ATTR_AUTHOR, p, false, 0);
                    break;
                }
            }
            if (res.City == null && res.Org != null)
            {
                Pullenti.Ner.Slot s = res.Org.FindSlot(Pullenti.Ner.Org.OrganizationReferent.ATTR_GEO, null, true);
                if (s != null && (s.Value is Pullenti.Ner.Geo.GeoReferent))
                {
                    if ((s.Value as Pullenti.Ner.Geo.GeoReferent).IsCity)
                    {
                        res.City = s.Value as Pullenti.Ner.Geo.GeoReferent;
                    }
                }
            }
            if (res.Date == null)
            {
                for (Pullenti.Ner.Token t = begin; t != null && t.EndChar <= endChar; t = t.Next)
                {
                    Pullenti.Ner.Geo.GeoReferent city = t.GetReferent() as Pullenti.Ner.Geo.GeoReferent;
                    if (city == null)
                    {
                        continue;
                    }
                    if (t.Next is Pullenti.Ner.TextToken)
                    {
                        if (t.Next.IsCharOf(":,") || t.Next.IsHiphen)
                        {
                            t = t.Next;
                        }
                    }
                    Pullenti.Ner.ReferentToken rt = t.Kit.ProcessReferent(Pullenti.Ner.Date.DateAnalyzer.ANALYZER_NAME, t.Next);
                    if (rt != null)
                    {
                        rt.SaveToLocalOntology();
                        res.Date = rt.Referent as Pullenti.Ner.Date.DateReferent;
                        if (kit != null)
                        {
                            kit.EmbedToken(rt);
                        }
                        break;
                    }
                }
            }
            if (res.Slots.Count == 0)
            {
                return(null);
            }
            else
            {
                return(res);
            }
        }