예제 #1
0
def get_homonymous_multi_rooted():
    multi_root_words = get_dicts_from_csv_file(
        'src_dict/Многокорневые слова.csv')

    multi_root_names = []
    for multi_root_word in multi_root_words:
        for root_index_key in list(multi_root_word):
            if multi_root_word[root_index_key]:
                multi_root_names.append(
                    get_socket_word_form(multi_root_word[root_index_key]).name)

    socket_group_list = list(read_src_socket_bs('src_dict/БГ 10.04.21.txt'))

    homonymous_multi_rooted = []

    for socket_group in socket_group_list:
        for sub_group in socket_group.sub_groups:
            title_word_form = sub_group.title_word_form
            for word_form in sub_group.socket_word_forms:
                if (not word_form.invisible and not word_form.root_index):
                    if word_form.name in multi_root_names:
                        print(word_form)
                        if str(word_form) == str(title_word_form):
                            homonymous_multi_rooted.append(str(word_form))
                        else:
                            homonymous_multi_rooted.append(' < '.join([
                                str(word_form),
                                str(title_word_form),
                            ]))

    homonymous_multi_rooted = sorted(
        homonymous_multi_rooted,
        key=lambda x: x.replace('*', '').strip().lower())
    save_list_to_file(homonymous_multi_rooted,
                      'out/Слова, омонимичные многокорневым словам.txt')
예제 #2
0
def find_all_multi_rooted_words_from_bs():
    """
    15. Найти в док-те БС 06.04.21.txt все слова (ЗС групп и одиночки)
    из док-та Многокорневые слова.xlsx
    и создать список строк с такими словами - док-т Многокорневые слова БС.txt .
    Учитывая п.п. 1 и 2 Правил соотношения БГ и БС,
    сравнить каждую строку док-та Многокорневые слова БС.txt
    с каждой ячейкой со словом в док-те Многокорневые слова.xlsx .
    """

    multi_root_words = get_dicts_from_csv_file(
        'out/Многокорневые слова.csv')

    word_forms_bases = list(read_src_bs('src_dict/БС 06.04.21.txt'))

    multi_root_bg_forms = []

    for multi_root_word in multi_root_words:
        for root_index_key in list(multi_root_word)[1:]:
            if multi_root_word[root_index_key]:
                socket_form = get_socket_word_form(
                    multi_root_word[root_index_key]
                )
                multi_root_bg_forms.append(
                    ' '.join(filter(
                        None,
                        [
                            socket_form.name,
                            socket_form.idf,
                            ' '.join(socket_form.info),
                            socket_form.note.replace('* ', ''),
                        ])))

    multi_root_bs_forms = []

    for group_word_form in word_forms_bases:
        title_form = group_word_form.title_word_form
        src_title_form = ' '.join(filter(
            None,
            [
                title_form.name,
                title_form.idf,
                ' '.join(title_form.info),
                (title_form.note.replace('.* ', '')
                 if '<' not in title_form.note else None),
            ]))
        if src_title_form in multi_root_bg_forms:
            print(title_form)
            multi_root_bs_forms.append(str(title_form))

    multi_root_bs_forms = sorted(
        multi_root_bs_forms,
        key=lambda x: x.replace('*', '').lower().strip()
    )

    save_list_to_file(multi_root_bs_forms, 'out/Многокорневые слова БС.txt')
예제 #3
0
def save_groups_to_bs():
    src_groups = get_dicts_from_csv_file('Добавить группы в БС.csv')
    add_groups_to_bs_list = []

    for src_dict in src_groups:
        add_groups_to_bs_list.append(get_group_word_form(src_dict))

    save_bs_dicts_to_txt(sorted(add_groups_to_bs_list),
                         'out/Добавить группы в БС. Сущ-ные.txt',
                         encoding='utf-8')
예제 #4
0
def check_socket_bs():
    multi_root_words = get_dicts_from_csv_file('out/Многокорневые слова.csv')
    multi_root_bs_forms = get_string_list_from_file(
        'out/Многокорневые слова БС.txt')
    multi_root_bs_forms = [
        get_bs_title_word_form(x).name for x in multi_root_bs_forms
    ]

    for multi_root_word in multi_root_words:
        for root_index_key in list(multi_root_word)[1:]:
            if multi_root_word[root_index_key]:
                socket_form = get_socket_word_form(
                    multi_root_word[root_index_key])
                if socket_form.name not in multi_root_bs_forms:
                    print(socket_form)
