Найти - Пользователи
Полная версия: локальный чат бот
Начало » Python для новичков » локальный чат бот
1
altek7
как улучшить этот код ?

import random
# Функция для чтения фраз из файла и создания базы данных
def read_phrases_from_file(file_name):
database =
with open(file_name, “r”, encoding=“utf-8”) as file:
for line in file:
# Разделение фразы на слова
words = line.strip().split()
database.append(words)
return database

# Функция, которая ищет наиболее похожую фразу на основе слов в запросе
def search_response(message, database):
# Разделение запроса на слова
query_words = message.strip().split()
# Переменная для хранения наибольшего количества похожих слов
max_similar_words = 0
# Переменная для хранения наиболее похожей фразы
most_similar_phrase = “”

for words in database:
# Поиск похожих слов в каждой фразе
similar_words = len(set(words) & set(query_words))
if similar_words > max_similar_words:
max_similar_words = similar_words
most_similar_phrase = “ ”.join(words)

# Проверка, была ли найденная фраза уже в диалоге
while most_similar_phrase in database:
most_similar_phrase = random.choice(database)

if most_similar_phrase:
return most_similar_phrase
else:
return “Извините, я не понимаю вас.”

# Чтение фраз из файла и создание базы данных
database = read_phrases_from_file(“бтт.txt”)

# Основной цикл программы
while True:
user_input = input(“Вы: ”)
response = search_response(user_input, database)
print(“Бот:”, response)

# Сохранение фразы пользователя в файл и базе данных
with open(“бтт.txt”, ‘a’, encoding='utf-8') as file:
file.write('\n' + user_input)
database.append(user_input.strip().split())

py.user.next
altek7
как улучшить этот код ?
Всё должно быть в функциях.

Функция должна либо возвращать что-то осмысленное, либо возвращать None. И дальше этот None обрабатывается в месте вызова функции.

altek7
  
return "Извините, я не понимаю вас."
Если человек введёт именно эту фразу и она попадёт в базу данных, как ты отличишь наличие этой фразы в базе данных от отсутствия фразы в базе данных?
altek7
import random

def search_phrase(keywords, file_path):
result = set() # Используем множество для сохранения уникальных фраз
with open(file_path, ‘r’, encoding='utf-8') as file:
for line in file:
phrase = line.strip()
if any(keyword in phrase for keyword in keywords):
result.add(phrase) # Добавляем уникальную фразу в множество
if len(result) >= 60: # Ограничение числа фраз поиска
break
return list(result) # Преобразуем множество обратно в список

file_path = ‘дтт.txt’

while True:
query = input(“Вы: ”)
keywords = query.strip().split()

found_phrases = search_phrase(keywords, file_path)
if found_phrases:
random_phrase = random.choice(found_phrases) # Случайная фраза из найденных
print(random_phrase)
else:
print(“.. я не нашёл нужной фразы”)

# Запись новой фразы в базу
with open(file_path, ‘a’, encoding='utf-8') as file:
file.write('\n' + query)
xam1816
[code python]между этими тегами вставлять код, для отображения с отступами[/code]
kalyl
altek7
фразы для бота -https://vk.com/doc617321754_662931943?hash=4AT55Tz5WlzZFGwJ3MRazx8WtVjcjZXMGxp6gmoL2DD&dl=QEni0IDfWsA9jRlzv8JBp0czyF9ZLogkjYbciFhmLTX можно писать сюда -https://vk.com/altek7 geometry dash
Спасибо, это очень полезно для меня.
NedHayes
altek7
фразы для бота -https://vk.com/doc617321754_662931943?hash=4AT55Tz5WlzZFGwJ3MRazx8WtVjcjZXMGxp6gmoL2DD&dl=QEni0IDfWsA9jRlzv8JBp0czyF9ZLogkjYbciFhmLTX heardle unlimited
Спасибо! Здорово, что все в одном месте, не нужно искать по отдельности.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB