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
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
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')
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)
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)
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")
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