Python 当我增加 intents 文件的内容时,聊天机器人无法识别

Python chat bot is not recognizing when I increase the content of the intents file

python 机器人代码:

import nltk

nltk.download('punkt')

from nltk.stem.lancaster import LancasterStemmer
stemmer=LancasterStemmer()
import numpy
import tflearn
import tensorflow
import random
import json
import pickle

with open("intents.json") as file:
     data=json.load(file)
     print(data['intents'])
     
try:
    with open("data.pickle","rb") as f:
        words,labels,training,output=pickle.load(f)
except: 
    words=[]
    labels=[]
    docs_x=[]
    docs_y=[]
    
    for intent in data['intents']:
        for pattern in intent['patterns']:
            wrds=nltk.word_tokenize(pattern)
            words.extend(wrds)
            docs_x.append(wrds)
            docs_y.append(intent["tag"])
             
            
            if intent["tag"] not in labels:
               labels.append(intent["tag"])
               
               
    #remove duplicate          
    words=[stemmer.stem(w.lower()) for w in words if w != "?"]
    
    words=sorted(list(set(words)))
    
    labels=sorted(labels)
     
    
    training=[] 
    output=[]
    
    out_empty=[0 for _ in range(len(labels))]
    
    for x, doc in enumerate(docs_x):
        bag=[]
        wrds=[stemmer.stem(w) for w in doc]
        
        for w in words:
          if w in wrds:
             bag.append(1)
          else:
             bag.append(0)
             
        output_row=out_empty[:]
             
        output_row[labels.index(docs_y[x])]=1
        
        training.append(bag)     
        output.append(output_row)
        
    training=numpy.array(training)
    output=numpy.array(output)
    
    with open("data.pickle","wb") as f:
        pickle.dump((words,labels,training,output),f)

tensorflow.compat.v1.reset_default_graph()

net=tflearn.input_data(shape=[None,len(training[0])])
net=tflearn.fully_connected(net,8) 
net=tflearn.fully_connected(net,8)
net=tflearn.fully_connected(net,len(output[0]),activation="softmax")
net=tflearn.regression(net)

model=tflearn.DNN(net)

model.fit(training, output,n_epoch=10000,batch_size=8,show_metric=True )   

model.save('C:/Users/Desktop/chatbot/model/model.tflearn')
model.load('C:/Users/Desktop/chatbot/model/model.tflearn')

    





def bag_of_words(s,words):

   bag=[0 for _ in range(len(words))]
   s_words=nltk.word_tokenize(s)
   s_words=[stemmer.stem(word.lower()) for word in s_words]

 
   for se in s_words:
       for i,w in enumerate(words):
           if w==se:
              bag[i]=1

   return numpy.array(bag)



def chat():
    print("start talking with the bot (type quit to stop!")
    while True:
        inp=input("You:")
        if inp.lower()=="quit":
           break
       
        results= model.predict([bag_of_words(inp,words)])[0]
        # print("results:",results)
       
        results_index=numpy.argmax(results)
        
        if results[results_index]>0.7:
            
                
            tag=labels[results_index]
            print("tag:", tag)
        
            for tg in data["intents"]:
                if tg["tag"]==tag:
                   responses=tg['responses']
            
            print("Bot:",random.choice(responses))
         
        else:
          print("I didn't get that. Please try again")  
chat() 

代码所在json文件如下:

intent file's content (JSON file):
{"intents": [
        {"tag": "greeting",
         "patterns": ["Hi", "How are you", "Is anyone there?", "Hello", "Good day", "Whats up"],
         "responses": ["Hello!", "Good to see you again!", "Hi there, how can I help?"],
         "context_set": ""
        },
        {"tag": "goodbye",
         "patterns": ["cya", "See you later", "Goodbye", "I am Leaving", "Have a Good day"],
         "responses": ["Sad to see you go :(", "Talk to you later", "Goodbye!"],
         "context_set": ""
        },
        {"tag": "age",
         "patterns": ["how old", "what is your age", "how old are you", "age?"],
         "responses": ["good question", "I don't know"],
         "context_set": ""
        },
        {"tag": "name",
         "patterns": ["what is your name", "what should I call you", "whats your name?"],
         "responses": ["You can call me Bot.", "I'm Bot!"],
         "context_set": ""
        },
        {"tag": "shop",
         "patterns": ["Id like to buy something", "whats on the menu", "what do you reccommend?", "could i get something to eat"],
         "responses": ["We sell chocolate chip cookies for !", "Cookies are on the menu!"],
         "context_set": ""
        },
        {"tag": "hours",
         "patterns": ["when are you guys open", "what are your hours", "hours of operation"],
         "responses": ["We are open 7am-4pm Monday-Friday!"],
         "context_set": ""
        }
   ]
}

朋友你好,在json文件中添加“tag”“hours”“patterns”“responses”作为7th,8th等时,bot无法识别无法回答的问题。当我展开 json 文件的内容时,如何让机器人识别它们?

我意识到实际上代码可以正常工作,但是 需要注意的是,如果intent文件的内容发生变化,需要删除“.pickle”文件,重新运行代码。