コード例 #1
0
    def test_doc_parser(self):
        db = get_mongodb_connection()
        if db is None:  # TODO: this is a weird way of detecting we're on CI
            return

        FILENAME = "/Users/artem/work/nemo/goil/IN/Другие договоры/Договор Формула.docx"

        wp = WordDocParser()
        res = wp.read_doc(FILENAME)

        doc: LegalDocument = LegalDocument('')
        doc.parse()

        last = 0
        for d in res['documents']:
            for p in d['paragraphs']:
                header_text = p['paragraphHeader']['text'] + '\n'
                body_text = p['paragraphBody']['text'] + '\n'

                header = LegalDocument(header_text)
                header.parse()
                # self.assertEqual(self.n(header_text), header.text)

                doc += header
                headerspan = (last, len(doc.tokens_map))
                print(headerspan)
                last = len(doc.tokens_map)

                body = LegalDocument(body_text)
                body.parse()
                doc += body
                bodyspan = (last, len(doc.tokens_map))

                header_tag = SemanticTag('headline', header_text, headerspan)
                body_tag = SemanticTag('paragraphBody', None, bodyspan)

                print(header_tag)
                # print(body_tag)
                para = Paragraph(header_tag, body_tag)
                doc.paragraphs.append(para)
                last = len(doc.tokens_map)

                h_subdoc = doc.subdoc_slice(para.header.as_slice())
                b_subdoc = doc.subdoc_slice(para.body.as_slice())
                # self.assertEqual(self.n(header_text), h_subdoc.text)
                # self.assertEqual(self.n(body_text), b_subdoc.text)

        print('-' * 100)
        print(doc.text)

        headers = [
            doc.subdoc_slice(p.header.as_slice()) for p in doc.paragraphs
        ]
        print('-' * 100)
コード例 #2
0
  def test_concat_docs(self):

    tm1 = LegalDocument('text prefix \n').parse()
    tm2 = LegalDocument('more words').parse()

    N = 10
    expected_tokens = len(tm1.tokens) + N * len(tm2.tokens)
    for _ in range(N):
      tm1 += tm2

    # //tm1.parse()
    self.assertEqual(expected_tokens, len(tm1.tokens))
コード例 #3
0
  def test_concat_docs_2(self):

    tm1 = LegalDocument('text prefix \n').parse()
    tm2 = LegalDocument('\rmore words').parse()

    N = 10
    expected_tokens = len(tm1.tokens_cc) + N * len(tm2.tokens_cc)
    for _ in range(N):
      tm1 += tm2

    print(tm1.tokens_map_norm._full_text)
    # //tm1.parse()
    self.assertEqual(expected_tokens, len(tm1.tokens_cc))
    self.assertEqual('more words', tm1.tokens_map_norm.text_range((3, 5)))
コード例 #4
0
    def test_find_agent_fond_2(self):
        txt = '''           основании Устава, с одной стороны, и Фонд «Благо», именуемое в дальнейшем «Благополучатель», в лице председателя'''

        r = re.compile(r_quoted_name, re.MULTILINE)
        x = r.search(n(txt))
        self.assertEqual('Благо', x['name'])

        r = re.compile(r_type_and_name, re.MULTILINE)
        x = r.search(n(txt))
        self.assertEqual('Фонд', x['type'])
        self.assertEqual('Благо', x['name'])

        r = re.compile(complete_re_str_org, re.MULTILINE)
        x = r.search(n(txt))
        self.assertEqual('Фонд', x['type'])
        self.assertEqual('Благо', x['name'])

        r = re.compile(complete_re_str, re.MULTILINE)
        x = r.search(n(txt))
        self.assertEqual('Фонд', x['type'])
        self.assertEqual('Благо', x['name'])

        r = complete_re
        x = r.search(n(txt))
        self.assertEqual('Фонд', x['type'])
        self.assertEqual('Благо', x['name'])

        tags: List[SemanticTag] = find_org_names(LegalDocument(txt).parse(),
                                                 decay_confidence=False)
        self._validate_org(tags, 1, ('Фонд', 'Благо', 'Благополучатель'))
コード例 #5
0
  def test_slice_doc_1(self):
    text = 'этилен мама этилен'
    __doc = LegalDocument(text)
    __doc.parse()

    subdoc = __doc.subdoc_slice(slice(2, 3))
    self.assertEqual('этилен', subdoc.text)
