Pt.py: различия между версиями
Перейти к навигации
Перейти к поиску
Ӧньӧ Лав (обсуждение | вклад) (Новая страница: « import os; import sys; import re; import glob; # Считываем русский файл в переменную # Указываем путь к папке, в которой нужно искать файлы folder_path = os.path.abspath(os.curdir)+"/input/" # Получаем список файлов ru file_list = glob.glob(folder_path + '/*_ru*') # Перебираем файлы for file_path in file_list: # Получаем т...») |
Ӧньӧ Лав (обсуждение | вклад) Нет описания правки |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
Скрипт для разбивки текстов на предложения по точке с учетом исключений для русского, коми и удмуртского языков. | |||
import os; | |||
import os; | |||
import sys; | import sys; | ||
import re; | import re; | ||
import glob; | import glob; | ||
# Считываем русский файл в переменную | # Считываем '''русский''' файл в переменную | ||
# Указываем путь к папке, в которой нужно искать файлы | # Указываем путь к папке, в которой нужно искать файлы | ||
folder_path = os.path.abspath(os.curdir)+"/input/" | folder_path = os.path.abspath(os.curdir)+"/input/" | ||
Строка 46: | Строка 46: | ||
# Считываем коми файл в переменную | # Считываем '''коми''' файл в переменную | ||
# Указываем путь к папке, в которой нужно искать файлы | # Указываем путь к папке, в которой нужно искать файлы | ||
folder_path = os.path.abspath(os.curdir)+"/input/" | folder_path = os.path.abspath(os.curdir)+"/input/" | ||
Строка 85: | Строка 85: | ||
# Считываем удмуртский файл в переменную | # Считываем '''удмуртский''' файл в переменную | ||
# Указываем путь к папке, в которой нужно искать файлы | # Указываем путь к папке, в которой нужно искать файлы | ||
folder_path = os.path.abspath(os.curdir)+"/input/" | folder_path = os.path.abspath(os.curdir)+"/input/" |
Текущая версия от 22:20, 5 ноября 2023
Скрипт для разбивки текстов на предложения по точке с учетом исключений для русского, коми и удмуртского языков.
import os; import sys; import re; import glob; # Считываем русский файл в переменную # Указываем путь к папке, в которой нужно искать файлы folder_path = os.path.abspath(os.curdir)+"/input/" # Получаем список файлов ru file_list = glob.glob(folder_path + '/*_ru*') # Перебираем файлы for file_path in file_list: # Получаем только имя файла без пути file_name = file_path.split('/')[-1] # Проверяем, содержит ли имя файла сочетание "_ru" if '_ru' in file_name: with open(folder_path+file_name) as file: textFile = file.read() with open(os.path.abspath(os.curdir)+"/stop_words/stop_words_ru.txt") as file_stop_words: array = [row.strip() for row in file_stop_words] array.sort(key = lambda s: len(s)); array.reverse() for arrayRow in array: # print(arrayRow) arrayRowRe = arrayRow.replace(".","tchk"); arrayRowReSub = arrayRow.replace(".",""); # print(arrayRowReSub) # Задаем шаблон регулярного выражения pattern = r"(^|\s)" + arrayRowReSub + "\." # Заменяем подстроки с помощью функции re.sub() textFile = re.sub(pattern, r"\1"+arrayRowRe, textFile) # Делим на предложения # text_search = re.split('(?<=[\w\*])[\s]{2}(?=[\s-]|[—А-ЯӦ][^\.])',textFile); text_search = re.split('(?<=[\w\*.!?;)])[\n\r]{2,6}(?=[\w\*§])|(?<=[\w\*])[\s]{2}(?=[\s-]|[—А-ЯЁA-Z][^\.])|(?<=[.?!;…])[\n]{1,5}(?=[—А-ЯЁA-Z1-9])|(?<=[\w\*])[\n]{2,5}(?=[—А-ЯЁA-Z1-9])|(?<=[а-яёa-z°»)][.?!;…])[\s\t\n\r]{1,3}(?=[«(—А-ЯЁA-Z0-9])|(?<=[а-яёa-z°)][.?!;…])[\s\t\n\r]{1,3}(?=[1-9][.])|(?<=[а-яёa-z°])[\n\r](?=[1-9][.])|(?<=[а-яёa-z°][;:])[\n\r](?=[1-9][.])|(?<=[а-яёa-z°][;:])[\n\r](?=[а-яёa-z°][)])|(?<=[—А-ЯЁA-Z][—А-ЯЁA-Z][.!?])[\s](?=[1-9][.])|(?<=[—А-ЯЁA-Z][—А-ЯЁA-Z][.!?])[\s](?=[—А-ЯЁA-Z])|(?<=[а-яёa-z°][\s][0-9][0-9][.!?])[\s](?=[—А-ЯA-Z])|(?<=[а-яёa-z°][\s][0-9][.!?])[\s](?=[—А-ЯЁA-Z])|(?<=[°][CС][!.?])[\s](?=[—А-ЯЁA-Z])|(?<=[‰][!.?])[\s](?=[—А-ЯЁA-Z])|(?<=[а-яёa-z°][!.?][)])[\s](?=[—А-ЯЁA-Z])|(?<=[а-яёa-z°»)][.][.][.])[\s\t\n\r]{1,3}(?=[«(—А-ЯЁA-Z0-9])|(?<=[а-яёa-z°»)][0-9][.?!;…])[\s\t\n\r]{1,3}(?=[«(—А-ЯЁA-Z0-9])|(?<=[—А-ЯЁ][—А-ЯЁ][.?!])[\s\t\n\r]{1,3}(?=[—А-ЯЁA-Z0-9])|(?<=[а-яёa-z°][!?][.][.])[\s](?=[—А-ЯЁA-Z])|(?<=[а-яёa-z°][!?][»])[\s](?=[—А-ЯЁA-Z])|(?<=[а-яёa-z°][.][.][.])[\s](?=[—А-ЯЁA-Z])|(?<=[!][?])[\s\n](?=)|(?<=[?][!])[\s\n](?=)|(?<=[»][.!?])[\s\n](?=)|(?<=[*][.][!][?])[\s\n](?=)|(?<=[%"”][!.?])[\s\n](?=)|(?<=[!.?])[\s\n](?=[-][\s\n][—А-Я])',textFile); file_name = file_name.replace(".txt","_end.txt") with open(os.path.abspath(os.curdir)+"/output/" + file_name, "w") as file: for text_searchRow in text_search: for arrayRow in array: arrayRowRe = arrayRow.replace(".","tchk"); text_searchRow = text_searchRow.replace(arrayRowRe, arrayRow); # print(text_searchRow+"||"); file.write(text_searchRow + '\n') # Считываем коми файл в переменную # Указываем путь к папке, в которой нужно искать файлы folder_path = os.path.abspath(os.curdir)+"/input/" # Получаем список файлов kv file_list = glob.glob(folder_path + '/*_kv*') # Перебираем файлы for file_path in file_list: # Получаем только имя файла без пути file_name = file_path.split('/')[-1] # Проверяем, содержит ли имя файла сочетание "_kv" if '_kv' in file_name: with open(folder_path+file_name) as file: textFile = file.read() with open(os.path.abspath(os.curdir)+"/stop_words/stop_words_kv.txt") as file_stop_words: array = [row.strip() for row in file_stop_words] array.sort(key = lambda s: len(s)); array.reverse() for arrayRow in array: # print(arrayRow) arrayRowRe = arrayRow.replace(".","tchk"); arrayRowReSub = arrayRow.replace(".",""); # print(arrayRowReSub) # Задаем шаблон регулярного выражения pattern = r"(^|\s)" + arrayRowReSub + "\." # Заменяем подстроки с помощью функции re.sub() textFile = re.sub(pattern, r"\1"+arrayRowRe, textFile) # Делим на предложения # text_search = re.split('(?<=[\w\*])[\s]{2}(?=[\s-]|[—А-ЯӦІ][^\.])',textFile); text_search = re.split('(?<=[\w\*.!?;)])[\n\r]{2,6}(?=[\w\*§])|(?<=[\w\*])[\s]{2}(?=[\s-]|[—А-ЯІӦЁA-Z][^\.])|(?<=[.?!;…])[\n]{1,5}(?=[—А-ЯІӦЁA-Z1-9])|(?<=[\w\*])[\n]{2,5}(?=[—А-ЯІӦЁA-Z1-9])|(?<=[а-яёӧі°a-z»)][.?!;…])[\s\t\n\r]{1,3}(?=[«(—А-ЯІӦЁA-Z0-9])|(?<=[а-яёӧі°a-z)][.?!;…])[\s\t\n\r]{1,3}(?=[1-9][.])|(?<=[а-яёӧі°a-z])[\n\r](?=[1-9][.])|(?<=[а-яёӧі°a-z][;:])[\n\r](?=[1-9][.])|(?<=[а-яёӧі°a-z][;:])[\n\r](?=[а-яёӧі°a-z][)])|(?<=[—А-ЯІӦЁA-Z][—А-ЯІӦЁA-Z][.!?])[\s](?=[1-9][.])|(?<=[—А-ЯІӦЁA-Z][—А-ЯІӦЁA-Z][.!?])[\s](?=[—А-ЯІӦЁA-Z])|(?<=[а-яёӧі°a-z][\s][0-9][0-9][.!?])[\s](?=[—А-ЯӦA-Z])|(?<=[а-яёӧі°a-z][\s][0-9][.!?])[\s](?=[—А-ЯІӦЁA-Z])|(?<=[°][CС][!.?])[\s](?=[—А-ЯІӦЁA-Z])|(?<=[‰][!.?])[\s](?=[—А-ЯІӦЁA-Z])|(?<=[а-яёӧі°a-z][!.?][)])[\s](?=[—А-ЯІӦЁA-Z])|(?<=[а-яёӧі°a-z»)][.][.][.])[\s\t\n\r]{1,3}(?=[«(—А-ЯІӦЁA-Z0-9])|(?<=[а-яёӧі°a-z»)][0-9][.?!;…])[\s\t\n\r]{1,3}(?=[«(—А-ЯІӦЁA-Z0-9])|(?<=[—А-ЯӦЁ][—А-ЯӦЁ][.?!])[\s\t\n\r]{1,3}(?=[—А-ЯІӦЁA-Z0-9])|(?<=[а-яёӧі°a-z][!?][.][.])[\s](?=[—А-ЯІӦЁA-Z])|(?<=[а-яёӧі°a-z][!?][»])[\s](?=[—А-ЯІӦЁA-Z])|(?<=[а-яёӧі°a-z][.][.][.])[\s](?=[—А-ЯІӦЁA-Z])|(?<=[!][?])[\s\n](?=)|(?<=[?][!])[\s\n](?=)|(?<=[»][.!?])[\s\n](?=)|(?<=[*][.][!][?])[\s\n](?=)',textFile); file_name = file_name.replace(".txt","_end.txt") with open(os.path.abspath(os.curdir)+"/output/" + file_name, "w") as file: for text_searchRow in text_search: for arrayRow in array: arrayRowRe = arrayRow.replace(".","tchk"); text_searchRow = text_searchRow.replace(arrayRowRe, arrayRow); # print(text_searchRow+"||"); file.write(text_searchRow + '\n') # Считываем удмуртский файл в переменную # Указываем путь к папке, в которой нужно искать файлы folder_path = os.path.abspath(os.curdir)+"/input/" # Получаем список файлов ud file_list = glob.glob(folder_path + '/*_ud*') # Перебираем файлы for file_path in file_list: # Получаем только имя файла без пути file_name = file_path.split('/')[-1] # Проверяем, содержит ли имя файла сочетание "_ud" if '_ud' in file_name: with open(folder_path+file_name) as file: textFile = file.read() with open(os.path.abspath(os.curdir)+"/stop_words/stop_words_ud.txt") as file_stop_words: array = [row.strip() for row in file_stop_words] array.sort(key = lambda s: len(s)); array.reverse() for arrayRow in array: # print(arrayRow) arrayRowRe = arrayRow.replace(".","tchk"); arrayRowReSub = arrayRow.replace(".",""); # print(arrayRowReSub) # Задаем шаблон регулярного выражения pattern = r"(^|\s)" + arrayRowReSub + "\." # Заменяем подстроки с помощью функции re.sub() textFile = re.sub(pattern, r"\1"+arrayRowRe, textFile) # Делим на предложения # text_search = re.split('(?<=[\w\*])[\s]{2}(?=[\s-]|[—А-ЯӞӜӤӦӴ][^\.])',textFile); text_search = re.split('(?<=[\w\*.!?;)])[\n\r]{2,6}(?=[\w\*§])|(?<=[\w\*])[\s]{2}(?=[\s-]|[—А-ЯЁӞӜӤӦӴA-Z][^\.])|(?<=[.?!;…])[\n]{1,5}(?=[—А-ЯЁӞӜӤӦӴA-Z1-9])|(?<=[\w\*])[\n]{2,5}(?=[—А-ЯЁӞӜӤӦӴA-Z1-9])|(?<=[а-яёӟӝӥӧӵ°a-z»)][.?!;…])[\s\t\n\r]{1,3}(?=[«(—А-ЯЁӞӜӤӦӴA-Z0-9])|(?<=[а-яёӟӝӥӧӵ°a-z)][.?!;…])[\s\t\n\r]{1,3}(?=[1-9][.])|(?<=[а-яёӟӝӥӧӵ°a-z])[\n\r](?=[1-9][.])|(?<=[а-яёӟӝӥӧӵ°a-z][;:])[\n\r](?=[1-9][.])|(?<=[а-яёӟӝӥӧӵ°a-z][;:])[\n\r](?=[а-яёӟӝӥӧӵ°a-z][)])|(?<=[—А-ЯЁӞӜӤӦӴA-Z][—А-ЯЁӞӜӤӦӴA-Z][.!?])[\s](?=[1-9][.])|(?<=[—А-ЯЁӞӜӤӦӴA-Z][—А-ЯЁӞӜӤӦӴA-Z][.!?])[\s](?=[—А-ЯЁӞӜӤӦӴA-Z])|(?<=[а-яёӟӝӥӧӵ°a-z][\s][0-9][0-9][.!?])[\s](?=[—А-ЯЁӞӜӤӦӴA-Z])|(?<=[а-яёӟӝӥӧӵ°a-z][\s][0-9][.!?])[\s](?=[—А-ЯЁӞӜӤӦӴA-Z])|(?<=[°][CС][!.?])[\s](?=[—А-ЯЁӞӜӤӦӴA-Z])|(?<=[‰][!.?])[\s](?=[—А-ЯЁӞӜӤӦӴA-Z])|(?<=[а-яёӟӝӥӧӵ°a-z][!.?][)])[\s](?=[—А-ЯЁӞӜӤӦӴA-Z])|(?<=[а-яёӟӝӥӧӵ°a-z»)][.][.][.])[\s\t\n\r]{1,3}(?=[«(—А-ЯЁӞӜӤӦӴA-Z0-9])|(?<=[а-яёӟӝӥӧӵ°a-z»)][0-9][.?!;…])[\s\t\n\r]{1,3}(?=[«(—А-ЯЁӞӜӤӦӴA-Z0-9])|(?<=[—А-ЯЁӞӜӤӦӴA-Z][—А-ЯЁӞӜӤӦӴA-Z][.?!])[\s\t\n\r]{1,3}(?=[—А-ЯЁӞӜӤӦӴA-Z0-9])|(?<=[а-яёӟӝӥӧӵ°a-z][!?][.][.])[\s](?=[—А-ЯЁӞӜӤӦӴA-Z])|(?<=[а-яёӟӝӥӧӵ°a-z][!?][»])[\s](?=[—А-ЯЁӞӜӤӦӴA-Z])|(?<=[а-яёӟӝӥӧӵ°a-z][.][.][.])[\s](?=[—А-ЯЁӞӜӤӦӴA-Z])|(?<=[!][?])[\s\n](?=)|(?<=[?][!])[\s\n](?=)|(?<=[»][.!?])[\s\n](?=)|(?<=[*][.][!][?])[\s\n](?=)',textFile); file_name = file_name.replace(".txt","_end.txt") with open(os.path.abspath(os.curdir)+"/output/" + file_name, "w") as file: for text_searchRow in text_search: for arrayRow in array: arrayRowRe = arrayRow.replace(".","tchk"); text_searchRow = text_searchRow.replace(arrayRowRe, arrayRow); # print(text_searchRow+"||"); file.write(text_searchRow + '\n')