def get_bytes(name: str) -> bytearray:
        """ Получить встроенный ресурс
        
        Args:
            name(str): имя, на который оканчивается ресурс
        
        """

        names = Utils.getResourcesNames('pullenti.ner.org.properties',
                                        '.png;.dat')
        for n in names:
            if (Utils.endsWithString(n, name, True)):
                if (len(name) < len(n)):
                    if (n[len(n) - len(name) - 1] != '.'):
                        continue
                try:
                    inf = Utils.getResourceInfo('pullenti.ner.org.properties',
                                                n)
                    if (inf is None):
                        continue
                    with Utils.getResourceStream('pullenti.ner.org.properties',
                                                 n) as stream:
                        buf = Utils.newArrayOfBytes(stream.length, 0)
                        stream.read(buf, 0, len(buf))
                        return buf
                except Exception as ex:
                    pass
        return None
Пример #2
0
 def getBytes(name: str) -> bytearray:
     """ Получить встроенный ресурс
     
     Args:
         name(str): имя, на который оканчивается ресурс
     
     """
     # ignored: assembly = EpNerBankInternalResourceHelper.
     names = Utils.getResourcesNames('pullenti.ner.bank.properties',
                                     '.png;.txt;.csv')
     for n in names:
         if (Utils.endsWithString(n, name, True)):
             try:
                 inf = Utils.getResourceInfo('pullenti.ner.bank.properties',
                                             n)
                 if (inf is None):
                     continue
                 with Utils.getResourceStream(
                         'pullenti.ner.bank.properties', n) as stream:
                     buf = Utils.newArrayOfBytes(Utils.getLengthIO(stream),
                                                 0)
                     Utils.readIO(stream, buf, 0, len(buf))
                     return buf
             except Exception as ex:
                 pass
     return None
Пример #3
0
 def deserialize_string(stream : Stream) -> str:
     len0_ = SerializerHelper.deserialize_int(stream)
     if (len0_ < 0): 
         return None
     if (len0_ == 0): 
         return ""
     data = Utils.newArrayOfBytes(len0_, 0)
     stream.read(data, 0, len(data))
     return data.decode("UTF-8", 'ignore')
Пример #4
0
 def _deserialize(self, stream: Stream, kit_: 'AnalysisKit',
                  vers: int) -> None:
     from pullenti.ner.core.internal.SerializerHelper import SerializerHelper
     super()._deserialize(stream, kit_, vers)
     if (vers == 0):
         buf = Utils.newArrayOfBytes(8, 0)
         stream.read(buf, 0, 8)
         lo = int.from_bytes(buf[0:0 + 8], byteorder="little")
         self.value = str(lo)
     else:
         self.value = SerializerHelper.deserialize_string(stream)
     self.typ = (Utils.valToEnum(SerializerHelper.deserialize_int(stream),
                                 NumberSpellingType))
 def get_bytes(name : str) -> bytearray:
     
     names = Utils.getResourcesNames('pullenti.ner.core.properties', '.csv;.png')
     for n in names: 
         if (Utils.endsWithString(n, name, True)): 
             if (len(name) < len(n)): 
                 if (n[len(n) - len(name) - 1] != '.'): 
                     continue
             try: 
                 inf = Utils.getResourceInfo('pullenti.ner.core.properties', n)
                 if (inf is None): 
                     continue
                 with Utils.getResourceStream('pullenti.ner.core.properties', n) as stream: 
                     buf = Utils.newArrayOfBytes(stream.length, 0)
                     stream.read(buf, 0, len(buf))
                     return buf
             except Exception as ex: 
                 pass
     return None
 def deflate_gzip(str0_: io.IOBase, res: io.IOBase) -> None:
     with gzip.GzipFile(fileobj=str0_, mode='r') as deflate:
         buf = Utils.newArrayOfBytes(100000, 0)
         while True:
             i = -1
             try:
                 ii = 0
                 while ii < len(buf):
                     buf[ii] = (0)
                     ii += 1
                 i = Utils.readIO(deflate, buf, 0, len(buf))
             except Exception as ex:
                 for i in range(len(buf) - 1, -1, -1):
                     if (buf[i] != (0)):
                         Utils.writeIO(res, buf, 0, i + 1)
                         break
                 else:
                     i = -1
                 break
             if (i < 1):
                 break
             Utils.writeIO(res, buf, 0, i)
