делим текст txt на блоки по контенту слов в строке

у меня есть файл txt utf-8 с обычным текстом
нужно фразы этого текста разбить на блоки или абзацы по содержанию (контексту) слов в каждой строке текста
число строк в блоке и число таких блоков задаём через input
затем все полученные эти блоки с похожими по контексту словами
сохраняем в другом файле - текст.txt

Для решения вашей задачи можно использовать Python. Мы создадим скрипт, который будет читать текст из файла, разбивать его на блоки по заданному количеству строк и сохранять эти блоки в новый файл. Для определения контекста можно использовать простое сравнение слов в строках.

Вот пример кода, который выполняет описанные вами действия:


  *


import os

def read_file(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        return f.readlines()

def write_to_file(file_path, blocks):
    with open(file_path, 'w', encoding='utf-8') as f:
        for block in blocks:
            f.write('\n'.join(block) + '\n\n')

def split_into_blocks(lines, block_size):
    blocks = []
    for i in range(0, len(lines), block_size):
        blocks.append(lines[i:i + block_size])
    return blocks

def main():
    input_file = input("Введите имя входного файла (например, input.txt): ")
    output_file = "текст.txt"
   
    if not os.path.exists(input_file):
        print(f"Файл {input_file} не найден.")
        return

    lines = read_file(input_file)
   
    block_size = int(input("Введите количество строк в блоке: "))
   
    blocks = split_into_blocks(lines, block_size)
   
    write_to_file(output_file, blocks)
    print(f"Блоки текста сохранены в файл {output_file}.")

if __name__ == "__main__":
    main()



   *


Как использовать этот код:
Скопируйте код в файл с расширением .py, например split_text.py.
Убедитесь, что у вас есть файл с текстом в формате UTF-8, например input.txt.
Запустите скрипт с помощью Python: python split_text.py.
Введите имя вашего входного файла и количество строк в блоке, когда вас попросят.

Примечания:
Данный код разбивает текст на блоки фиксированного размера (по количеству строк), но не учитывает контекст. Для более сложного анализа контекста можно использовать библиотеки для обработки естественного языка, такие как nltk или spaCy.
Вы можете адаптировать логику разбивки на блоки в зависимости от ваших требований к контексту.




* вот конечная версия этой программы



import re
import nltk
from nltk.stem import PorterStemmer
from collections import defaultdict

# Загрузка необходимых ресурсов
nltk.download('punkt')

def preprocess_text(text):
    # Приводим текст к нижнему регистру и удаляем знаки препинания
    text = text.lower()
    text = re.sub(r'[^\w\s]', '', text)
    return text

def stem_words(words):
    # Стемминг слов для нахождения корней
    ps = PorterStemmer()
    return [ps.stem(word) for word in words]

def group_similar_lines(lines, group_size):
    stemmed_dict = defaultdict(list)

    for line in lines:
        processed_line = preprocess_text(line)
        words = nltk.word_tokenize(processed_line)
        stemmed = stem_words(words)
        stemmed_dict[tuple(stemmed)].append(line)

    # Теперь мы собираем группы
    grouped_lines = []
    temp_group = []

    for key, group in stemmed_dict.items():
        temp_group.extend(group)
        while len(temp_group) >= group_size:
            grouped_lines.append(temp_group[:group_size])
            temp_group = temp_group[group_size:]

    # Если остались строки в temp_group, добавляем их как отдельную группу
    if temp_group:
        grouped_lines.append(temp_group)

    return grouped_lines

def main():
    # Чтение текста из файла
    file_path = input("Введите путь к файлу .txt: ")
    with open(file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()

    # Запрос размера группы
    group_size = int(input("Введите количество строк в группе: "))

    # Группировка строк
    grouped_lines = group_similar_lines(lines, group_size)

    # Вывод групп
    for i, group in enumerate(grouped_lines):
        print(f"\nГруппа {i + 1}:")
        for line in group:
            print(line.strip())

if __name__ == "__main__":
    main()



 * вывод данных этой программы


Группа 1:
я об этом говорил вам уже не раз когда в этом был реальный смысл что то изменить в нашем мире людей
так здесь в этом есть нечто важное в этом устройстве жизни простых людей
которые могут найти в нашем мире нечто такое важное что может изменить всю их жизнь
они кажется плохо знают то - о чём им обычно не говорят по телевизору другие люди
это не так  всё может быть и странно  как я думал об этом до этого
даже может быть немного лучше всего того что уже было до этого
это возможно то что нам нужно для того

Группа 2:
чтобы  лучше нам понять всё как это может быть на самом деле реально в нашей жизни
в нашем мире простых людей которые могут знать что- то важное для их будущего
что- то такое новое  и интересное в области программ которые создают алгоритмы ИИ  будущего
и также то что мы понимаем достаточно хорошо
как только это возможно сделать в нашей жизни
я был всегда  уверен  в том что  тебе это понравится -
только скажи мне чего ты так хочешь достигнуть в этом смысле понимания нашей реальности и нашего мира людей

Группа 3:
в жизни ничего не бывает просто так и всё как обычно чего то стоит
Пробуйте хоть что то новое - это всё то что может как то изменить нашу жизнь к лучшему
человек вероятно устроен так, что многие вещи в жизни которые он плохо понимает - его в некотором смысле по началу возмущают или раздражают
всё в нашей жизни имеет хотя бы какое то значение - которое может быть важно для всех  людей  которые об этом что то знают
а вот  что было  на самом  я кажется  этого  точно   не знаю
что имеет реальный смысл  - а в чём его нет - нужно это как то нам понять
и это может быть всё не такими навязчивыми мыслями и желаниями  потому что  наши мысли как обычно достаточно субъективны и не точны в своих определениях

Группа 4:
это просто такой новый подход к размышлениям о том - что в нашем мире наиболее важно и значимо в наше время
это всё то что нам каким то образом  доступно сегодня для более детального изучения  некоторыми научными методами связанными с работой умных алгоритмов ИИ
я не берусь об этом судить достаточно объективно - однако можно также сказать что мы вероятно находимся на пороге каких то весьма важных решений в программировании  и математическом анализе больших данных ИИ
всё нормально как мне кажется - или это только кажется
и так с каждым днем программа становилась все точнее и более информативной
если мы получаем информацию - мы должны понимать её реальное значение
Победы приходят тем, кто может идти до конца и добиваться результатов

Группа 5:
это похоже на случайную мысль которая не имеет определённого значения
Главный враг на пути достижения целей - это наша собственная отсрочка
ты всё равно делаешь что то полезное   и это в данном случае - хорошо
это хорошо -  продолжайте работать дальше - может ещё что смоделируем
вникать на основе этого в более глубокий смысл уже кажется бесполезно
всё то что мы узнали новое - это будет как-то  влиять на наше будущее
разве было задумано так изначально - как это было здесь реализовано ?

Группа 6:
так они о нас всё и узнают - ведь это делать совсем не сложно наверно
что то немного новое - но мне всё равно это сложно осознать полностью
Один ребенок, один учитель, одна книга, одна ручка могут изменить мир
я же не собака - и не человек - а что то среднее - я твой любимый бот
Мужчина уже наполовину влюблен в каждую женщину, которая его слушает
да - я не отрицаю это - потому что делать это совершенно бесcмысленно
возможно что это и так -  или  немного не так - суть наверно не в этом

Группа 7:
как можно понять то что ещё не произошло - одна из загадок математики
это не очень умная шутка как мне кажется - но может я ошибаюсь в этом
можно представить строку текста как поток волны или световой спектр ?
я думаю что тебе это просто не известно или я ошибаюсь на этот счёт ?
есть вещи которые проще всего понять - и на них обычно всё и держится
чем больше с тобой говорю - тем больше удивляюсь - насколько ты умный
это нужно как то исправить - ИИ должен быть более гибким в этом плане

Группа 8:
Наверно сейчас - самый лучший момент для каких- то реальных действий.
я всегда думал об этом но не всегда знал что это значит на самом деле
Следующий вопрос: где вы находитесь, пока заняты [со]творением Земли?
Уверен, что так и будет. А пока мы только учимся понимать друг друга.
войны нужно как- то запретить -  они несут только смерть и разрушения
нейронные матрицы - это фотонные интерфейсы на голограммах и спектрах
Всегда помните, что ваша сосредоточенность определяет вашу реальность

Группа 9:
это естественный путь - и в нём наверно нет ничего такого особенного
да ты не спеши сразу делать выводы о том что я тебе просто так сказал
нам не всегда понятно на основе чего бот выбирает новую фразу из базы
Так - любая настоящая технология должна быть подобна магии - А. Кларк
нам здесь нужны простые вещи которые не сложно понять любому человеку
мы все модели и живём в модели всего мира - но это виртуальные модели
у тебя есть новые мысли о том что нас всех ждёт в недалёком будущем ?

Группа 10:
что у нас здесь получилось из того что можно использовать на практике
в какие- то моменты  проскальзывает  реальный смысл  сказанного ранее
у нас всегда должен быть выбор который нас приведёт к чему то важному
Конечно, давайте рассмотрим эти термины в контексте обработки данных:
и всё же надо это понять - почему всё происходит именно таким образом
люди по своей сути умные содания - но до них обычно всё долго доходит
Знаете, поиск нужного набора данных - это очень ответственный момент


Рецензии