示例#1
0
 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
示例#2
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
示例#3
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
示例#4
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
示例#5
0
 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
示例#6
0
 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
示例#7
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
示例#8
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
示例#9
0
 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
示例#10
0
 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
示例#11
0
 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)
示例#12
0
 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)
示例#13
0
 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
示例#14
0
 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]))))
示例#16
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)
示例#17
0
 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 "?"
示例#18
0
 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
示例#19
0
 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
示例#20
0
 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
示例#21
0
 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
示例#22
0
 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
示例#23
0
 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
示例#25
0
 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
示例#26
0
 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
示例#27
0
 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
示例#28
0
 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
示例#29
0
 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
示例#30
0
 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)