бот ии 10-08

есть файл фразы txt  с разными фразами   
мы вводим  запрос текста через input
нужно найти фразу в файле данных с похожими словами из фразы запроса 
без учёта окончаний слов
например слово = словам = слову = в слове = о словах = словами  и так далее 

и выбрать одну из найденых фраз случайно
затем добавить введённую фразу в файл фразы txt
далее продолжить новый цикл ввода через while  (без команды exit)



import random
import re

def normalize_word(word):
    """
    Преобразует слово в нормализованную форму для сравнения.
    """
    return re.sub(r'[аеёиоуыэюя]$', '', word.lower())

def find_similar_phrases(phrases, query):
    """
    Ищет фразы с похожими словами на основе введённого запроса.
    """
    query_words = [normalize_word(word) for word in query.split()]
    similar_phrases = []
   
    for phrase in phrases:
        phrase_words = [normalize_word(word) for word in phrase.split()]
        if any(q_word in phrase_words for q_word in query_words):
            similar_phrases.append(phrase)
   
    return similar_phrases

def main():
    file_path = 'фразы.txt'
   
    with open(file_path, 'r', encoding='utf-8') as file:
        phrases = [line.strip() for line in file.readlines()]

    while True:
        query = input("Введите запрос: ")
       
        # Найти похожие фразы
        similar_phrases = find_similar_phrases(phrases, query)
       
        if similar_phrases:
            chosen_phrase = random.choice(similar_phrases)
            print(f"Найдена похожая фраза: {chosen_phrase}")
        else:
            print("Похожих фраз не найдено.")
       
        # Добавить введённую фразу в файл
        with open(file_path, 'a', encoding='utf-8') as file:
            file.write(query + '\n')
       
        # Добавить новую фразу в список фраз для будущих итераций
        phrases.append(query)

if __name__ == "__main__":
    main()







Как работает код:
normalize_word: Функция, которая нормализует слово, удаляя окончания, чтобы разные формы одного слова были похожи.
find_similar_phrases: Функция, которая ищет в файле фразы с похожими словами на основе введённого запроса.
main: Основной цикл программы, который выполняется бесконечно (пока не будет прерван вручную). Он запрашивает ввод, ищет похожие фразы, случайным образом выбирает одну из них, затем добавляет введённую фразу в файл.
Что нужно учесть:
Файл фразы.txt: Убедитесь, что файл существует и находится в том же каталоге, что и скрипт.
Остановить программу: Программу можно остановить вручную с помощью прерывания (например, нажав Ctrl+C в командной строке).
Этот скрипт должен удовлетворить вашу задачу поиска похожих фраз без учёта окончаний и добавления новых запросов в файл.







import random
import re

def normalize_word(word):
    """
    Преобразует слово в нормализованную форму для сравнения.
    """
    return re.sub(r'[аеёиоуыэюя]$', '', word.lower())

def find_similar_phrases(phrases, query):
    """
    Ищет фразы с похожими словами на основе введённого запроса.
    """
    query_words = [normalize_word(word) for word in query.split()]
    similar_phrases = []
   
    for phrase in phrases:
        phrase_words = [normalize_word(word) for word in phrase.split()]
        if any(q_word in phrase_words for q_word in query_words):
            similar_phrases.append(phrase)
   
    return similar_phrases

def main():
    file_path = 'фразы1.txt'
   
    with open(file_path, 'r', encoding='utf-8') as file:
        phrases = [line.strip() for line in file.readlines()]

    while True:
        query = input("Вы: ")
      
        # Найти похожие фразы
        similar_phrases = find_similar_phrases(phrases, query)
      
        if similar_phrases:
            chosen_phrase = random.choice(similar_phrases)
            print(f"бот: {chosen_phrase}")
        else:
            print("Похожих фраз не найдено.")
      
        # Добавить введённую фразу в файл
        with open(file_path, 'a', encoding='utf-8') as file:
            file.write(query + '\n')
      
        # Добавить новую фразу в список фраз для будущих итераций
        phrases.append(query)

if __name__ == "__main__":
    main()





вывод ->

= C:\Users\MSI\Desktop\мой бот\бот нов 10-8 .py

Вы: я что должен это всё знать и помнить
бот: Современные пользователи сети стремятся искать информацию, которая было бы полезной, актуальной и удовлетворила их потребности в знаниях и развлечении.
Вы: и как они это могут делать так просто
бот: GPT-3 — это универсальная генеративная языковая модель, разработанная OpenAI в 2020 году. Она была предобучена на 570 гигабайтах неразмеченных текстов из интернета и благодаря этому сумела получить общее понимание того, как должен выглядеть осмысленный текст на языке, с которым она работает.
Вы: это мне не очень то понятно наверно
бот: мне кажется что уже есть интеллект, который в чём-то  умнее человека
Вы: и что из этого следует тогда как ты думаешь об этом
бот: мы можем осознать компьютер как человека который может с нами поговорить ?
Вы: это всё не так просто как нам надо


Рецензии

В субботу 22 февраля состоится мероприятие загородного литературного клуба в Подмосковье в отеле «Малаховский дворец». Запланированы семинары известных поэтов, гала-ужин с концертной программой.  Подробнее →