Bakalarska_praca/typos_create.py
2024-11-10 12:40:38 +01:00

62 lines
2.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import random
def introduce_typo(word):
"""Функция вносит случайную опечатку в слово"""
if len(word) < 2:
return word # Если слово слишком короткое, не изменяем его
typo_type = random.choice(["swap", "delete", "insert", "replace"])
if typo_type == "swap" and len(word) > 2:
# Меняем местами два случайных соседних символа
idx = random.randint(0, len(word) - 2)
word = word[:idx] + word[idx+1] + word[idx] + word[idx+2:]
elif typo_type == "delete":
# Удаляем случайный символ
idx = random.randint(0, len(word) - 1)
word = word[:idx] + word[idx+1:]
elif typo_type == "insert":
# Вставляем случайный символ
idx = random.randint(0, len(word))
random_char = chr(random.randint(97, 122)) # случайная буква от 'a' до 'z'
word = word[:idx] + random_char + word[idx:]
elif typo_type == "replace":
# Заменяем случайный символ на другой
idx = random.randint(0, len(word) - 1)
random_char = chr(random.randint(97, 122))
word = word[:idx] + random_char + word[idx+1:]
return word
def create_typos_in_line(line):
"""Вносит опечатки в каждое слово в строке, сохраняя структуру"""
words = line.split()
words_with_typos = [
introduce_typo(word) if random.random() < 0.2 else word for word in words
]
return ' '.join(words_with_typos)
def create_typos_in_file(input_file, output_file):
"""Читает файл построчно, создаёт опечатки в словах, сохраняя структуру строк"""
with open(input_file, 'r', encoding='utf-8') as f:
lines = f.readlines()
with open(output_file, 'w', encoding='utf-8') as f:
for line in lines:
# Сохраняем отступы и пустые строки
if line.strip(): # если строка не пустая
typo_line = create_typos_in_line(line)
f.write(typo_line + "\n")
else:
f.write(line)
# Пример использования
input_file = 'cleaned_book.txt' # Укажите путь к исходному файлу
output_file = 'cleaned_book_typos.txt' # Укажите путь для сохранения файла с опечатками
create_typos_in_file(input_file, output_file)