コード例 #6
0
 def test_normalize_doc_slice_1(self):
   doc_text = """\n\n\nАкционерное 3`4`` общество «Газпром - 'Вибраниум' и Криптонит» (АО «ГВК»), "именуемое" в собранием `` акционеров собранием `` акционеров \'\' \
       дальнейшем «Благотворитель», 
       """
   doc_o = LegalDocument(doc_text)
   doc_o.parse()
   print(doc_o.tokens_map.tokens)
コード例 #7
0
    def test_find_agent_fond(self):
        txt = '''Одобрить предоставление безвозмездной финансовой помощи Фонду «Олимп» в размере 1500000 (один миллион пятьсот тысяч) рублей \
     для создания и организации работы интернет-платформы «Олимп» по поддержке стартапов в сфере взаимопомощи.
    Время подведения итогов голосования – 18 часов 00 минут.'''

        r = re.compile(r_quoted_name, re.MULTILINE)
        x = r.search(n(txt))
        self.assertEqual('Олимп', x['name'])

        r = re.compile(r_type_and_name, re.MULTILINE)
        x = r.search(n(txt))
        self.assertEqual('Фонду', x['type'])
        self.assertEqual('Олимп', x['name'])

        r = re.compile(complete_re_str_org, re.MULTILINE)
        x = r.search(n(txt))
        self.assertEqual('Фонду', x['type'])
        self.assertEqual('Олимп', x['name'])

        r = re.compile(complete_re_str, re.MULTILINE)
        x = r.search(n(txt))
        self.assertEqual('Фонду', x['type'])
        self.assertEqual('Олимп', x['name'])

        r = complete_re
        x = r.search(n(txt))
        self.assertEqual('Фонду', x['type'])
        self.assertEqual('Олимп', x['name'])

        tags: List[SemanticTag] = find_org_names(LegalDocument(txt).parse(),
                                                 decay_confidence=False)
        self._validate_org(tags, 1, ('Фонду', 'Олимп', None))
コード例 #8
0
    def test_org_dict_4_2(self):
        t = n(
            """Государственное автономное  учреждение дополнительного профессионального образования Свердловской области «Армавирский учебно-технический центр»,  на основании Лицензии на право осуществления образовательной деятельности в лице директора  Птицына Евгения Георгиевича, действующего на основании Устава, с одной стороны, """
        )

        tags: List[SemanticTag] = find_org_names(LegalDocument(t).parse())
        self._validate_org(tags, 1,
                           ('Государственное автономное учреждение',
                            'Армавирский учебно-технический центр', None))
コード例 #9
0
    def test_org_dict_0_1(self):

        t0 = """Общество с ограниченной ответственностью «Газпромнефть-сахалин», в лице Генерального директора, Имя Имя Имя, действующего на основании Устава, именуемое в дальнейшем «Заказчик», и ЧАСТНОЕ""" \
             + _suffix
        tags: [SemanticTag] = find_org_names(LegalDocument(t0).parse())

        self._validate_org(tags, 1,
                           ('Общество с ограниченной ответственностью',
                            'Газпромнефть-Сахалин', 'Заказчик'))
コード例 #10
0
    def test_checksum(self):
        d0 = LegalDocument("aasasasasas aasasas").parse()
        d = LegalDocument("aasasasasas aasasas").parse()
        d1 = LegalDocument("bgfgjfgdfg dfgj d gj").parse()

        print(d.checksum)
        self.assertIsNotNone(d.checksum)
        self.assertTrue(d.checksum != 0)

        self.assertEqual(d0.checksum, d.checksum)
        self.assertNotEqual(d0.checksum, d1.checksum)

        self.assertEqual(d0.checksum, DocumentJson(d0).checksum)
        self.assertEqual(d.checksum, DocumentJson(d).checksum)
        self.assertEqual(d1.checksum, DocumentJson(d1).checksum)

        self.assertEqual(d1.checksum, d1.checksum)
        self.assertEqual(d1.get_checksum(), d1.get_checksum())
