Получение более чем одного намерения - PullRequest
0 голосов
/ 08 апреля 2020

Я работаю над НЛП. Я хотел получить более одного намерения из файла намерений. 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']

Если кто-нибудь может помочь !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...