예제 #5
0
def save_groups_to_bs():
    """Ещё раз, пож-ста, п. 3.
    3. Используя списки на вкладке "Добавить группы в БС"
    док-та Существительные.xlsx ,
    а также шаблоны, приведённые на вкладках "ШАБЛОНЫ ед.ч." и "ШАБЛОНЫ мн.ч."
    того же док-та,
    создать док-т Добавить группы в БС. Сущ-ные.txt ."""
    src_groups = get_dicts_from_csv_file('Добавить группы в БС.csv')
    add_groups_to_bs_list = []

    for src_dict in src_groups:
        add_groups_to_bs_list.append(get_group_word_form(src_dict))

    save_bs_dicts_to_txt(sorted(add_groups_to_bs_list),
                         'out/Добавить группы в БС. Сущ-ные.txt',
                         encoding='utf-8')
예제 #6
0
def save_groups_to_bs():
    """
    10. Используя списки на вкладке "Глаголы" док-та Глаголы.xlsx ,
    а также шаблоны, приведённые на вкладках "Шаблоны НБ вр.", "Шаблоны Причастия"
    и "Шаблоны Остальное" того же док-та,
    создать док-т Добавить группы в БС. Глаголы.txt .
    """
    src_groups = get_dicts_from_csv_file('Добавить глаголы.csv')
    add_groups_to_bs_list = []

    for src_dict in src_groups:
        add_groups_to_bs_list.append(get_group_word_form(src_dict))

    save_bs_dicts_to_txt(sorted(add_groups_to_bs_list),
                         'out/Добавить группы в БС. Глаголы.txt',
                         encoding='utf-8')
예제 #7
0
def find_all_multi_rooted_words_from_bs():
    multi_root_words = get_dicts_from_csv_file(
        'src_dict/Многокорневые слова.csv')

    word_forms_bases = list(read_src_bs('src_dict/БС 03.02.21.txt'))

    multi_root_bg_forms = []

    for multi_root_word in multi_root_words:
        for root_index_key in list(multi_root_word)[1:]:
            if multi_root_word[root_index_key]:
                socket_form = get_socket_word_form(
                    multi_root_word[root_index_key]
                )
                multi_root_bg_forms.append(
                    ' '.join(filter(
                        None,
                        [
                            socket_form.name,
                            socket_form.idf,
                            ' '.join(socket_form.info),
                            socket_form.note.replace('* ', '')
                        ])))

    multi_root_bs_forms = []

    for group_word_form in word_forms_bases:
        title_form = group_word_form.title_word_form
        src_title_form = ' '.join(filter(
            None,
            [
                title_form.name,
                title_form.idf,
                ' '.join(title_form.info),
                title_form.note.replace('.* ', '')
            ]))
        if src_title_form in multi_root_bg_forms:
            print(title_form)
            multi_root_bs_forms.append(str(title_form))

    multi_root_bs_forms = sorted(
        multi_root_bs_forms,
        key=lambda x: x.replace('*', '').lower().strip()
    )

    save_list_to_file(multi_root_bs_forms, 'out/Многокорневые слова БС.txt')
예제 #8
0
def save_groups_to_bs():
    """
    6. Используя списки на вкладке "Прил-ные в столбик" док-та Прилагательные.xlsx ,
    а также шаблоны, приведённые на вкладках
    "ШАБЛОНЫ полн. ф., прев. ст."
    и "ШАБЛОНЫ кр. ф., срав. ст."
    того же док-та,
    создать док-т Добавить группы в БС. Прил-ные.txt .
    """
    src_groups = get_dicts_from_csv_file('Прилагательные.csv')
    add_groups_to_bs_list = []

    for src_dict in src_groups:
        add_groups_to_bs_list.append(get_socket_group_word_form(src_dict))

    save_bs_dicts_to_txt(sorted(add_groups_to_bs_list),
                         'out/Добавить группы в БС. Прил-ные.txt',
                         encoding='utf-8')
예제 #9
0
def add_groups_to_bs():
    """3. Используя списки на вкладке "Добавить группы в БС"
    док-та Существительные.xlsx ,
    а также шаблоны, приведённые на вкладках "ШАБЛОНЫ ед.ч." и "ШАБЛОНЫ мн.ч."
    того же док-та,
    создать док-т Добавить группы в БС. Сущ-ные.txt ."""
    src_groups = get_dicts_from_csv_file('Добавить группы в БС.csv')
    add_groups_to_bs_list = []

    for src_dict in src_groups:
        add_groups_to_bs_list.append(get_group_word_form(src_dict))

    save_bs_dicts_to_txt(sorted(add_groups_to_bs_list),
                         'out/Добавить группы в БС. Сущ-ные.txt',
                         encoding='utf-8')

    word_forms_bases = list(read_src_bs('src_dict/БС 13.12.20.txt'))
    word_forms_bases += add_groups_to_bs_list
    save_bs_dicts_to_txt(sorted(word_forms_bases), 'out/БС 14.12.20.txt')