コード例 #11
0
  def test_PARAGRAPH_DELIMITER_docs(self):

    tm1 = LegalDocument(f'text\rprefix {PARAGRAPH_DELIMITER}  postfix').parse()

    expected_tokens = ['text', 'prefix', '\n', 'postfix']

    self.assertEqual(expected_tokens, tm1.tokens)
    self.assertEqual('text\rprefix', tm1.tokens_map.text_range((0, 2)))
    self.assertEqual('text\rprefix', tm1.tokens_map_norm.text_range((0, 2)))
コード例 #12
0
    def test_org_dict_2(self):

        t = n("""
    ООО «Газпромнефть-Региональные продажи» в дальнейшем «БлаготворЮтель», с другой стороны
    """)

        tags: List[SemanticTag] = find_org_names(LegalDocument(t).parse())
        self._validate_org(
            tags, 1, ('Общество с ограниченной ответственностью',
                      'Газпромнефть-Региональные продажи', 'БлаготворЮтель'))
コード例 #13
0
    def test_org_dict_3_1(self):

        t = n("""
    Федеральное государственное бюджетное образовательное учреждение высшего образования «Государственный университет» (ФГБОУ ВО «ГУ»), именуемое в дальнейшем «Исполнитель», в лице ____________________ Сергеева
    """)

        tags: List[SemanticTag] = find_org_names(LegalDocument(t).parse())
        self._validate_org(tags, 1, (
            'Федеральное государственное бюджетное образовательное учреждение высшего образования',
            'Государственный университет', 'Исполнитель'))
コード例 #14
0
    def test_find_ip3(self):

        t = n("""
    Сибирь , и ИП Лужин В. В., именуемый в дальнейшем « Исполнитель » , \
    с другой стороны , именуемые в дальнейшем совместно « Стороны » , а по отдельности - « Сторона » , заключили настоящий договор о нижеследующем : 
    """)

        tags: [SemanticTag] = find_org_names(LegalDocument(t).parse())
        self._validate_org(
            tags, 1,
            ('Индивидуальный предприниматель', 'Лужин В. В.', 'Исполнитель'))
コード例 #15
0
    def test_org_dict_4_1(self):

        t = n(
            """Автономная некоммерческая организация дополнительного профессионального образования «ООО»,  \
      именуемое далее Исполнитель, в лице Директора Уткиной Е.В., действующей на основании Устава, с одной стороны,"""
        )

        tags: List[SemanticTag] = find_org_names(LegalDocument(t).parse())
        self._validate_org(
            tags, 1,
            ('Автономная некоммерческая организация', 'ООО', 'Исполнитель'))
コード例 #16
0
    def test_embedd_large(self):
        point1 = [1, 6, 4]
        emb = FakeEmbedder(point1)

        ld = LegalDocument('a b c d e f g h').parse()
        print(ld.tokens)

        emb.embedd_large(ld.tokens_map_norm, 5)

        # print(ld.embeddings)
        print(ld.tokens)
コード例 #17
0
    def test_charter_parser(self):
        # from renderer import SilentRenderer
        point1 = [1, 6, 4]
        emb = FakeEmbedder(point1)
        legal_doc = LegalDocument("1. ЮРИДИЧЕСКИЙ содержание 4.").parse()
        charter = CharterDocument(legal_doc).parse()
        charter_parser = CharterParser(emb, emb)
        actx = AuditContext()
        charter_parser.find_org_date_number(charter, actx)
        charter_parser.find_attributes(charter, actx)

        print(charter.warnings)
コード例 #18
0
    def test_org_dict_1(self):

        t = n(
            "ООО «Газпромнефть-Региональные продажи», в лице начальника управления по связям с общественностью "
            "Иванова Семена Евгеньевича, действующего на основании Доверенности в дальнейшем «Благотворитель», "
            "с другой стороны заключили настоящий Договор о нижеследующем: \n")

        tags: List[SemanticTag] = find_org_names(LegalDocument(t).parse())

        self._validate_org(
            tags, 1, ('Общество с ограниченной ответственностью',
                      'Газпромнефть-Региональные продажи', 'Благотворитель'))
