def _union(self, kw1: 'KeywordReferent', kw2: 'KeywordReferent', word2: str) -> None: self.typ = kw1.typ tmp = list() tmp2 = io.StringIO() for v in kw1.get_string_values(KeywordReferent.ATTR_VALUE): self.add_slot(KeywordReferent.ATTR_VALUE, "{0} {1}".format(v, word2), False, 0) norms1 = kw1.get_string_values(KeywordReferent.ATTR_NORMAL) if (len(norms1) == 0 and kw1.child_words == 1): norms1 = kw1.get_string_values(KeywordReferent.ATTR_VALUE) norms2 = kw2.get_string_values(KeywordReferent.ATTR_NORMAL) if (len(norms2) == 0 and kw2.child_words == 1): norms2 = kw2.get_string_values(KeywordReferent.ATTR_VALUE) for n1 in norms1: for n2 in norms2: tmp.clear() tmp.extend(Utils.splitString(n1, ' ', False)) for n in Utils.splitString(n2, ' ', False): if (not n in tmp): tmp.append(n) tmp.sort() Utils.setLengthStringIO(tmp2, 0) i = 0 while i < len(tmp): if (i > 0): print(' ', end="", file=tmp2) print(tmp[i], end="", file=tmp2) i += 1 self.add_slot(KeywordReferent.ATTR_NORMAL, Utils.toStringStringIO(tmp2), False, 0) self.add_slot(KeywordReferent.ATTR_REF, kw1, False, 0) self.add_slot(KeywordReferent.ATTR_REF, kw2, False, 0)
def parseDateTime(str0_ : str) -> datetime.datetime: if (Utils.isNullOrEmpty(str0_)): return None try: prts = Utils.splitString(str0_, '.', False) wrapy804 = RefOutArgWrapper(0) inoutres805 = Utils.tryParseInt(prts[0], wrapy804) y = wrapy804.value if (not inoutres805): return None mon = 0 day = 0 if (len(prts) > 1): wrapmon802 = RefOutArgWrapper(0) inoutres803 = Utils.tryParseInt(prts[1], wrapmon802) mon = wrapmon802.value if (inoutres803): if (len(prts) > 2): wrapday801 = RefOutArgWrapper(0) Utils.tryParseInt(prts[2], wrapday801) day = wrapday801.value if (mon <= 0): mon = 1 if (day <= 0): day = 1 if (day > Utils.lastDayOfMonth(y, mon)): day = Utils.lastDayOfMonth(y, mon) return datetime.datetime(y, mon, day, 0, 0, 0) except Exception as ex: pass return None
def initialize() -> None: if (UriItemToken.__m_std_groups is not None): return UriItemToken.__m_std_groups = TerminCollection() domain_groups = [ "com;net;org;inf;biz;name;aero;arpa;edu;int;gov;mil;coop;museum;mobi;travel", "ac;ad;ae;af;ag;ai;al;am;an;ao;aq;ar;as;at;au;aw;az", "ba;bb;bd;be;bf;bg;bh;bi;bj;bm;bn;bo;br;bs;bt;bv;bw;by;bz", "ca;cc;cd;cf;cg;ch;ci;ck;cl;cm;cn;co;cr;cu;cv;cx;cy;cz", "de;dj;dk;dm;do;dz", "ec;ee;eg;eh;er;es;et;eu", "fi;fj;fk;fm;fo;fr", "ga;gd;ge;gf;gg;gh;gi;gl;gm;gn;gp;gq;gr;gs;gt;gu;gw;gy", "hk;hm;hn;hr;ht;hu", "id;ie;il;im;in;io;iq;ir;is;it", "je;jm;jo;jp", "ke;kg;kh;ki;km;kn;kp;kr;kw;ky;kz", "la;lb;lc;li;lk;lr;ls;lt;lu;lv;ly", "ma;mc;md;mg;mh;mk;ml;mm;mn;mo;mp;mq;mr;ms;mt;mu;mv;mw;mx;my;mz", "na;nc;ne;nf;ng;ni;nl;no;np;nr;nu;nz", "om", "pa;pe;pf;pg;ph;pk;pl;pm;pn;pr;ps;pt;pw;py", "qa", "re;ro;ru;rw", "sa;sb;sc;sd;se;sg;sh;si;sj;sk;sl;sm;sn;so;sr;st;su;sv;sy;sz", "tc;td;tf;tg;th;tj;tk;tm;tn;to;tp;tr;tt;tv;tw;tz", "ua;ug;uk;um;us;uy;uz", "va;vc;ve;vg;vi;vn;vu", "wf;ws", "ye;yt;yu", "za;zm;zw" ] separator = [';'] for domain_group in domain_groups: for domain in Utils.splitString(domain_group.upper(), separator, True): UriItemToken.__m_std_groups.add( Termin(domain, MorphLang.UNKNOWN, True))
def create_specific_processor(spec_analyzer_names: str) -> 'Processor': """ Создать процессор с набором стандартных и указанных параметром специфических анализаторов. Args: spec_analyzer_names(str): можно несколько, разделённые запятой или точкой с запятой. Если список пустой, то эквивалентно CreateProcessor() Returns: Processor: Экземпляр процессора """ from pullenti.ner.Processor import Processor if (not ProcessorService.__m_inited): return None proc = Processor() names = list( Utils.splitString((Utils.ifNotNull(spec_analyzer_names, "")), ',' + ';' + ' ', False)) for t in ProcessorService.__m_analizer_instances: a = t.clone() if (a is not None): if (not a.is_specific or a.name in names): proc.add_analyzer(a) return proc
def initialize() -> None: if (SentimentAnalyzer.__m_inited): return SentimentAnalyzer.__m_inited = True MetaSentiment.initialize() Termin.ASSIGN_ALL_TEXTS_AS_NORMAL = True try: for i in range(2): str0_ = EpNerBusinessInternalResourceHelper.getString( ("Positives.txt" if i == 0 else "Negatives.txt")) if (str0_ is None): continue for line0 in Utils.splitString(str0_, '\n', False): line = line0.strip() if (Utils.isNullOrEmpty(line)): continue coef = (1 if i == 0 else -1) SentimentAnalyzer.__m_termins.add( Termin._new117(line, coef)) except Exception as ex: pass for s in ["ОЧЕНЬ", "СИЛЬНО"]: SentimentAnalyzer.__m_termins.add(Termin._new117(s, 0)) Termin.ASSIGN_ALL_TEXTS_AS_NORMAL = False ProcessorService.registerAnalyzer(SentimentAnalyzer())
def __find_in_tree(self, key : str, lang : 'MorphLang') -> typing.List['Termin']: if (key is None): return None nod = self.__get_root(lang, ((lang is None or lang.is_undefined)) and LanguageHelper.is_latin(key)) i = 0 while i < len(key): ch = ord(key[i]) nn = None if (nod.children is not None): wrapnn582 = RefOutArgWrapper(None) Utils.tryGetValue(nod.children, ch, wrapnn582) nn = wrapnn582.value if (nn is None): if (ch == (32)): if (nod.termins is not None): pp = Utils.splitString(key, ' ', False) res = None for t in nod.termins: if (len(t.terms) == len(pp)): k = 0 k = 1 while k < len(pp): if (not pp[k] in t.terms[k].variants): break k += 1 if (k >= len(pp)): if (res is None): res = list() res.append(t) return res return None nod = nn i += 1 return nod.termins
def _initialize() -> None: if (MiscLocationHelper.__m_nords is not None): return MiscLocationHelper.__m_nords = TerminCollection() for s in [ "СЕВЕРНЫЙ", "ЮЖНЫЙ", "ЗАПАДНЫЙ", "ВОСТОЧНЫЙ", "ЦЕНТРАЛЬНЫЙ", "БЛИЖНИЙ", "ДАЛЬНИЙ", "СРЕДНИЙ", "СЕВЕР", "ЮГ", "ЗАПАД", "ВОСТОК", "СЕВЕРО", "ЮГО", "ЗАПАДНО", "ВОСТОЧНО", "СЕВЕРОЗАПАДНЫЙ", "СЕВЕРОВОСТОЧНЫЙ", "ЮГОЗАПАДНЫЙ", "ЮГОВОСТОЧНЫЙ" ]: MiscLocationHelper.__m_nords.add(Termin(s, MorphLang.RU, True)) table = "\nAF\tAFG\nAX\tALA\nAL\tALB\nDZ\tDZA\nAS\tASM\nAD\tAND\nAO\tAGO\nAI\tAIA\nAQ\tATA\nAG\tATG\nAR\tARG\nAM\tARM\nAW\tABW\nAU\tAUS\nAT\tAUT\nAZ\tAZE\nBS\tBHS\nBH\tBHR\nBD\tBGD\nBB\tBRB\nBY\tBLR\nBE\tBEL\nBZ\tBLZ\nBJ\tBEN\nBM\tBMU\nBT\tBTN\nBO\tBOL\nBA\tBIH\nBW\tBWA\nBV\tBVT\nBR\tBRA\nVG\tVGB\nIO\tIOT\nBN\tBRN\nBG\tBGR\nBF\tBFA\nBI\tBDI\nKH\tKHM\nCM\tCMR\nCA\tCAN\nCV\tCPV\nKY\tCYM\nCF\tCAF\nTD\tTCD\nCL\tCHL\nCN\tCHN\nHK\tHKG\nMO\tMAC\nCX\tCXR\nCC\tCCK\nCO\tCOL\nKM\tCOM\nCG\tCOG\nCD\tCOD\nCK\tCOK\nCR\tCRI\nCI\tCIV\nHR\tHRV\nCU\tCUB\nCY\tCYP\nCZ\tCZE\nDK\tDNK\nDJ\tDJI\nDM\tDMA\nDO\tDOM\nEC\tECU\nEG\tEGY\nSV\tSLV\nGQ\tGNQ\nER\tERI\nEE\tEST\nET\tETH\nFK\tFLK\nFO\tFRO\nFJ\tFJI\nFI\tFIN\nFR\tFRA\nGF\tGUF\nPF\tPYF\nTF\tATF\nGA\tGAB\nGM\tGMB\nGE\tGEO\nDE\tDEU\nGH\tGHA\nGI\tGIB\nGR\tGRC\nGL\tGRL\nGD\tGRD\nGP\tGLP\nGU\tGUM\nGT\tGTM\nGG\tGGY\nGN\tGIN\nGW\tGNB\nGY\tGUY\nHT\tHTI\nHM\tHMD\nVA\tVAT\nHN\tHND\nHU\tHUN\nIS\tISL\nIN\tIND\nID\tIDN\nIR\tIRN\nIQ\tIRQ\nIE\tIRL\nIM\tIMN\nIL\tISR\nIT\tITA\nJM\tJAM\nJP\tJPN\nJE\tJEY\nJO\tJOR\nKZ\tKAZ\nKE\tKEN\nKI\tKIR\nKP\tPRK\nKR\tKOR\nKW\tKWT\nKG\tKGZ\nLA\tLAO\nLV\tLVA\nLB\tLBN\nLS\tLSO\nLR\tLBR\nLY\tLBY\nLI\tLIE\nLT\tLTU\nLU\tLUX\nMK\tMKD\nMG\tMDG\nMW\tMWI\nMY\tMYS\nMV\tMDV\nML\tMLI\nMT\tMLT\nMH\tMHL\nMQ\tMTQ\nMR\tMRT\nMU\tMUS\nYT\tMYT\nMX\tMEX\nFM\tFSM\nMD\tMDA\nMC\tMCO\nMN\tMNG\nME\tMNE\nMS\tMSR\nMA\tMAR\nMZ\tMOZ\nMM\tMMR\nNA\tNAM\nNR\tNRU\nNP\tNPL\nNL\tNLD\nAN\tANT\nNC\tNCL\nNZ\tNZL\nNI\tNIC\nNE\tNER\nNG\tNGA\nNU\tNIU\nNF\tNFK\nMP\tMNP\nNO\tNOR\nOM\tOMN\nPK\tPAK\nPW\tPLW\nPS\tPSE\nPA\tPAN\nPG\tPNG\nPY\tPRY\nPE\tPER\nPH\tPHL\nPN\tPCN\nPL\tPOL\nPT\tPRT\nPR\tPRI\nQA\tQAT\nRE\tREU\nRO\tROU\nRU\tRUS\nRW\tRWA\nBL\tBLM\nSH\tSHN\nKN\tKNA\nLC\tLCA\nMF\tMAF\nPM\tSPM\nVC\tVCT\nWS\tWSM\nSM\tSMR\nST\tSTP\nSA\tSAU\nSN\tSEN\nRS\tSRB\nSC\tSYC\nSL\tSLE\nSG\tSGP\nSK\tSVK\nSI\tSVN\nSB\tSLB\nSO\tSOM\nZA\tZAF\nGS\tSGS\nSS\tSSD\nES\tESP\nLK\tLKA\nSD\tSDN\nSR\tSUR\nSJ\tSJM\nSZ\tSWZ\nSE\tSWE\nCH\tCHE\nSY\tSYR\nTW\tTWN\nTJ\tTJK\nTZ\tTZA\nTH\tTHA\nTL\tTLS\nTG\tTGO\nTK\tTKL\nTO\tTON\nTT\tTTO\nTN\tTUN\nTR\tTUR\nTM\tTKM\nTC\tTCA\nTV\tTUV\nUG\tUGA\nUA\tUKR\nAE\tARE\nGB\tGBR\nUS\tUSA\nUM\tUMI\nUY\tURY\nUZ\tUZB\nVU\tVUT\nVE\tVEN\nVN\tVNM\nVI\tVIR\nWF\tWLF\nEH\tESH\nYE\tYEM\nZM\tZMB\nZW\tZWE " for s in Utils.splitString(table, '\n', False): ss = s.strip() if ((len(ss) < 6) or not Utils.isWhitespace(ss[2])): continue cod2 = ss[0:0 + 2] cod3 = ss[3:].strip() if (len(cod3) != 3): continue if (not cod2 in MiscLocationHelper._m_alpha2_3): MiscLocationHelper._m_alpha2_3[cod2] = cod3 if (not cod3 in MiscLocationHelper._m_alpha3_2): MiscLocationHelper._m_alpha3_2[cod3] = cod2
def parse_date_time(str0_: str) -> datetime.datetime: if (Utils.isNullOrEmpty(str0_)): return None try: prts = Utils.splitString(str0_, '.', False) y = 0 wrapy831 = RefOutArgWrapper(0) inoutres832 = Utils.tryParseInt(prts[0], wrapy831) y = wrapy831.value if (not inoutres832): return None mon = 0 day = 0 if (len(prts) > 1): wrapmon829 = RefOutArgWrapper(0) inoutres830 = Utils.tryParseInt(prts[1], wrapmon829) mon = wrapmon829.value if (inoutres830): if (len(prts) > 2): wrapday828 = RefOutArgWrapper(0) Utils.tryParseInt(prts[2], wrapday828) day = wrapday828.value if (mon <= 0): mon = 1 if (day <= 0): day = 1 if (day > Utils.lastDayOfMonth(y, mon)): day = Utils.lastDayOfMonth(y, mon) return datetime.datetime(y, mon, day, 0, 0, 0) except Exception as ex: pass return None
def _static_ctor(): LanguageHelper.__m_preps = [ ("БЕЗ;ДО;ИЗ;ИЗЗА;ОТ;У;ДЛЯ;РАДИ;ВОЗЛЕ;ПОЗАДИ;ВПЕРЕДИ;БЛИЗ;ВБЛИЗИ;ВГЛУБЬ;ВВИДУ;ВДОЛЬ;ВЗАМЕН;ВКРУГ;ВМЕСТО;" + "ВНЕ;ВНИЗУ;ВНУТРИ;ВНУТРЬ;ВОКРУГ;ВРОДЕ;ВСЛЕД;ВСЛЕДСТВИЕ;ЗАМЕСТО;ИЗНУТРИ;КАСАТЕЛЬНО;КРОМЕ;" + "МИМО;НАВРОДЕ;НАЗАД;НАКАНУНЕ;НАПОДОБИЕ;НАПРОТИВ;НАСЧЕТ;ОКОЛО;ОТНОСИТЕЛЬНО;" ) + "ПОВЕРХ;ПОДЛЕ;ПОМИМО;ПОПЕРЕК;ПОРЯДКА;ПОСЕРЕДИНЕ;ПОСРЕДИ;ПОСЛЕ;ПРЕВЫШЕ;ПРЕЖДЕ;ПРОТИВ;СВЕРХ;" + "СВЫШЕ;СНАРУЖИ;СРЕДИ;СУПРОТИВ", "К;БЛАГОДАРЯ;ВОПРЕКИ;НАВСТРЕЧУ;СОГЛАСНО;СООБРАЗНО;ПАРАЛЛЕЛЬНО;ПОДОБНО;СООТВЕТСТВЕННО;СОРАЗМЕРНО", "ПРО;ЧЕРЕЗ;СКВОЗЬ;СПУСТЯ", "НАД;ПЕРЕД;ПРЕД", "ПРИ", "В;НА;О;ВКЛЮЧАЯ", "МЕЖДУ", "ЗА;ПОД", "ПО", "С" ] LanguageHelper.__m_cases = [ MorphCase.GENITIVE, MorphCase.DATIVE, MorphCase.ACCUSATIVE, MorphCase.INSTRUMENTAL, MorphCase.PREPOSITIONAL, (MorphCase.ACCUSATIVE) | MorphCase.PREPOSITIONAL, (MorphCase.GENITIVE) | MorphCase.INSTRUMENTAL, (MorphCase.ACCUSATIVE) | MorphCase.INSTRUMENTAL, (MorphCase.DATIVE) | MorphCase.ACCUSATIVE | MorphCase.PREPOSITIONAL, (MorphCase.GENITIVE) | MorphCase.ACCUSATIVE | MorphCase.INSTRUMENTAL ] LanguageHelper.__m_prep_norms_src = [ "БЕЗ;БЕЗО", "ВБЛИЗИ;БЛИЗ", "В;ВО", "ВОКРУГ;ВКРУГ", "ВНУТРИ;ВНУТРЬ;ВОВНУТРЬ", "ВПЕРЕДИ;ВПЕРЕД", "ВСЛЕД;ВОСЛЕД", "ВМЕСТО;ЗАМЕСТО", "ИЗ;ИЗО", "К;КО", "МЕЖДУ;МЕЖ;ПРОМЕЖДУ;ПРОМЕЖ", "НАД;НАДО", "О;ОБ;ОБО", "ОТ;ОТО", "ПЕРЕД;ПРЕД;ПРЕДО;ПЕРЕДО", "ПОД;ПОДО", "ПОСЕРЕДИНЕ;ПОСРЕДИ;ПОСЕРЕДЬ", "С;СО", "СРЕДИ;СРЕДЬ;СЕРЕДЬ", "ЧЕРЕЗ;ЧРЕЗ" ] LanguageHelper.__m_prep_cases = dict() i = 0 while i < len(LanguageHelper.__m_preps): for v in Utils.splitString(LanguageHelper.__m_preps[i], ';', False): LanguageHelper.__m_prep_cases[v] = LanguageHelper.__m_cases[i] i += 1 LanguageHelper.__m_prep_norms = dict() for s in LanguageHelper.__m_prep_norms_src: vars0_ = Utils.splitString(s, ';', False) i = 1 while i < len(vars0_): LanguageHelper.__m_prep_norms[vars0_[i]] = vars0_[0] i += 1
def __loadBrands(str0_: str, kind_: 'TransportKind') -> None: cars = Utils.splitString(str0_, ';', False) vars0_ = list() for c in cars: its = Utils.splitString(c, ',', False) vars0_.clear() doubt = False for it in its: s = it.strip() if (not Utils.isNullOrEmpty(s)): if (s == "true"): doubt = True else: vars0_.append(s) if (len(vars0_) == 0): continue for v in vars0_: t = TransItemToken.TransTermin(v) t.canonic_text = vars0_[0] t.kind = kind_ t.typ = TransItemToken.Typs.BRAND t.is_doubt = doubt TransItemToken.M_ONTOLOGY.add(t)
def _correct(self) -> None: names_ = self.names for i in range(len(names_) - 1, -1, -1): ss = names_[i] jj = ss.find(' ') if (jj < 0): continue if (ss.rfind(' ') != jj): continue pp = Utils.splitString(ss, ' ', False) if (len(pp) == 2): ss2 = "{0} {1}".format(pp[1], pp[0]) if (not ss2 in names_): self.add_slot(StreetReferent.ATTR_NAME, ss2, False, 0)
def initByNormalText(self, text: str, lang_: 'MorphLang' = None) -> None: """ Быстрая инициализация без морф.вариантов, производится только токенизация текста. Используется для ускорения работы со словарём в случае, когда изначально известно, что на входе уже нормализованные строки Args: text(str): исходно нормализованный текст lang_(MorphLang): возможный язык """ if (Utils.isNullOrEmpty(text)): return text = text.upper() if (text.find('\'') >= 0): text = text.replace("'", "") tok = False sp = False for ch in text: if (not str.isalpha(ch)): if (ch == ' '): sp = True else: tok = True break if (not tok and not sp): tt = TextToken(None, None) tt.term = text self.terms.append(Termin.Term(tt, False)) elif (not tok and sp): wrds = Utils.splitString(text, ' ', False) i = 0 first_pass2811 = True while True: if first_pass2811: first_pass2811 = False else: i += 1 if (not (i < len(wrds))): break if (Utils.isNullOrEmpty(wrds[i])): continue tt = TextToken(None, None) tt.term = wrds[i] self.terms.append(Termin.Term(tt, False)) else: toks = Morphology.tokenize(text) if (toks is not None): i = 0 while i < len(toks): tt = TextToken(toks[i], None) self.terms.append(Termin.Term(tt, False)) i += 1 self.lang = MorphLang(lang_)
def parse(str0_: str) -> 'MorphCase': """ Восстановить падежи из строки, полученной ToString Args: str0_(str): """ res = MorphCase() if (Utils.isNullOrEmpty(str0_)): return res for s in Utils.splitString(str0_, '|', False): i = 0 while i < len(MorphCase.__m_names): if (s == MorphCase.__m_names[i]): res.__set_value(i, True) break i += 1 return res
def initialize() -> None: if (PhoneHelper.M_PHONE_ROOT is not None): return PhoneHelper.M_PHONE_ROOT = PhoneHelper.PhoneNode() PhoneHelper.M_ALL_COUNTRY_CODES = dict() str0_ = EpNerBankInternalResourceHelper.getString( "CountryPhoneCodes.txt") if (str0_ is None): raise Utils.newException( "Can't file resource file {0} in Organization analyzer".format( "CountryPhoneCodes.txt"), None) for line0 in Utils.splitString(str0_, '\n', False): line = line0.strip() if (Utils.isNullOrEmpty(line)): continue if (len(line) < 2): continue country = line[0:0 + 2] cod = line[2:].strip() if (len(cod) < 1): continue if (not country in PhoneHelper.M_ALL_COUNTRY_CODES): PhoneHelper.M_ALL_COUNTRY_CODES[country] = cod tn = PhoneHelper.M_PHONE_ROOT i = 0 while i < len(cod): dig = cod[i] wrapnn2462 = RefOutArgWrapper(None) inoutres2463 = Utils.tryGetValue(tn.children, dig, wrapnn2462) nn = wrapnn2462.value if (not inoutres2463): nn = PhoneHelper.PhoneNode() nn.pref = cod[0:0 + i + 1] tn.children[dig] = nn tn = nn i += 1 if (tn.countries is None): tn.countries = list() tn.countries.append(country)
def _initialize() -> None: if (NumberExHelper._m_postfixes is not None): return NumberExHelper._m_postfixes = TerminCollection() t = Termin._new481("КВАДРАТНЫЙ МЕТР", MorphLang.RU, True, "кв.м.", NumberExType.METER2) t.addAbridge("КВ.МЕТР") t.addAbridge("КВ.МЕТРА") t.addAbridge("КВ.М.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("КВАДРАТНИЙ МЕТР", MorphLang.UA, True, "КВ.М.", NumberExType.METER2) t.addAbridge("КВ.МЕТР") t.addAbridge("КВ.МЕТРА") t.addAbridge("КВ.М.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("КВАДРАТНЫЙ КИЛОМЕТР", MorphLang.RU, True, "кв.км.", NumberExType.KILOMETER2) t.addVariant("КВАДРАТНИЙ КІЛОМЕТР", True) t.addAbridge("КВ.КМ.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("ГЕКТАР", MorphLang.RU, True, "га", NumberExType.GEKTAR) t.addAbridge("ГА") NumberExHelper._m_postfixes.add(t) t = Termin._new481("АР", MorphLang.RU, True, "ар", NumberExType.AR) t.addVariant("СОТКА", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("КУБИЧЕСКИЙ МЕТР", MorphLang.RU, True, "куб.м.", NumberExType.METER3) t.addVariant("КУБІЧНИЙ МЕТР", True) t.addAbridge("КУБ.МЕТР") t.addAbridge("КУБ.М.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("МЕТР", MorphLang.RU, True, "м.", NumberExType.METER) t.addAbridge("М.") t.addAbridge("M.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("МЕТРОВЫЙ", MorphLang.RU, True, "м.", NumberExType.METER) t.addVariant("МЕТРОВИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("МИЛЛИМЕТР", MorphLang.RU, True, "мм.", NumberExType.MILLIMETER) t.addAbridge("ММ") t.addAbridge("MM") t.addVariant("МІЛІМЕТР", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("МИЛЛИМЕТРОВЫЙ", MorphLang.RU, True, "мм.", NumberExType.MILLIMETER) t.addVariant("МІЛІМЕТРОВИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("САНТИМЕТР", MorphLang.RU, True, "см.", NumberExType.SANTIMETER) t.addAbridge("СМ") t.addAbridge("CM") NumberExHelper._m_postfixes.add(t) t = Termin._new481("САНТИМЕТРОВЫЙ", MorphLang.RU, True, "см.", NumberExType.SANTIMETER) t.addVariant("САНТИМЕТРОВИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("КВАДРАТНЫЙ САНТИМЕТР", MorphLang.RU, True, "кв.см.", NumberExType.SANTIMETER2) t.addVariant("КВАДРАТНИЙ САНТИМЕТР", True) t.addAbridge("КВ.СМ.") t.addAbridge("СМ.КВ.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("КУБИЧЕСКИЙ САНТИМЕТР", MorphLang.RU, True, "куб.см.", NumberExType.SANTIMETER3) t.addVariant("КУБІЧНИЙ САНТИМЕТР", True) t.addAbridge("КУБ.САНТИМЕТР") t.addAbridge("КУБ.СМ.") t.addAbridge("СМ.КУБ.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("КИЛОМЕТР", MorphLang.RU, True, "км.", NumberExType.KILOMETER) t.addAbridge("КМ") t.addAbridge("KM") t.addVariant("КІЛОМЕТР", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("КИЛОМЕТРОВЫЙ", MorphLang.RU, True, "км.", NumberExType.KILOMETER) t.addVariant("КІЛОМЕТРОВИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("МИЛЯ", MorphLang.RU, True, "миль", NumberExType.KILOMETER) NumberExHelper._m_postfixes.add(t) t = Termin._new481("ГРАММ", MorphLang.RU, True, "гр.", NumberExType.GRAMM) t.addAbridge("ГР") t.addAbridge("Г") t.addVariant("ГРАМ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("ГРАММОВЫЙ", MorphLang.RU, True, "гр.", NumberExType.GRAMM) NumberExHelper._m_postfixes.add(t) t = Termin._new481("КИЛОГРАММ", MorphLang.RU, True, "кг.", NumberExType.KILOGRAM) t.addAbridge("КГ") t.addVariant("КІЛОГРАМ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("КИЛОГРАММОВЫЙ", MorphLang.RU, True, "кг.", NumberExType.KILOGRAM) t.addVariant("КІЛОГРАМОВИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("МИЛЛИГРАММ", MorphLang.RU, True, "мг.", NumberExType.MILLIGRAM) t.addAbridge("МГ") t.addVariant("МІЛІГРАМ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("МИЛЛИГРАММОВЫЙ", MorphLang.RU, True, "мг.", NumberExType.MILLIGRAM) t.addVariant("МИЛЛИГРАМОВЫЙ", True) t.addVariant("МІЛІГРАМОВИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("ТОННА", MorphLang.RU, True, "т.", NumberExType.TONNA) t.addAbridge("Т") t.addAbridge("T") NumberExHelper._m_postfixes.add(t) t = Termin._new481("ТОННЫЙ", MorphLang.RU, True, "т.", NumberExType.TONNA) t.addVariant("ТОННИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("ЛИТР", MorphLang.RU, True, "л.", NumberExType.LITR) t.addAbridge("Л") t.addVariant("ЛІТР", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("ЛИТРОВЫЙ", MorphLang.RU, True, "л.", NumberExType.LITR) t.addVariant("ЛІТРОВИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("МИЛЛИЛИТР", MorphLang.RU, True, "мл.", NumberExType.MILLILITR) t.addAbridge("МЛ") t.addVariant("МІЛІЛІТР", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("МИЛЛИЛИТРОВЫЙ", MorphLang.RU, True, "мл.", NumberExType.MILLILITR) t.addVariant("МІЛІЛІТРОВИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("ЧАС", MorphLang.RU, True, "ч.", NumberExType.HOUR) t.addAbridge("Ч.") t.addVariant("ГОДИНА", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("МИНУТА", MorphLang.RU, True, "мин.", NumberExType.MINUTE) t.addAbridge("МИН.") t.addVariant("ХВИЛИНА", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("СЕКУНДА", MorphLang.RU, True, "сек.", NumberExType.SECOND) t.addAbridge("СЕК.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("ГОД", MorphLang.RU, True, "г.", NumberExType.YEAR) t.addAbridge("Г.") t.addAbridge("ЛЕТ") t.addVariant("ЛЕТНИЙ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("МЕСЯЦ", MorphLang.RU, True, "мес.", NumberExType.MONTH) t.addAbridge("МЕС.") t.addVariant("МЕСЯЧНЫЙ", True) t.addVariant("КАЛЕНДАРНЫЙ МЕСЯЦ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("ДЕНЬ", MorphLang.RU, True, "дн.", NumberExType.DAY) t.addAbridge("ДН.") t.addVariant("ДНЕВНЫЙ", True) t.addVariant("СУТКИ", True) t.addVariant("СУТОЧНЫЙ", True) t.addVariant("КАЛЕНДАРНЫЙ ДЕНЬ", True) t.addVariant("РАБОЧИЙ ДЕНЬ", True) NumberExHelper._m_postfixes.add(t) t = Termin._new481("НЕДЕЛЯ", MorphLang.RU, True, "нед.", NumberExType.WEEK) t.addVariant("НЕДЕЛЬНЫЙ", True) t.addVariant("КАЛЕНДАРНАЯ НЕДЕЛЯ", False) NumberExHelper._m_postfixes.add(t) t = Termin._new481("ПРОЦЕНТ", MorphLang.RU, True, "%", NumberExType.PERCENT) t.addVariant("%", False) t.addVariant("ПРОЦ", True) t.addAbridge("ПРОЦ.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("ШТУКА", MorphLang.RU, True, "шт.", NumberExType.SHUK) t.addVariant("ШТ", False) t.addAbridge("ШТ.") t.addAbridge("ШТ-К") NumberExHelper._m_postfixes.add(t) t = Termin._new481("УПАКОВКА", MorphLang.RU, True, "уп.", NumberExType.UPAK) t.addVariant("УПАК", True) t.addVariant("УП", True) t.addAbridge("УПАК.") t.addAbridge("УП.") t.addAbridge("УП-КА") NumberExHelper._m_postfixes.add(t) t = Termin._new481("РУЛОН", MorphLang.RU, True, "рулон", NumberExType.RULON) t.addVariant("РУЛ", True) t.addAbridge("РУЛ.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("НАБОР", MorphLang.RU, True, "набор", NumberExType.NABOR) t.addVariant("НАБ", True) t.addAbridge("НАБ.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("КОМПЛЕКТ", MorphLang.RU, True, "компл.", NumberExType.KOMPLEKT) t.addVariant("КОМПЛ", True) t.addAbridge("КОМПЛ.") NumberExHelper._m_postfixes.add(t) t = Termin._new481("ПАРА", MorphLang.RU, True, "пар", NumberExType.PARA) NumberExHelper._m_postfixes.add(t) t = Termin._new481("ФЛАКОН", MorphLang.RU, True, "флак.", NumberExType.FLAKON) t.addVariant("ФЛ", True) t.addAbridge("ФЛ.") t.addVariant("ФЛАК", True) t.addAbridge("ФЛАК.") NumberExHelper._m_postfixes.add(t) for te in NumberExHelper._m_postfixes.termins: ty = Utils.valToEnum(te.tag, NumberExType) if (not ty in NumberExHelper._m_normals_typs): NumberExHelper._m_normals_typs[ty] = te.canonic_text NumberExHelper.__m_small_money = TerminCollection() t = Termin._new141("УСЛОВНАЯ ЕДИНИЦА", "УЕ", NumberExType.MONEY) t.addAbridge("У.Е.") t.addAbridge("У.E.") t.addAbridge("Y.Е.") t.addAbridge("Y.E.") NumberExHelper._m_postfixes.add(t) for k in range(3): str0_ = EpNerCoreInternalResourceHelper.getString( ("Money.csv" if k == 0 else ("MoneyUA.csv" if k == 1 else "MoneyEN.csv"))) if (str0_ is None): continue lang = (MorphLang.RU if k == 0 else (MorphLang.UA if k == 1 else MorphLang.EN)) if (str0_ is None): continue for line0 in Utils.splitString(str0_, '\n', False): line = line0.strip() if (Utils.isNullOrEmpty(line)): continue parts = Utils.splitString(line.upper(), ';', False) if (parts is None or len(parts) != 5): continue if (Utils.isNullOrEmpty(parts[1]) or Utils.isNullOrEmpty(parts[2])): continue t = Termin() t.initByNormalText(parts[1], lang) t.canonic_text = parts[2] t.tag = NumberExType.MONEY for p in Utils.splitString(parts[0], ',', False): if (p != parts[1]): t0 = Termin() t0.initByNormalText(p, None) t.addVariantTerm(t0) if (parts[1] == "РУБЛЬ"): t.addAbridge("РУБ.") elif (parts[1] == "ГРИВНЯ"): t.addAbridge("ГРН.") elif (parts[1] == "ДОЛЛАР"): t.addAbridge("ДОЛ.") t.addAbridge("ДОЛЛ.") elif (parts[1] == "ДОЛАР"): t.addAbridge("ДОЛ.") NumberExHelper._m_postfixes.add(t) if (Utils.isNullOrEmpty(parts[3])): continue num = 0 i = parts[3].find(' ') if (i < 2): continue wrapnum526 = RefOutArgWrapper(0) inoutres527 = Utils.tryParseInt(parts[3][0:0 + i], wrapnum526) num = wrapnum526.value if (not inoutres527): continue vv = parts[3][i:].strip() t = Termin() t.initByNormalText(parts[4], lang) t.tag = (num) if (vv != parts[4]): t0 = Termin() t0.initByNormalText(vv, None) t.addVariantTerm(t0) if (parts[4] == "КОПЕЙКА" or parts[4] == "КОПІЙКА"): t.addAbridge("КОП.") NumberExHelper.__m_small_money.add(t)
def initialize() -> None: OrgItemNameToken.__m_std_tails = TerminCollection() OrgItemNameToken.__m_std_names = TerminCollection() OrgItemNameToken.__m_vervot_words = TerminCollection() t = Termin("INCORPORATED") t.addAbridge("INC.") OrgItemNameToken.__m_std_tails.add(t) t = Termin("CORPORATION") t.addAbridge("CORP.") OrgItemNameToken.__m_std_tails.add(t) t = Termin("LIMITED") t.addAbridge("LTD.") OrgItemNameToken.__m_std_tails.add(t) t = Termin("AG") OrgItemNameToken.__m_std_tails.add(t) t = Termin("GMBH") OrgItemNameToken.__m_std_tails.add(t) for s in [ "ЗАКАЗЧИК", "ИСПОЛНИТЕЛЬ", "РАЗРАБОТЧИК", "БЕНЕФИЦИАР", "ПОЛУЧАТЕЛЬ", "ОТПРАВИТЕЛЬ", "ИЗГОТОВИТЕЛЬ", "ПРОИЗВОДИТЕЛЬ", "ПОСТАВЩИК", "АБОНЕНТ", "КЛИЕНТ", "ВКЛАДЧИК", "СУБЪЕКТ", "ПРОДАВЕЦ", "ПОКУПАТЕЛЬ", "АРЕНДОДАТЕЛЬ", "АРЕНДАТОР", "СУБАРЕНДАТОР", "НАЙМОДАТЕЛЬ", "НАНИМАТЕЛЬ", "АГЕНТ", "ПРИНЦИПАЛ", "ПРОДАВЕЦ", "ПОСТАВЩИК", "ПОДРЯДЧИК", "СУБПОДРЯДЧИК" ]: OrgItemNameToken.__m_std_tails.add(Termin._new117(s, s)) for s in [ "ЗАМОВНИК", "ВИКОНАВЕЦЬ", "РОЗРОБНИК", "БЕНЕФІЦІАР", "ОДЕРЖУВАЧ", "ВІДПРАВНИК", "ВИРОБНИК", "ВИРОБНИК", "ПОСТАЧАЛЬНИК", "АБОНЕНТ", "КЛІЄНТ", "ВКЛАДНИК", "СУБ'ЄКТ", "ПРОДАВЕЦЬ", "ПОКУПЕЦЬ", "ОРЕНДОДАВЕЦЬ", "ОРЕНДАР", "СУБОРЕНДАР", "НАЙМОДАВЕЦЬ", "НАЙМАЧ", "АГЕНТ", "ПРИНЦИПАЛ", "ПРОДАВЕЦЬ", "ПОСТАЧАЛЬНИК", "ПІДРЯДНИК", "СУБПІДРЯДНИК" ]: OrgItemNameToken.__m_std_tails.add( Termin._new455(s, MorphLang.UA, s)) t = Termin("РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ") t.addAbridge("РАЗРАБОТКИ ПО") OrgItemNameToken.__m_std_names.add(t) for s in ["СПЕЦИАЛЬНОСТЬ", "ДИАГНОЗ"]: OrgItemNameToken.__m_vervot_words.add(Termin(s)) for s in ["СПЕЦІАЛЬНІСТЬ", "ДІАГНОЗ"]: OrgItemNameToken.__m_vervot_words.add(Termin(s, MorphLang.UA)) OrgItemNameToken.__m_std_nouns = TerminCollection() for k in range(2): name = ("NameNouns_ru.dat" if k == 0 else "NameNouns_ua.dat") dat = EpNerOrgInternalResourceHelper.getBytes(name) if (dat is None): raise Utils.newException( "Can't file resource file {0} in Organization analyzer". format(name), None) str0_ = OrgItemTypeToken._deflate(dat).decode("UTF-8", 'ignore') for line0 in Utils.splitString(str0_, '\n', False): line = line0.strip() if (Utils.isNullOrEmpty(line)): continue if (k == 0): OrgItemNameToken.__m_std_nouns.add(Termin(line)) else: OrgItemNameToken.__m_std_nouns.add( Termin._new872(line, MorphLang.UA))
def initialize() -> None: if (UriAnalyzer.__m_schemes is not None): return Termin.ASSIGN_ALL_TEXTS_AS_NORMAL = True MetaUri.initialize() try: UriAnalyzer.__m_schemes = TerminCollection() obj = EpNerBankInternalResourceHelper.getString("UriSchemes.csv") if (obj is None): raise Utils.newException("Can't file resource file {0} in Organization analyzer".format("UriSchemes.csv"), None) for line0 in Utils.splitString(obj, '\n', False): line = line0.strip() if (Utils.isNullOrEmpty(line)): continue UriAnalyzer.__m_schemes.add(Termin._new678(line, MorphLang.UNKNOWN, True, 0)) for s in ["ISBN", "УДК", "ББК", "ТНВЭД", "ОКВЭД"]: UriAnalyzer.__m_schemes.add(Termin._new678(s, MorphLang.UNKNOWN, True, 1)) UriAnalyzer.__m_schemes.add(Termin._new2573("Общероссийский классификатор форм собственности", "ОКФС", 1, "ОКФС")) UriAnalyzer.__m_schemes.add(Termin._new2573("Общероссийский классификатор организационно правовых форм", "ОКОПФ", 1, "ОКОПФ")) UriAnalyzer.__m_schemes.add(Termin._new678("WWW", MorphLang.UNKNOWN, True, 2)) UriAnalyzer.__m_schemes.add(Termin._new678("HTTP", MorphLang.UNKNOWN, True, 10)) UriAnalyzer.__m_schemes.add(Termin._new678("HTTPS", MorphLang.UNKNOWN, True, 10)) UriAnalyzer.__m_schemes.add(Termin._new678("SHTTP", MorphLang.UNKNOWN, True, 10)) UriAnalyzer.__m_schemes.add(Termin._new678("FTP", MorphLang.UNKNOWN, True, 10)) t = Termin._new678("SKYPE", MorphLang.UNKNOWN, True, 3) t.addVariant("СКАЙП", True) t.addVariant("SKYPEID", True) t.addVariant("SKYPE ID", True) UriAnalyzer.__m_schemes.add(t) t = Termin._new678("SWIFT", MorphLang.UNKNOWN, True, 3) t.addVariant("СВИФТ", True) UriAnalyzer.__m_schemes.add(t) UriAnalyzer.__m_schemes.add(Termin._new678("ICQ", MorphLang.UNKNOWN, True, 4)) t = Termin._new2583("основной государственный регистрационный номер", "ОГРН", 5, "ОГРН", True) t.addVariant("ОГРН ИП", True) UriAnalyzer.__m_schemes.add(t) UriAnalyzer.__m_schemes.add(Termin._new2583("Индивидуальный идентификационный номер", "ИИН", 5, "ИИН", True)) UriAnalyzer.__m_schemes.add(Termin._new2583("Индивидуальный номер налогоплательщика", "ИНН", 5, "ИНН", True)) UriAnalyzer.__m_schemes.add(Termin._new2583("Код причины постановки на учет", "КПП", 5, "КПП", True)) UriAnalyzer.__m_schemes.add(Termin._new2583("Банковский идентификационный код", "БИК", 5, "БИК", True)) UriAnalyzer.__m_schemes.add(Termin._new2583("основной государственный регистрационный номер индивидуального предпринимателя", "ОГРНИП", 5, "ОГРНИП", True)) t = Termin._new2583("Страховой номер индивидуального лицевого счёта", "СНИЛС", 5, "СНИЛС", True) t.addVariant("Свидетельство пенсионного страхования", False) t.addVariant("Страховое свидетельство обязательного пенсионного страхования", False) t.addVariant("Страховое свидетельство", False) UriAnalyzer.__m_schemes.add(t) UriAnalyzer.__m_schemes.add(Termin._new2583("Общероссийский классификатор предприятий и организаций", "ОКПО", 5, "ОКПО", True)) UriAnalyzer.__m_schemes.add(Termin._new2583("Общероссийский классификатор объектов административно-территориального деления", "ОКАТО", 5, "ОКАТО", True)) UriAnalyzer.__m_schemes.add(Termin._new2583("Общероссийский классификатор территорий муниципальных образований", "ОКТМО", 5, "ОКТМО", True)) UriAnalyzer.__m_schemes.add(Termin._new2583("Общероссийский классификатор органов государственной власти и управления", "ОКОГУ", 5, "ОКОГУ", True)) UriAnalyzer.__m_schemes.add(Termin._new2583("Общероссийский классификатор Отрасли народного хозяйства", "ОКОНХ", 5, "ОКОНХ", True)) t = Termin._new2595("РАСЧЕТНЫЙ СЧЕТ", MorphLang.UNKNOWN, True, "Р/С", 6, 20) t.addAbridge("Р.С.") t.addAbridge("Р.СЧ.") t.addAbridge("P.C.") t.addAbridge("РАСЧ.СЧЕТ") t.addAbridge("РАС.СЧЕТ") t.addAbridge("РАСЧ.СЧ.") t.addAbridge("РАС.СЧ.") t.addAbridge("Р.СЧЕТ") t.addVariant("СЧЕТ ПОЛУЧАТЕЛЯ", False) t.addVariant("СЧЕТ ОТПРАВИТЕЛЯ", False) t.addVariant("СЧЕТ", False) UriAnalyzer.__m_schemes.add(t) t = Termin._new2596("ЛИЦЕВОЙ СЧЕТ", "Л/С", 6, 20) t.addAbridge("Л.С.") t.addAbridge("Л.СЧ.") t.addAbridge("Л/С") t.addAbridge("ЛИЦ.СЧЕТ") t.addAbridge("ЛИЦ.СЧ.") t.addAbridge("Л.СЧЕТ") UriAnalyzer.__m_schemes.add(t) t = Termin._new2595("СПЕЦИАЛЬНЫЙ ЛИЦЕВОЙ СЧЕТ", MorphLang.UNKNOWN, True, "СПЕЦ/С", 6, 20) t.addAbridge("СПЕЦ.С.") t.addAbridge("СПЕЦ.СЧЕТ") t.addAbridge("СПЕЦ.СЧ.") t.addVariant("СПЕЦСЧЕТ", True) t.addVariant("СПЕЦИАЛЬНЫЙ СЧЕТ", True) UriAnalyzer.__m_schemes.add(t) t = Termin._new2595("КОРРЕСПОНДЕНТСКИЙ СЧЕТ", MorphLang.UNKNOWN, True, "К/С", 6, 20) t.addAbridge("КОРР.СЧЕТ") t.addAbridge("КОР.СЧЕТ") t.addAbridge("КОРР.СЧ.") t.addAbridge("КОР.СЧ.") t.addAbridge("К.СЧЕТ") t.addAbridge("КОР.С.") t.addAbridge("К.С.") t.addAbridge("K.C.") t.addAbridge("К-С") t.addAbridge("К/С") t.addAbridge("К.СЧ.") t.addAbridge("К/СЧ") UriAnalyzer.__m_schemes.add(t) t = Termin._new2599("КОД БЮДЖЕТНОЙ КЛАССИФИКАЦИИ", "КБК", "КБК", 6, 20, True) UriAnalyzer.__m_schemes.add(t) UriItemToken.initialize() except Exception as ex: raise Utils.newException(ex.__str__(), ex) Termin.ASSIGN_ALL_TEXTS_AS_NORMAL = False ProcessorService.registerAnalyzer(UriAnalyzer())
def __add_factor(f: 'UnitsFactors', u0: 'Unit', abbr_cyr: str, abbr_lat: str, names_ru: str, names_ua: str, names_en: str) -> 'Unit': pref_cyr = None pref_lat = None pref_ru = None pref_ua = None pref_en = None mult = 1 swichVal = f if (swichVal == UnitsFactors.CENTI): pref_cyr = "С" pref_lat = "C" pref_ru = "САНТИ" pref_ua = "САНТИ" pref_en = "CENTI" mult = 0.1 elif (swichVal == UnitsFactors.DECI): pref_cyr = "Д" pref_lat = "D" pref_ru = "ДЕЦИ" pref_ua = "ДЕЦИ" pref_en = "DECI" mult = 0.01 elif (swichVal == UnitsFactors.GIGA): pref_cyr = "Г" pref_lat = "G" pref_ru = "ГИГА" pref_ua = "ГІГА" pref_en = "GIGA" mult = (1000000000) elif (swichVal == UnitsFactors.KILO): pref_cyr = "К" pref_lat = "K" pref_ru = "КИЛО" pref_ua = "КІЛО" pref_en = "KILO" mult = (1000) elif (swichVal == UnitsFactors.MEGA): pref_cyr = "М" pref_lat = "M" pref_ru = "МЕГА" pref_ua = "МЕГА" pref_en = "MEGA" mult = (1000000) elif (swichVal == UnitsFactors.MICRO): pref_cyr = "МК" pref_lat = "MK" pref_ru = "МИКРО" pref_ua = "МІКРО" pref_en = "MICRO" mult = 0.0001 elif (swichVal == UnitsFactors.MILLI): pref_cyr = "М" pref_lat = "M" pref_ru = "МИЛЛИ" pref_ua = "МІЛІ" pref_en = "MILLI" mult = 0.001 elif (swichVal == UnitsFactors.NANO): pref_cyr = "Н" pref_lat = "N" pref_ru = "НАНО" pref_ua = "НАНО" pref_en = "NANO" mult = 0.0000000001 elif (swichVal == UnitsFactors.PICO): pref_cyr = "П" pref_lat = "P" pref_ru = "ПИКО" pref_ua = "ПІКО" pref_en = "PICO" mult = 0.0000000000001 elif (swichVal == UnitsFactors.TERA): pref_cyr = "Т" pref_lat = "T" pref_ru = "ТЕРА" pref_ua = "ТЕРА" pref_en = "TERA" mult = (1000000000000) u = Unit._new1733(pref_cyr.lower() + u0.name_cyr, pref_lat.lower() + u0.name_lat, pref_ru.lower() + u0.fullname_cyr, pref_en.lower() + u0.fullname_lat, f, mult, u0, u0.kind, u0.keywords) if (f == UnitsFactors.MEGA or f == UnitsFactors.TERA or f == UnitsFactors.GIGA): u.name_cyr = (pref_cyr + u0.name_cyr) u.name_lat = (pref_lat + u0.name_lat) UnitsHelper.UNITS.append(u) nams = Utils.splitString(names_ru, ';', False) t = Termin._new100(pref_ru + nams[0], u) i = 1 while i < len(nams): if (not Utils.isNullOrEmpty(nams[i])): t.add_variant(pref_ru + nams[i], False) i += 1 for n in nams: if (not Utils.isNullOrEmpty(n)): t.add_variant(pref_cyr + n, False) for n in Utils.splitString(names_ua, ';', False): if (not Utils.isNullOrEmpty(n)): t.add_variant(pref_ua + n, False) t.add_variant(pref_cyr + n, False) for n in Utils.splitString(names_en, ';', False): if (not Utils.isNullOrEmpty(n)): t.add_variant(pref_en + n, False) t.add_variant(pref_lat + n, False) for n in Utils.splitString(abbr_cyr, ';', False): if (not Utils.isNullOrEmpty(n)): t.add_abridge(pref_cyr + n) for n in Utils.splitString(abbr_lat, ';', False): if (not Utils.isNullOrEmpty(n)): t.add_abridge(pref_lat + n) UnitsHelper.TERMINS.add(t) return u