свой генератор текстов из фраз

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

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




import os
import random

def load_texts_from_folder(folder_path):
    texts = []
    for filename in os.listdir(folder_path):
        if filename.endswith('.txt'):
            with open(os.path.join(folder_path, filename), 'r', encoding='utf-8') as file:
                texts.extend(file.readlines())
    return texts

def find_lines_with_phrase(texts, phrase):
    words = phrase.split()
    pairs = [(words[i], words[i+1]) for i in range(len(words) - 1)]
   
    found_lines = set()  # множество для уникальных строк
   
    for line in texts:
        for pair in pairs:
            if f"{pair[0]} {pair[1]}" in line:
                found_lines.add(line.strip())
                break  # Прекращаем проверку, если нашли пару в строке
   
    return list(found_lines)  # Преобразуем множество обратно в список

def find_lines_with_keywords(texts, keywords):
    found_lines = set()  # Используем множество для уникальных строк
   
    for line in texts:
        for keyword in keywords:
            if keyword in line:
                found_lines.add(line.strip())
                break  # Прекращаем проверку, если нашли ключевое слово в строке
   
    return list(found_lines)  # Преобразуем множество обратно в список

def main():
    folder_path = '.'  # путь к папке с текстовыми файлами
    texts = load_texts_from_folder(folder_path)
   
    while True:
        phrase = input("Ввод фразы: ")
        if phrase.lower() == 'exit':
            break
       
        lines_with_phrase = find_lines_with_phrase(texts, phrase)
       
        if lines_with_phrase:
            # Если найдены строки с парами слов
            output_lines = random.sample(lines_with_phrase, min(10, len(lines_with_phrase)))
        else:
            # Если пары не найдены, ищем по ключевым словам
            keywords = phrase.split()
            lines_with_keywords = find_lines_with_keywords(texts, keywords)
            output_lines = random.sample(lines_with_keywords, min(10, len(lines_with_keywords)))
       
        print("\n" )
        for line in output_lines:
            print(line)
        print("\n" )

if __name__ == "__main__":
    main()







пример вывода фраз:


Ввод фразы: это можно понять так просто почти без слов

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


Ввод фразы: это наше будущее которое мы хотим видеть сегодня

тогда скажи что мы хотим в этом найти
С каждым решением, которое мы принимаем, мы открываем новые горизонты, расширяя границы нашего мира. Мы не просто наблюдатели; мы - активные участники, рисующие кистями своих действий на полотне времени.
В этом новом порядке важно помнить о внутреннем балансе, о том, как сохранить гармонию между технологическим прогрессом и жизнью, полной смысла. Каждый разговор, каждая встреча может стать искоркой, пробуждающей мысли о том, каким мы хотим видеть наше будущее. Let's explore together the intricate fabric of our existence, where every thread counts and every voice matters.
здесь жизнь и есть то ключевое слово которое мы искали в тексте
уровня человека. а что мы хотим понять из того что нам не известно -
будем исследовать данный случай, мы найдём, что в это наше желание встроена жажда его
Если мы хотим кому-то передать информацию, её нужно сначала закодировать ( устными словами, жестами, мимикой или символами – написанными от руки, напечатанными и т.д., хоть азбукой Морзе 
 и затем послать сообщение по каналу передачи ( звуковыми волнами по воздуху, фотонами видимого света, электрическими импульсами по телефонной линии, радиоволнами по спутниковой связи, через интернет и так далее ), причём желательно без ошибок, а получатель должен обработать информацию ( не просто услышать или увидеть, но и расшифровать, понять, принять к сведению )  и как-то прореагировать (- ответить, запросить уточнение, проигнорировать и так далее по смыслу содержания
никто ничего не оспаривает - мы хотим только понять - возможно ли общаться с компьютером также как с человеком ? -  либо это просто миф который придумали программисты
событие, которое мы просто не можем отследить и воспринимать во всей его сложности и
это во многом понятно - но в то же время слишком простое и поверхностное представление того что мы хотим узнать из этого


Рецензии