예제 #10
0
def check_socket_bs():
    multi_root_words = get_dicts_from_csv_file('out/Многокорневые слова.csv')
    multi_root_bs_forms = get_string_list_from_file(
        'out/Многокорневые слова БС.txt')
    multi_root_bs_forms = [
        get_bs_title_word_form(x).name for x in multi_root_bs_forms
    ]

    not_found_in_bs = []

    for multi_root_word in multi_root_words:
        for root_index_key in list(multi_root_word)[1:]:
            if multi_root_word[root_index_key]:
                socket_form = get_socket_word_form(
                    multi_root_word[root_index_key])
                if socket_form.name not in multi_root_bs_forms:
                    print(socket_form)
                    not_found_in_bs.append(str(socket_form))

    save_list_to_file(not_found_in_bs, 'out/Не найденные в БС.txt')
예제 #11
0
def ordinary_words_bg():
    socket_group_list = list(read_src_socket_bs(
        'src_dict/БГ 01.03.21.txt'))

    exclusion_list = []

    # Многокорневые слова
    multi_root_words = get_dicts_from_csv_file(
        'src_dict/Многокорневые слова.csv')
    multi_root_bg_forms = []

    for multi_root_word in multi_root_words:
        for root_index_key in list(multi_root_word):
            if multi_root_word[root_index_key]:
                multi_root_bg_forms.append(multi_root_word[root_index_key])

    exclusion_list += multi_root_bg_forms

    # Повторы в группах
    replays_in_groups = []

    with open('src_dict/Повторы в группах.txt', encoding='utf-8') as f_in:
        groups = (x.strip() for x in f_in.read().split('\n\n'))
        for group in groups:
            for line in group.split('\n')[1:]:
                if not line.startswith('!'):
                    replays_in_groups.append(line)

    exclusion_list += replays_in_groups

    # Омонимы БГ
    homonyms_bg = get_string_list_from_file('src_dict/Омонимы БГ.txt')
    homonyms_bg_str_form = []

    for homonym in homonyms_bg:
        socket_form = get_socket_word_form(homonym)
        string_form = ' '.join(filter(
            None, [
                socket_form.invisible,
                socket_form.name,
                socket_form.root_index,
                socket_form.idf,
                ' '.join(socket_form.info),
                socket_form.note,
                socket_form.etml_note,
            ]
        ))
        homonyms_bg_str_form.append(string_form)

    exclusion_list += homonyms_bg_str_form

    # Слова, омонимичные многокорневым
    homonymous_words = get_string_list_from_file(
        'src_dict/Слова, омонимичные многокорневым словам.txt')
    homonymous_words_str_form = []

    for word in homonymous_words:
        socket_form = get_socket_word_form(word)
        string_form = ' '.join(filter(
            None, [
                socket_form.invisible,
                socket_form.name,
                socket_form.root_index,
                socket_form.idf,
                ' '.join(socket_form.info),
                socket_form.note,
                socket_form.etml_note,
            ]
        ))
        homonymous_words_str_form.append(string_form)

    exclusion_list += homonymous_words_str_form

    # Обычные слова БГ
    ordinary_words_bg_list = []

    for socket_group in socket_group_list:
        for sub_group in socket_group.sub_groups:
            for word_form in sub_group.socket_word_forms:
                if not word_form.invisible:
                    if str(word_form) not in exclusion_list:
                        ordinary_words_bg_list.append(word_form)

    ordinary_words_bg_list = [str(x) for x in sorted(ordinary_words_bg_list)]

    save_list_to_file(ordinary_words_bg_list, 'out/Обычные слова БГ.txt')
