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

import random

# Считайте файл "фразы.txt" и сохраните все фразы в список
with open("фразы.txt", "r", encoding="utf-8") as f:
    фразы = [line.strip() for line in f.readlines()]

def найти_фразы(слово):
    # Ищите фразы, которые содержат это слово
    фразы_с_словом = [фраза for фраза in фразы if слово in фраза]
    if not фразы_с_словом:
        # Если таких фраз нет, ищите фразы, которые содержат корень слова без окончаний
        корень_слова = слово[:-2]  # удалить окончание "-а" или "-и"
        фразы_с_корнем = [фраза for фраза in фразы if корень_слова in фраза]
        return фразы_с_корнем
    return фразы_с_словом

def генерировать_новые_фразы(введенная_фраза):
    слова = введенная_фраза.split()
    новые_фразы = []
    for слово in слова:
        фразы_с_словом = найти_фразы(слово)
        новая_фраза = random.choice(фразы_с_словом)
        новые_фразы.append(новая_фраза)
    return новые_фразы

while True:
    введенная_фраза = input("Введите фразу текста: ")
    новые_фразы = генерировать_новые_фразы(введенная_фраза)
    print("Новые фразы:")
    for фраза in новые_фразы:
        print(фраза)


----------------------------------->




вводим фразу  и код из каждого слова делает новую фразу для текста вывода
новые фразы для текста берём из файла  фразы.txt   


вот другой вариант этого кода ->



import random
import re

def load_phrases(filename):
    with open(filename, 'r', encoding='utf-8') as file:
        return [line.strip() for line in file.readlines()]

def get_stems(word):
    # Простой пример получения корня слова (можно использовать более сложные методы)
    return re.sub(r'(а|я|ов|ев|ей|е|ы|и|у|о|ь|й)$', '', word)

def find_matching_phrases(input_words, phrases):
    matches = []
    stems = [get_stems(word) for word in input_words]
   
    for phrase in phrases:
        if any(word in phrase for word in input_words) or any(stem in phrase for stem in stems):
            matches.append(phrase)
   
    return matches

def main():
    phrases = load_phrases('фразы.txt')
    used_phrases = set()

    while True:
        input_text = input("Введите фразу: ")
        if input_text.lower() == '0':
            break
       
        input_words = input_text.split()
        matching_phrases = find_matching_phrases(input_words, phrases)
       
        # Убираем уже использованные фразы
        new_phrases = [phrase for phrase in matching_phrases if phrase not in used_phrases]
       
        if not new_phrases:
            print("нет новых фраз.")
            continue

        # Выбираем случайную фразу
        selected_phrase = random.choice(new_phrases)
        used_phrases.add(selected_phrase)
        print(f"Новая фраза: {selected_phrase}")

if __name__ == "__main__":
    main()


----------------------------------->





* промт данного алгоритма  для модели  gpt ->


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




**



Мой единственный друг скажи
Как держаться за эту жизнь?
Если в мире моем от лжи
Правда рушатся этажи
Когда предали от души
Мне казалось, что вот уже
Мое сердце не выдержит
Ну я все-таки выживший
Я выживший
Я все обиды выдышал
И видишь я могу дышать
На этом свете без тебя
Я выживший
Я все обиды выдышал
И видишь я могу дышать
На этом свете без тебя
Мой единственный друг скажи
Когда в спину не от чужих
А от самых своих — ножи
Как же боль эту выдержать?
Знаешь, больно не от того
Что ударили- ничего
Слезы лишь от того бегут
Что ударил не враг, а друг

Я выживший-
Я все обиды выдержал
И видишь я могу дышать
На этом свете без тебя..


Рецензии