Я получил функцию, которая вызывается для вычисления ответа каждый раз, когда пользователь вводит что-то. Функция получает ответ из базы данных. Что я не понимаю, так это то, почему я должен переопределить мою переменную (я назвал ее intets_db), которая содержит все данные из базы данных каждый раз, когда вызывается функция? Я попытался поместить его вне функции, но тогда моя программа работает только в первый раз, но возвращает пустой ответ во второй раз, когда пользователь что-то вводит.
def response(sentence, user_id='1'):
results = classify_intent(sentence)
intents_db = c.execute("SELECT row_num, responses, tag, responses, intent_type, response_type, context_set,\
context_filter FROM intents")
if results:
# loop as long as there are matches to process
while results:
if results[0][1] > answer_threshold:
for i in intents_db:
# print('tag:', i[2])
if i[2] == results[0][0]:
print(i[6])
if i[6] != 'N/A':
if show_details:
print('context: ', i[6])
context[user_id] = i[6]
responses = i[1].split('&/&')
print(random.choice(responses))
if i[7] == 'N/A' in i or \
(user_id in context and i[7] in i and i[7] == context[
user_id]):
# a random response from the intent
responses = i[1].split('&/&')
print(random.choice(responses))
print(i[4], i[5])
print(results[0][1])
elif results[0][1] <= answer_threshold:
print(results[0][1])
for i in intents_db:
if i[2] == 'unknown':
# a random response from the intent
responses = i[1].split('&/&')
print(random.choice(responses))
initial_comm_output = random.choice(responses)
return initial_comm_output
else:
initial_comm_output = "Something unexpected happened when calculating response. Please restart me"
return initial_comm_output
results.pop(0)
return results
Кроме того, я начал входить в базы данных и sqlite3, потому что я хочу сделать массивную базу данных в долгосрочной перспективе. Поэтому также кажется неэффективным, что мне приходится загружать всю базу данных вообще. Есть ли какой-то способ, которым я могу загрузить только тот ряд данных, который мне нужен? Я получил столбец row_number в моей базе данных, так что, если бы можно было как-то сказать: «ВЫБЕРИТЕ, ГДЕ row_num = 2 ОТ намерений», это было бы здорово, но я не могу понять, как это сделать.