コード例 #19
0
    def test_org_dict_0(self):

        t1 = 'ЧАСТНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ " БИЗНЕС ШКОЛА - СЕМИНАРЫ", ' \
             'действующее на ' \
             'основании лицензии №_____от _______., именуемое в дальнейшем «Исполнитель», ' \
             'в лице ___________ Имя Имя Имя,  ' \
             'действующего на основании Устава, и Имя Имя Имя, именуемая в дальнейшем «Слушатель», в дальнейшем совместно ' \
             'именуемые «Стороны», а по отдельности – «Сторона», заключили настоящий Договор об оказании образовательных ' \
             'услуг (далее – «Договор»)  о нижеследующем:'

        t1 = n(t1)
        # r = re.compile(r_types, re.MULTILINE)
        r = complete_re_ignore_case
        x = r.search(t1)
        print('===r_alias_prefix=', x['r_alias_prefix'])
        print('===r_quoted_name=', x['r_quoted_name'])
        print('===r_quoted_name_alias=', x['r_quoted_name_alias'])

        tags: List[SemanticTag] = find_org_names(LegalDocument(t1).parse())

        self._validate_org(tags, 1, (
            'ЧАСТНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ',
            'БИЗНЕС ШКОЛА-СЕМИНАРЫ', 'Исполнитель'))

        t = 'Общество с ограниченной ответственностью «Газпромнефть-сахалин», в лице Генерального директора, ' \
            'Имя Имя Имя, действующего на основании Устава, именуемое в дальнейшем «Заказчик», ' \
            'и ЧАСТНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ " БИЗНЕС ШКОЛА - СЕМИНАРЫ", действующее ' \
            'на основании лицензии №_____от _______., именуемое в дальнейшем «Исполнитель», в лице ___________ Имя Имя Имя, ' \
            'действующего на основании Устава, и Имя Имя Имя, именуемая в дальнейшем «Слушатель», в дальнейшем совместно ' \
            'именуемые «Стороны», а по отдельности – «Сторона», заключили ' \
            'настоящий Договор об оказании образовательных услуг (далее – «Договор») о нижеследующем:'

        tags: List[SemanticTag] = find_org_names(LegalDocument(t).parse())

        self._validate_org(tags, 2,
                           ('Общество с ограниченной ответственностью',
                            'Газпромнефть-Сахалин', 'Заказчик'))
        self._validate_org(tags, 1, (
            'ЧАСТНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ',
            'БИЗНЕС ШКОЛА-СЕМИНАРЫ', 'Исполнитель'))
コード例 #20
0
  def test_slice_doc_2(self):
    text = 'этилен мама этилен'
    __doc = LegalDocument(text)
    __doc.parse()
    tm: TextMap = __doc.tokens_map
    subdoc = __doc.subdoc_slice(slice(0, 1))
    del __doc

    tm2: TextMap = subdoc.tokens_map

    self.assertEqual('этилен', tm2[0])
    self.assertEqual('этилен', tm2.text)

    self.assertEqual(0, tm2.token_index_by_char(1))
コード例 #21
0
    def test_find_agents_person(self):
        doc_text = """Общество с ограниченной ответственностью «Кишки Бога» (ООО «Кишки Бога»), именуемое в дальнейшем «Заказчик», \
    в лице генерального директора Шприца Александра Устыныча, действующего на основании Устава, с одной \
    стороны, и Базедов Болезнь Бледнович, являющийся гражданином Российской Федерации, действующий \
    от собственного имени, именуемый в дальнейшем «Исполнитель», с другой стороны, совместно \
    именуемые «Стороны», и каждая в отдельности «Сторона», заключили настоящий """

        tags: List[SemanticTag] = find_org_names(
            LegalDocument(doc_text).parse())
        self._validate_org(tags, 2,
                           ('Общество с ограниченной ответственностью',
                            'Кишки Бога', 'Заказчик'))
        self._validate_org(tags, 1,
                           (None, 'Базедов Болезнь Бледнович', 'Исполнитель'))
コード例 #22
0
  def test_normalize_doc_tokenization(self):
    doc_text = """n\n\nАкционерное общество «Газпром - Вибраниум и Криптонит» (АО «ГВК»), именуемое в \
        дальнейшем «Благотворитель», в лице заместителя генерального директора по персоналу и \
        организационному развитию Неизвестного И.И., действующего на основании на основании Доверенности № Д-17 от 29.01.2018г, \
        с одной стороны, и Фонд поддержки социальных инициатив «Интерстеларные пущи», именуемый в дальнейшем «Благополучатель», \
        в лице Генерального директора ____________________действующего на основании Устава, с другой стороны, \
        именуемые совместно «Стороны», а по отдельности «Сторона», заключили настоящий Договор о нижеследующем:
        """
    doc = LegalDocument(doc_text)
    doc.parse()
    self.assertEqual(doc.tokens_map.text.lower(), doc.tokens_map_norm.text.lower())

    for i in range(len(doc.tokens)):
      self.assertEqual(doc.tokens[i].lower(), doc.tokens_cc[i].lower())
