def min_number(self) -> int: """ Минимальный номер, если задан диапазон """ str0_ = self.get_string_value(InstrumentBlockReferent.ATTR_MINNUMBER) if (str0_ is None): return 0 i = 0 wrapi1592 = RefOutArgWrapper(0) inoutres1593 = Utils.tryParseInt(str0_, wrapi1592) i = wrapi1592.value if (inoutres1593): return i return 0
def year(self) -> int: """ Год """ year_ = 0 wrapyear378 = RefOutArgWrapper(0) inoutres379 = Utils.tryParseInt( Utils.ifNotNull(self.get_string_value(BookLinkReferent.ATTR_YEAR), ""), wrapyear378) year_ = wrapyear378.value if (inoutres379): return year_ else: return 0
def sub_number2(self) -> int: """ Дополнительный второй номер (через точку за дополнительным) """ str0_ = self.get_string_value(InstrumentBlockReferent.ATTR_SUB2NUMBER) if (str0_ is None): return 0 i = 0 wrapi1588 = RefOutArgWrapper(0) inoutres1589 = Utils.tryParseInt(str0_, wrapi1588) i = wrapi1588.value if (inoutres1589): return i return 0
def __check_corr_var(self, word: str, tn: 'MorphTreeNode', i: int) -> str: first_pass2893 = True while True: if first_pass2893: first_pass2893 = False else: i += 1 if (not (i <= len(word))): break if (tn.lazy_pos > 0): self.__load_tree_node(tn) if (tn.rules is not None): word_begin = "" word_end = "" if (i > 0): word_begin = word[0:0 + i] else: word_end = word if (i < len(word)): word_end = word[i:] else: word_begin = word for r in tn.rules: if (word_end in r.variants): return word_begin + word_end if (word_end.find('*') >= 0): for v in r.variants_key: if (len(v) == len(word_end)): j = 0 while j < len(v): if (word_end[j] == '*' or word_end[j] == v[j]): pass else: break j += 1 if (j >= len(v)): return word_begin + v if (tn.nodes is None or i >= len(word)): break ch = ord(word[i]) if (ch != (0x2A)): wraptn32 = RefOutArgWrapper(None) inoutres33 = Utils.tryGetValue(tn.nodes, ch, wraptn32) tn = wraptn32.value if (inoutres33): continue break if (tn.nodes is not None): for tnn in tn.nodes.items(): ww = word.replace('*', chr(tnn[0])) res = self.__check_corr_var(ww, tnn[1], i + 1) if (res is not None): return res break return None
def getNumberDiff(r1 : 'Referent', r2 : 'Referent') -> int: """ Возвращает разницу номеров r2 - r1, иначе null, если номеров нет Args: r1(Referent): r2(Referent): """ num1 = r1.getStringValue(BookLinkRefReferent.ATTR_NUMBER) num2 = r2.getStringValue(BookLinkRefReferent.ATTR_NUMBER) if (num1 is None or num2 is None): return None wrapn1398 = RefOutArgWrapper(0) inoutres399 = Utils.tryParseInt(num1, wrapn1398) wrapn2400 = RefOutArgWrapper(0) inoutres401 = Utils.tryParseInt(num2, wrapn2400) n1 = wrapn1398.value n2 = wrapn2400.value if (not inoutres399 or not inoutres401): return None return n2 - n1
def sub_number3(self) -> int: """ Дополнительный третий номер (через точку за вторым дополнительным) """ str0_ = self.get_string_value(InstrumentBlockReferent.ATTR_SUB3NUMBER) if (str0_ is None): return 0 i = 0 wrapi1590 = RefOutArgWrapper(0) inoutres1591 = Utils.tryParseInt(str0_, wrapi1590) i = wrapi1590.value if (inoutres1591): return i return 0
def number(self) -> int: """ Номер (для диапазона - максимальный номер) """ str0_ = self.get_string_value(InstrumentBlockReferent.ATTR_NUMBER) if (str0_ is None): return 0 i = 0 wrapi1584 = RefOutArgWrapper(0) inoutres1585 = Utils.tryParseInt(str0_, wrapi1584) i = wrapi1584.value if (inoutres1585): return i return 0
def alt_value(self) -> float: """ Альтернативное значение (если есть, то значит неправильно написали сумму числом и далее прописью в скобках) """ val = self.get_string_value(MoneyReferent.ATTR_ALTVALUE) if (val is None): return None v = 0 wrapv1752 = RefOutArgWrapper(0) inoutres1753 = Utils.tryParseFloat(val, wrapv1752) v = wrapv1752.value if (not inoutres1753): return None return v
def checkLinkAfter(t1 : 'Token', num : str) -> bool: if (num is None or t1 is None): return False if (t1.is_newline_after): bbb = BookLinkToken.tryParse(t1.next0_, 0) if (bbb is not None and bbb.typ == BookLinkTyp.NUMBER): wrapnn368 = RefOutArgWrapper(0) inoutres369 = Utils.tryParseInt(Utils.ifNotNull(bbb.value, ""), wrapnn368) nn = wrapnn368.value if (inoutres369): if (str((nn - 1)) == num): return True return False
def _getAnalyzerData(self, type_name : str) -> 'AnalyzerData': """ Используется внутренним образом Args: type_name(str): """ wrapa2647 = RefOutArgWrapper(None) inoutres2648 = Utils.tryGetValue(self.__m_anal_by_type, type_name, wrapa2647) a = wrapa2647.value if (not inoutres2648): return None return a._persist_analizer_data
def manageReferentLinks(self) -> None: if (self.__m_refs is not None): for pr in self.__m_refs: wrapr2676 = RefOutArgWrapper(None) inoutres2677 = Utils.tryGetValue(self.__m_links2, pr.identity, wrapr2676) r = wrapr2676.value if (pr.identity is not None and self.__m_links2 is not None and inoutres2677): pr.owner_referent.uploadSlot(pr.owner_slot, r) else: wrapr2674 = RefOutArgWrapper(None) inoutres2675 = Utils.tryGetValue(self.__m_links, pr.value, wrapr2674) r = wrapr2674.value if (self.__m_links is not None and inoutres2675): pr.owner_referent.uploadSlot(pr.owner_slot, r) else: pass self.__m_links2 = None self.__m_links = self.__m_links2 self.__m_refs = (None)
def attach_token(self, type_name: str, t: 'Token') -> typing.List['IntOntologyToken']: # Используется внутренним образом if (self.__m_hash is None): self.__init_hash() onto = None wraponto2820 = RefOutArgWrapper(None) inoutres2821 = Utils.tryGetValue(self.__m_hash, type_name, wraponto2820) onto = wraponto2820.value if (not inoutres2821): return None return onto.try_attach(t, None, False)
def double_values(self) -> typing.List[float]: res = list() for s in self.slots: if (s.type_name == MeasureReferent.ATTR_VALUE and (isinstance(s.value, str))): d = 0 wrapd1744 = RefOutArgWrapper(0) inoutres1745 = MeasureHelper.try_parse_double( Utils.asObjectOrNull(s.value, str), wrapd1744) d = wrapd1744.value if (inoutres1745): res.append(d) return res
def find_termins_by_canonic_text(self, text : str) -> typing.List['Termin']: if (self.__m_hash_canonic is None): self.__m_hash_canonic = dict() for t in self.termins: ct = t.canonic_text li = [ ] wrapli599 = RefOutArgWrapper(None) inoutres600 = Utils.tryGetValue(self.__m_hash_canonic, ct, wrapli599) li = wrapli599.value if (not inoutres600): li = list() self.__m_hash_canonic[ct] = li if (not t in li): li.append(t) res = [ ] wrapres601 = RefOutArgWrapper(None) inoutres602 = Utils.tryGetValue(self.__m_hash_canonic, text, wrapres601) res = wrapres601.value if (not inoutres602): return None else: return res
def __manage_reverce_nodes(root: 'MorphTreeNode', tn: 'MorphTreeNode', term: str) -> None: if (tn.rules is not None): for r in tn.rules: for v in r.variants.items(): wf = term + v[0] if (len(wf) <= MorphSerializeHelper.__min_tail_len): continue rtn = root lev = 0 first_pass2895 = True while True: if first_pass2895: first_pass2895 = False else: lev += 1 if (not (lev < MorphSerializeHelper.__max_tail_len)): break i = len(wf) - 1 - lev if (i < 0): break ch = ord(wf[i]) if (rtn.nodes is None): rtn.nodes = dict() next0_ = None wrapnext52 = RefOutArgWrapper(None) inoutres53 = Utils.tryGetValue(rtn.nodes, ch, wrapnext52) next0_ = wrapnext52.value if (not inoutres53): next0_ = MorphTreeNode() rtn.nodes[ch] = next0_ rtn = next0_ if ((lev + 1) < MorphSerializeHelper.__min_tail_len): continue if (rtn.reverce_variants is None): rtn.reverce_variants = list() for mrf in v[1]: has = False for mfv0 in rtn.reverce_variants: if (mfv0.compare(mrf)): mfv0.coef += 1 has = True break if (not has): mrf0 = MorphRuleVariant(mrf) mrf0.coef = (1) rtn.reverce_variants.append(mrf0) break if (tn.nodes is not None): for tch in tn.nodes.items(): MorphSerializeHelper.__manage_reverce_nodes( root, tch[1], "{0}{1}".format(term, (chr(tch[0]))))
def manage_referent_links(self) -> None: if (self.__m_refs is not None): for pr in self.__m_refs: r = None wrapr2848 = RefOutArgWrapper(None) inoutres2849 = Utils.tryGetValue(self.__m_links2, pr.identity, wrapr2848) r = wrapr2848.value if (pr.identity is not None and self.__m_links2 is not None and inoutres2849): pr.owner_referent.upload_slot(pr.owner_slot, r) else: wrapr2846 = RefOutArgWrapper(None) inoutres2847 = Utils.tryGetValue(self.__m_links, pr.value, wrapr2846) r = wrapr2846.value if (self.__m_links is not None and inoutres2847): pr.owner_referent.upload_slot(pr.owner_slot, r) else: pass self.__m_links2 = None self.__m_links = self.__m_links2 self.__m_refs = (None)
def exTypToString(ty: 'NumberExType', ty2: 'NumberExType' = NumberExType.UNDEFINED) -> str: from pullenti.ner.core.internal.NumberExHelper import NumberExHelper if (ty2 != NumberExType.UNDEFINED): return "{0}/{1}".format( NumberExToken.exTypToString(ty, NumberExType.UNDEFINED), NumberExToken.exTypToString(ty2, NumberExType.UNDEFINED)) wrapres552 = RefOutArgWrapper(None) inoutres553 = Utils.tryGetValue(NumberExHelper._m_normals_typs, ty, wrapres552) res = wrapres552.value if (inoutres553): return res return "?"
def get_number_diff(r1 : 'Referent', r2 : 'Referent') -> int: """ Возвращает разницу номеров r2 - r1, иначе null, если номеров нет Args: r1(Referent): первая ссылка r2(Referent): вторая ссылка """ num1 = r1.get_string_value(BookLinkRefReferent.ATTR_NUMBER) num2 = r2.get_string_value(BookLinkRefReferent.ATTR_NUMBER) if (num1 is None or num2 is None): return None n1 = 0 n2 = 0 wrapn1381 = RefOutArgWrapper(0) inoutres382 = Utils.tryParseInt(num1, wrapn1381) wrapn2383 = RefOutArgWrapper(0) inoutres384 = Utils.tryParseInt(num2, wrapn2383) n1 = wrapn1381.value n2 = wrapn2383.value if (not inoutres382 or not inoutres384): return None return n2 - n1
def __addBigramm(self, b1: 'WordInfo', b2: 'WordInfo') -> None: wrapdi595 = RefOutArgWrapper(None) inoutres596 = Utils.tryGetValue(self.__m_bigramms, b1.normal, wrapdi595) di = wrapdi595.value if (not inoutres596): di = dict() self.__m_bigramms[b1.normal] = di if (b2.normal in di): di[b2.normal] += 1 else: di[b2.normal] = 1 wrapdi593 = RefOutArgWrapper(None) inoutres594 = Utils.tryGetValue(self.__m_bigramms_rev, b2.normal, wrapdi593) di = wrapdi593.value if (not inoutres594): di = dict() self.__m_bigramms_rev[b2.normal] = di if (b1.normal in di): di[b1.normal] += 1 else: di[b1.normal] = 1
def __all_years(self) -> typing.List[int]: res = list() for s in self.slots: if (s.type_name == DecreeReferent.ATTR_DATE): str0_ = str(s.value) i = str0_.find('.') if (i == 4): str0_ = str0_[0:0 + 4] wrapi1113 = RefOutArgWrapper(0) inoutres1114 = Utils.tryParseInt(str0_, wrapi1113) i = wrapi1113.value if (inoutres1114): res.append(i) return res
def add(self, tail: str, var: 'MorphRuleVariant') -> None: tail = LanguageHelper.correctWord(tail) if (var.class0_.is_undefined): pass li = [] wrapli34 = RefOutArgWrapper(None) inoutres35 = Utils.tryGetValue(self.variants, tail, wrapli34) li = wrapli34.value if (not inoutres35): li = list() self.variants[tail] = li var.tail = tail li.append(var) var.rule = self
def __find_item(self, tt: 'TextToken', do_absolute: bool = True) -> 'StatisticWordInfo': if (tt is None): return None res = None wrapres546 = RefOutArgWrapper(None) inoutres547 = Utils.tryGetValue(self.__m_items, tt.term, wrapres546) res = wrapres546.value if (inoutres547): return res if (do_absolute): s = MiscHelper.get_absolute_normal_value(tt.term, False) if (s is not None): wrapres540 = RefOutArgWrapper(None) inoutres541 = Utils.tryGetValue(self.__m_items, s, wrapres540) res = wrapres540.value if (inoutres541): return res for wff in tt.morph.items: wf = Utils.asObjectOrNull(wff, MorphWordForm) if (wf is None): continue wrapres544 = RefOutArgWrapper(None) inoutres545 = Utils.tryGetValue( self.__m_items, Utils.ifNotNull(wf.normal_case, ""), wrapres544) res = wrapres544.value if (inoutres545): return res wrapres542 = RefOutArgWrapper(None) inoutres543 = Utils.tryGetValue(self.__m_items, wf.normal_full, wrapres542) res = wrapres542.value if (wf.normal_full is not None and inoutres543): return res return None
def findTerminByCanonicText(self, text: str) -> typing.List['Termin']: if (self.__m_hash_canonic is None): self.__m_hash_canonic = dict() for t in self.termins: ct = t.canonic_text li = [] wrapli634 = RefOutArgWrapper(None) inoutres635 = Utils.tryGetValue(self.__m_hash_canonic, ct, wrapli634) li = wrapli634.value if (not inoutres635): li = list() self.__m_hash_canonic[ct] = li if (not t in li): li.append(t) res = [] wrapres636 = RefOutArgWrapper(None) inoutres637 = Utils.tryGetValue(self.__m_hash_canonic, text, wrapres636) res = wrapres636.value if (not inoutres637): return None else: return res
def get_geo_referent_by_name(name: str) -> 'GeoReferent': from pullenti.ner.geo.internal.TerrItemToken import TerrItemToken res = None wrapres1168 = RefOutArgWrapper(None) inoutres1169 = Utils.tryGetValue( MiscLocationHelper.__m_geo_ref_by_name, name, wrapres1168) res = wrapres1168.value if (inoutres1169): return res for r in TerrItemToken._m_all_states: if (r.find_slot(None, name, True) is not None): res = (Utils.asObjectOrNull(r, GeoReferent)) break MiscLocationHelper.__m_geo_ref_by_name[name] = res return res
def get_case_after_preposition(prep: str) -> 'MorphCase': """ Получить возможные падежи существительных после предлогов Args: prep(str): предлог """ wrapmc60 = RefOutArgWrapper(None) inoutres61 = Utils.tryGetValue(LanguageHelper.__m_prep_cases, prep, wrapmc60) mc = wrapmc60.value if (inoutres61): return mc else: return MorphCase.UNDEFINED
def __findItem(self, tt: 'TextToken', do_absolute: bool = True) -> 'WordInfo': if (tt is None): return None wrapres591 = RefOutArgWrapper(None) inoutres592 = Utils.tryGetValue(self.__m_items, tt.term, wrapres591) res = wrapres591.value if (inoutres592): return res if (do_absolute): s = MiscHelper.getAbsoluteNormalValue(tt.term, False) if (s is not None): wrapres585 = RefOutArgWrapper(None) inoutres586 = Utils.tryGetValue(self.__m_items, s, wrapres585) res = wrapres585.value if (inoutres586): return res for wff in tt.morph.items: wf = Utils.asObjectOrNull(wff, MorphWordForm) if (wf is None): continue wrapres589 = RefOutArgWrapper(None) inoutres590 = Utils.tryGetValue( self.__m_items, Utils.ifNotNull(wf.normal_case, ""), wrapres589) res = wrapres589.value if (inoutres590): return res wrapres587 = RefOutArgWrapper(None) inoutres588 = Utils.tryGetValue(self.__m_items, wf.normal_full, wrapres587) res = wrapres587.value if (wf.normal_full is not None and inoutres588): return res return None
def findAnalyzer(self, name: str) -> 'Analyzer': """ Найти анализатор по его имени Args: name(str): """ wrapa2666 = RefOutArgWrapper(None) inoutres2667 = Utils.tryGetValue(self.__m_analyzers_hash, Utils.ifNotNull(name, ""), wrapa2666) a = wrapa2666.value if (not inoutres2667): return None else: return a
def check_link_before(t0: 'Token', num: str) -> bool: if (num is None or t0 is None): return False nn = 0 if (t0.previous is not None and (isinstance(t0.previous.get_referent(), BookLinkRefReferent))): wrapnn349 = RefOutArgWrapper(0) inoutres350 = Utils.tryParseInt( Utils.ifNotNull(t0.previous.get_referent().number, ""), wrapnn349) nn = wrapnn349.value if (inoutres350): if (str((nn + 1)) == num): return True return False
def __process_proper_variants(self, word: str, res: typing.List['MorphWordForm'], geo: bool) -> None: tn = self.m_root_reverce tn0 = None nodes_with_vars = None for i in range(len(word) - 1, -1, -1): if (tn.lazy_pos > 0): self.__load_tree_node(tn) ch = ord(word[i]) if (tn.nodes is None): break wrapnext34 = RefOutArgWrapper(None) inoutres35 = Utils.tryGetValue(tn.nodes, ch, wrapnext34) next0_ = wrapnext34.value if (not inoutres35): break tn = next0_ if (tn.lazy_pos > 0): self.__load_tree_node(tn) if (tn.reverce_variants is not None): if (nodes_with_vars is None): nodes_with_vars = list() nodes_with_vars.append(tn) tn0 = tn else: i = -1 if (nodes_with_vars is None): return for j in range(len(nodes_with_vars) - 1, -1, -1): tn = nodes_with_vars[j] if (tn.lazy_pos > 0): self.__load_tree_node(tn) ok = False for v in tn.reverce_variants: if (geo and v.class0_.is_proper_geo): pass elif (not geo and v.class0_.is_proper_surname): pass else: continue r = MorphWordForm(v, word) if (not MorphWordForm._has_morph_equals(res, r)): r.undef_coef = v.coef res.append(r) ok = True if (ok): break
def getInitialInfo(self, ini: str, sur: 'Token') -> 'BigrammInfo': if (Utils.isNullOrEmpty(ini)): return None si2 = self.__findItem(Utils.asObjectOrNull(sur, TextToken), True) if (si2 is None): return None si1 = None wrapsi1600 = RefOutArgWrapper(None) inoutres601 = Utils.tryGetValue(self.__m_items, ini[0:0 + 1], wrapsi1600) si1 = wrapsi1600.value if (not inoutres601): return None if (si1 is None): return None return self.__getBigramsInfo(si1, si2)