예제 #12
0
def check_replays():
    """
    14. Проверить каждое слово из док-та Excel Многокорневые слова.xlsx

    на количество повторов в док-те БГ 12.02.21.txt ,
    используя следующую таблицу:

    корневой индекс 2* / 3** - 1 повтор в БГ;
    корневой индекс 2 / 2! / 3* / 4** - 2 повтора в БГ;
    корневой индекс 3 / 3! / 4* / 5** - 3 повтора в БГ;
    корневой индекс 4 / 4! / 5* / 6** - 4 повтора в БГ;
    корневой индекс 5 / 5! / 6* / 7** - 5 повторов в БГ;
    корневой индекс 6 / 6! / 7* - 6 повторов в БГ;
    корневой индекс 7 / 7! - 7 повторов в БГ;

    и на абсолютную идентичность строки со словом в док-те
    Многокорневые слова.xlsx
    со ВСЕМИ строками с этим словом в док-те БГ 12.02.21.txt .
    Т.е. напр. строка из док-та Многокорневые слова.xlsx
    автобус 3* .СеИ неод мI1 мнII1 * auto(mobile) (omni)bus
    должна ИМЕННО В ТАКОМ виде 2 раза присутствовать в док-те БГ 12.02.21.txt .
    """

    multi_root_words = get_dicts_from_csv_file('out/Многокорневые слова.csv')

    socket_group_word_form_list = list(
        read_src_socket_bs('src_dict/БГ 12.02.21.txt'))

    root_index_ds = {
        '2': [],
        '2!': [],
        '2*': [],
        '3': [],
        '3!': [],
        '3*': [],
        '3**': [],
        '4': [],
        '4!': [],
        '4*': [],
        '4**': [],
        '5': [],
        '5!': [],
        '5*': [],
        '5**': [],
        '6': [],
        '6!': [],
        '6*': [],
        '6**': [],
        '7': [],
        '7!': [],
        '7*': [],
        '7**': [],
    }

    count_index = {
        '2': 2,
        '2!': 2,
        '2*': 1,
        '3': 3,
        '3!': 3,
        '3*': 2,
        '3**': 1,
        '4': 4,
        '4!': 4,
        '4*': 3,
        '4**': 2,
        '5': 5,
        '5!': 5,
        '5*': 4,
        '5**': 3,
        '6': 6,
        '6!': 6,
        '6*': 5,
        '6**': 4,
        '7': 7,
        '7!': 7,
        '7*': 6,
        '7**': 5,
    }

    incorrect_replays = []

    for multi_root_word in multi_root_words:
        for root_index_key in list(multi_root_word)[1:]:
            if multi_root_word[root_index_key]:
                root_index_ds[root_index_key].append(
                    multi_root_word[root_index_key])

    for root_index in root_index_ds:
        for multi_root_word in root_index_ds[root_index]:
            count_word = 0
            for socket_group_word_form in socket_group_word_form_list:
                for socket_word_form in socket_group_word_form.socket_word_forms:
                    if multi_root_word == str(socket_word_form):
                        count_word += 1
            if count_word != count_index[root_index]:
                print(multi_root_word)
                incorrect_replays.append(f'{multi_root_word} - {count_word}')

    save_list_to_file(incorrect_replays, 'out/Не корректные повторы.txt')
예제 #13
0
def check_replays():
    multi_root_words = get_dicts_from_csv_file('out/Многокорневые слова.csv')

    socket_group_word_form_list = list(
        read_src_socket_bs('src_dict/БГ 10.04.21.txt'))

    root_index_ds = {
        '2': [],
        '2!': [],
        '2*': [],
        '3': [],
        '3!': [],
        '3*': [],
        '3**': [],
        '4': [],
        '4!': [],
        '4*': [],
        '4**': [],
        '5': [],
        '5!': [],
        '5*': [],
        '5**': [],
        '6': [],
        '6!': [],
        '6*': [],
        '6**': [],
        '7': [],
        '7!': [],
        '7*': [],
        '7**': [],
    }

    count_index = {
        '2': 2,
        '2!': 2,
        '2*': 1,
        '3': 3,
        '3!': 3,
        '3*': 2,
        '3**': 1,
        '4': 4,
        '4!': 4,
        '4*': 3,
        '4**': 2,
        '5': 5,
        '5!': 5,
        '5*': 4,
        '5**': 3,
        '6': 6,
        '6!': 6,
        '6*': 5,
        '6**': 4,
        '7': 7,
        '7!': 7,
        '7*': 6,
        '7**': 5,
    }

    incorrect_replays = []

    for multi_root_word in multi_root_words:
        for root_index_key in list(multi_root_word)[1:]:
            if multi_root_word[root_index_key]:
                root_index_ds[root_index_key].append(
                    multi_root_word[root_index_key])

    for root_index in root_index_ds:
        for multi_root_word in root_index_ds[root_index]:
            count_word = 0
            for socket_group_word_form in socket_group_word_form_list:
                for socket_word_form in socket_group_word_form.socket_word_forms:
                    if multi_root_word == str(socket_word_form):
                        count_word += 1
            if count_word != count_index[root_index]:
                print(multi_root_word)
                incorrect_replays.append(f'{multi_root_word} - {count_word}')

    save_list_to_file(incorrect_replays, 'out/Не корректные повторы.txt')