コード例 #23
0
    def test_find_agent_MPZ(self):
        txt = '''
      2016 год.
     Акционерное общество “Газпромнефть - МНПЗ” (АО “ГПН-МНПЗ”), именуемое в дальнейшем «Организацией» водопроводно-канализационного хозяйства'''

        txt = n(txt)

        x = re.compile(r_type_and_name, re.MULTILINE).search(n(txt))
        self.assertEqual('Акционерное общество', x['type'])
        self.assertEqual('Газпромнефть - МНПЗ', x['name'])

        tags: List[SemanticTag] = find_org_names(LegalDocument(txt).parse())
        self._validate_org(
            tags, 1,
            ('Акционерное общество', 'Газпромнефть-МНПЗ', 'Организацией'))
コード例 #24
0
    def test_org_dict_0_2(self):

        t0 = """, и 
    Общество с ограниченной ответственностью «Частная охранная \
    организация «СТАР» (ООО «ЧОО «СТАР») (Лицензия, серия ЧО № _________, регист\
    рационный № ___ от ___________., на осуществление частной охранной деятельности, \
    выдана ГУ МВД России по г. Санкт-Петербургу и Ленинградской области, предоставлена\
     на срок до _________ года), именуемое в дальнейшем «Исполнитель», в лице _______________ Гончаров\
     а Геннадия Федоровича, действующего на основании Устава, с другой стороны """

        tags: [SemanticTag] = find_org_names(LegalDocument(t0).parse())

        self._validate_org(
            tags, 1, ('Общество с ограниченной ответственностью',
                      'Частная охранная организация «СТАР»', 'Исполнитель'))
コード例 #25
0
    def test_org_dict_3(self):

        t = n("""
    Муниципальное бюджетное учреждение города Москвы «Радуга» именуемый в дальнейшем
    «Благополучатель», в лице директора Соляной Марины Александровны, действующая на основании
    Устава, с одной стороны, и ООО «Газпромнефть-Региональные продажи», аааааааа аааа в дальнейшем «Благотворитель», с другой стороны заключили настоящий Договор о
    нижеследующем:
    """)

        tags: [SemanticTag] = find_org_names(LegalDocument(t).parse(),
                                             decay_confidence=False)
        self._validate_org(tags, 2, ('Муниципальное бюджетное учреждение',
                                     'Радуга', 'Благополучатель'))
        self._validate_org(
            tags, 1, ('Общество с ограниченной ответственностью',
                      'Газпромнефть-Региональные продажи', 'Благотворитель'))
コード例 #26
0
  def test_finditer__a(self):
    from analyser.transaction_values import _re_greather_then

    text = """стоимость, равную или превышающую 2000000 ( два миллиона ) долларов сша, но менее"""
    __doc = LegalDocument(text)
    __doc.parse()
    doc = __doc.subdoc_slice(slice(2, len(__doc.tokens_map)))
    tm = doc.tokens_map
    iter = tm.finditer(_re_greather_then)

    spans_ = [t for t in iter]
    spans = spans_[0]

    self.assertEqual('превышающую', tm.text_range(spans))
    self.assertEqual(2, spans[0])
    self.assertEqual(3, spans[1])
コード例 #27
0
    def test_org_dict(self):

        t = """
    Муниципальное бюджетное учреждение города Москвы «Радуга» именуемый в дальнейшем
    «Благополучатель», в лице директора Соляной Марины Александровны, действующая на основании
    Устава, с одной стороны, и 
    
    ООО «Газпромнефть-Региональные продажи» в лице начальника управления по связям с общественностью Иванова Семена Евгеньевича, действующего на основании Доверенности в дальнейшем «Благотворитель», с другой стороны заключили настоящий Договор о нижеследующем:
    """ + _suffix

        tags: List[SemanticTag] = find_org_names(LegalDocument(t).parse())
        self._validate_org(tags, 2, ('Муниципальное бюджетное учреждение',
                                     'Радуга', 'Благополучатель'))
        self._validate_org(
            tags, 1, ('Общество с ограниченной ответственностью',
                      'Газпромнефть-Региональные продажи', 'Благотворитель'))
