Я работаю над НЛП. Я хотел получить более одного намерения из файла намерений. json. Функция ниже может извлечь одно намерение.
import json
def classify_local(sentence):
print("Question : ",sentence)
ERROR_THRESHOLD = 0.25
# generate probabilities from the model
input_data = pd.DataFrame([bow(sentence, words)], dtype=float, index=['input'])
results = model.predict([input_data])[0]
# filter out predictions below a threshold, and provide intent index
results = [[i,r] for i,r in enumerate(results) if r>ERROR_THRESHOLD]
# sort by strength of probability
results.sort(key=lambda x: x[1], reverse=True)
return_list = []
for r in results:
return_list.append(classes[r[0]])
# return tuple of intent and probability
intent=classes[r[0]]
with open('intents.json') as f:
data = json.load(f)
j=0
for x in data['intents']:
if x['tag']==intent:
res1=data['intents'][j]['responses'][0]
#res2=data['intents'][j]['responses'][1]
j=j+1
print("Answer : ",res1)
return return_list
В приведенном выше коде bow
функция возвращает массив [тип 0/1], если слова из вопроса найдены в словаре. Если ввод classify_local('Hello, good day!')
, то вывод
Question : Hello, good day!
Answer : Hello, thanks for asking
['greeting']
Если кто-нибудь может помочь !!