Пример #7
0
 def deflate_gzip(str0_: Stream, res: Stream) -> None:
     with Stream(gzip.GzipFile(fileobj=str0_.getstream(),
                               mode='r')) as deflate:
         buf = Utils.newArrayOfBytes(100000, 0)
         len0_ = len(buf)
         while True:
             i = -1
             try:
                 ii = 0
                 while ii < len0_:
                     buf[ii] = (0)
                     ii += 1
                 i = deflate.read(buf, 0, len0_)
             except Exception as ex:
                 for i in range(len0_ - 1, -1, -1):
                     if (buf[i] != (0)):
                         res.write(buf, 0, i + 1)
                         break
                 else:
                     i = -1
                 break
             if (i < 1):
                 break
             res.write(buf, 0, i)
Пример #8
0
 def deserialize_short(stream : Stream) -> int:
     buf = Utils.newArrayOfBytes(2, 0)
     stream.read(buf, 0, 2)
     return int.from_bytes(buf[0:0+2], byteorder="little")
Пример #9
0
 def create_subsents(sent: 'Sentence') -> typing.List['Subsent']:
     if (len(sent.items) == 0):
         return None
     res = list()
     begin = sent.items[0].begin_token.begin_char
     end = sent.items[len(sent.items) - 1].end_token.end_char
     map0_ = Utils.newArrayOfBytes((end + 1) - begin, 0)
     if (sent.best_var is not None):
         for seg in sent.best_var.segs:
             if (seg is not None):
                 for li in seg.links:
                     if (li is not None and li.typ == NGLinkType.LIST):
                         i = (li.to_verb.begin_char if li.to is None else
                              li.to.source.begin_token.begin_char)
                         while i <= li.from0_.source.end_token.end_char:
                             po = i - begin
                             if (po >= 0 and (po < len(map0_))):
                                 map0_[po] = (1)
                             i += 1
     ss = Subsent()
     has_verb = False
     i = 0
     first_pass3469 = True
     while True:
         if first_pass3469: first_pass3469 = False
         else: i += 1
         if (not (i < len(sent.items))): break
         it = sent.items[i]
         delim = False
         if (it.typ == SentItemType.DELIM):
             delim = True
         elif (it.typ == SentItemType.CONJ
               and map0_[it.begin_token.begin_char - begin] == (0)):
             delim = True
             if (it.source.typ == ConjunctionType.COMMA):
                 if (not has_verb):
                     delim = False
         if (not delim):
             if (it.typ == SentItemType.VERB):
                 has_verb = True
             ss.items.append(it)
             continue
         if (len(ss.items) == 0):
             ss.delims.append(it.source)
             continue
         if (len(ss.items) > 0):
             res.append(ss)
         ss = Subsent()
         has_verb = False
         ss.delims.append(it.source)
     if (len(ss.items) > 0):
         res.append(ss)
     i = 0
     first_pass3470 = True
     while True:
         if first_pass3470: first_pass3470 = False
         else: i += 1
         if (not (i < len(res))): break
         r = res[i]
         j = 0
         if (r.check(DelimType.IF)):
             has_then = False
             has_else = False
             j = (i + 1)
             while j < len(res):
                 if (res[j].check(DelimType.THEN)):
                     if (has_then):
                         break
                     res[j].owner = r
                     res[j].question = "если"
                     res[j].typ = SemFraglinkType.IFTHEN
                     has_then = True
                     r.is_then_else_root = True
                 elif (res[j].check(DelimType.ELSE)):
                     if (has_else):
                         break
                     res[j].owner = r
                     res[j].question = "иначе"
                     res[j].typ = SemFraglinkType.IFELSE
                     has_else = True
                     r.is_then_else_root = True
                 elif (res[j].check(DelimType.IF)):
                     if (res[j].check(DelimType.AND)):
                         res[j].owner = r
                     else:
                         break
                 j += 1
             if (not has_then and i > 0):
                 if (res[0].owner is None and res[0].only_conj()):
                     res[0].owner = r
                     res[0].question = "если"
                     r.is_then_else_root = True
                     res[0].typ = SemFraglinkType.IFTHEN
                 elif (res[0].owner is not None):
                     r.owner = res[0]
                     r.question = "если"
                     r.typ = SemFraglinkType.IFTHEN
             continue
         if (r.check(DelimType.BECAUSE)):
             has_then = False
             j = (i + 1)
             while j < len(res):
                 if (res[j].check(DelimType.THEN)):
                     if (has_then):
                         break
                     res[j].owner = r
                     res[j].question = "по причине"
                     res[j].typ = SemFraglinkType.BECAUSE
                     has_then = True
                     r.is_then_else_root = True
                 j += 1
             if (not has_then and i > 0):
                 if (res[0].owner is None and res[0].only_conj()):
                     res[0].owner = r
                     res[0].question = "по причине"
                     r.is_then_else_root = True
                     res[0].typ = SemFraglinkType.BECAUSE
                     continue
             if (not has_then and ((i + 1) < len(res))):
                 if (res[i + 1].owner is None and res[i + 1].only_conj()):
                     res[i + 1].owner = r
                     res[i + 1].question = "по причине"
                     r.is_then_else_root = True
                     res[i + 1].typ = SemFraglinkType.BECAUSE
                     continue
             continue
         if (r.check(DelimType.BUT)):
             if (i > 0):
                 if (res[i - 1].owner is None and res[i - 1].only_conj()):
                     res[i - 1].owner = r
                     res[i - 1].question = "но"
                     r.is_then_else_root = True
                     res[i - 1].typ = SemFraglinkType.BUT
                     continue
         if (r.check(DelimType.WHAT)):
             if (i > 0):
                 if (res[i - 1].owner is None and res[i - 1].only_conj()):
                     res[i - 1].owner = r
                     res[i - 1].question = "что"
                     r.is_then_else_root = True
                     res[i - 1].typ = SemFraglinkType.WHAT
                     continue
         if (r.check(DelimType.FOR)):
             if ((i + 1) < len(res)):
                 if (res[i + 1].owner is None and res[i + 1].only_conj()):
                     res[i + 1].owner = r
                     res[i + 1].question = "чтобы"
                     r.is_then_else_root = True
                     res[i + 1].typ = SemFraglinkType.FOR
                     continue
             if (i > 0):
                 if (res[i - 1].owner is None and res[i - 1].only_conj()):
                     res[i - 1].owner = r
                     res[i - 1].question = "чтобы"
                     r.is_then_else_root = True
                     res[i - 1].typ = SemFraglinkType.FOR
                     continue
     i = 1
     first_pass3471 = True
     while True:
         if first_pass3471: first_pass3471 = False
         else: i += 1
         if (not (i < len(res))): break
         r = res[i]
         if (not r.check(DelimType.AND) or r.owner is not None):
             continue
         for j in range(i - 1, -1, -1):
             rr = res[j]
             if (rr.can_be_next_in_list(r)
                     and ((rr.owner is None or
                           ((rr.owner_root is not None
                             and rr.owner_root.can_be_next_in_list(r)))))):
                 if (r.check_or()):
                     rr.is_or = True
                 rr.items.extend(r.items)
                 del res[i]
                 i -= 1
                 break
     return res