コード例 #28
0
  def test_tokens_in_range_start_from_space(self):
    text = ' мама'
    tm = TextMap(text)

    self.assertEqual(1, tm.map[0][0])
    self.assertEqual(0, tm.token_index_by_char(0))

    txt = ' ' * 20 + '''основании Устава, с одной стороны, и Фонд «Благо»'''
    # tm = TextMap(txt)
    doc = LegalDocument(txt).parse()
    tm = doc.tokens_map
    print(tm.map[0])
    print(tm.tokens[11])
    print(tm.map[11])
    print(f'[{doc.tokens_map.text}]')
    print(f'[{doc.text}]')
コード例 #29
0
    def test_find_agents_1(self):
        doc_text = """Акционерное общество «Газпромнефть - мобильная карта» (АО «ГВК»), именуемое в \
    дальнейшем «Благотворитель», в лице заместителя генерального директора по персоналу и \
    организационному развитию Неизвестного И.И., действующего на основании на основании Доверенности № Д-17 от 29.01.2018г, \
    с одной стороны, и Фонд поддержки социальных инициатив «Интерстеларные пущи», именуемый в дальнейшем «Благополучатель», \
    в лице Генерального директора ____________________действующего на основании Устава, с другой стороны, \
    именуемые совместно «Стороны», а по отдельности «Сторона», заключили настоящий Договор о нижеследующем:
    """

        tags: List[SemanticTag] = find_org_names(
            LegalDocument(doc_text).parse())
        self._validate_org(tags, 1,
                           ('Акционерное общество',
                            'Газпромнефть-Мобильная карта', 'Благотворитель'))
        self._validate_org(tags, 2, ('Фонд поддержки социальных инициатив',
                                     'Интерстеларные пущи', 'Благополучатель'))
コード例 #30
0
    def test_find_agent_no_comma(self):
        txt_full = 'Акционерное Общество «Газпромнефть – Терминал» именуемое в дальнейшем «Продавец», в лице генерального ' \
                   'директора, действующего на основании Устава, с одной стороны, и ООО «Ромашка», именуемое в ' \
                   'дальнейшем «Покупатель», в лице Петрова П.П., действующего на основании Устава, с другой стороны, совместно ' \
                   'именуемые «Стороны», а по отдельности - «Сторона», заключили настоящий договор (далее по тексту – ' \
                   'Договор) о нижеследующем:'
        doc = LegalDocument(txt_full).parse()
        print(doc.text)

        txt = txt_full[150:]

        r = re.compile(r_quoted_name, re.MULTILINE)
        normalized_txt = n(txt)
        x = r.search(normalized_txt)
        self.assertEqual('Ромашка', x['name'])

        r = re.compile(r_type_and_name, re.MULTILINE)
        x = r.search(normalized_txt)
        self.assertEqual('ООО', x['type'])
        self.assertEqual('Ромашка', x['name'])

        r = re.compile(complete_re_str_org, re.MULTILINE)
        x = r.search(normalized_txt)
        self.assertEqual('ООО', x['type'])
        self.assertEqual('Ромашка', x['name'])

        r = re.compile(complete_re_str, re.MULTILINE)
        x = r.search(normalized_txt)
        self.assertEqual('ООО', x['type'])
        self.assertEqual('Ромашка', x['name'])
        self.assertEqual('Покупатель', x['alias'])
        print('r_alias_prefix=', x['r_alias_prefix'])
        print('_alias_ext=', x['_alias_ext'])

        r = complete_re
        x = r.search(normalized_txt)
        self.assertEqual('ООО', x['type'])
        self.assertEqual('Ромашка', x['name'])

        tags: List[SemanticTag] = find_org_names(doc, decay_confidence=False)
        self._validate_org(
            tags, 1,
            ('Акционерное общество', 'Газпромнефть-Терминал', 'Продавец'))
        self._validate_org(tags, 2,
                           ('Общество с ограниченной ответственностью',
                            'Ромашка', 'Покупатель'))