Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. import nltk
  2. from nltk.stem.lancaster import LancasterStemmer
  3. stemmer = LancasterStemmer()
  4.  
  5. import numpy
  6. import tflearn
  7. import tensorflow
  8. import random
  9. import json
  10. import pickle
  11. with open("intents.json") as file:
  12. data = json.load(file)
  13.  
  14. try:
  15. with open("data.pickle", "rb") as f:
  16. words, labels, training, output = pickle.load(f)
  17.  
  18. except:
  19. words = []
  20. labels = []
  21. docs_x = []
  22. docs_y = []
  23.  
  24. for intent in data["intents"]:
  25. for pattern in intent["patterns"]:
  26. wrds = nltk.word_tokenize(pattern)
  27. words.extend(wrds)
  28. docs_x.append(wrds)
  29. docs_y.append(intent["tag"])
  30.  
  31. if intent["tag"] not in labels:
  32. labels.append(intent["tag"])
  33.  
  34. words = [stemmer.stem(w.lower()) for w in words if w != "?"]
  35. words = sorted(list(set(words)))
  36.  
  37. labels = sorted(labels)
  38.  
  39. training = []
  40. output = []
  41.  
  42. out_empty = [0 for _ in range(len(labels))]
  43.  
  44. for x, doc in enumerate(docs_x):
  45. bag = []
  46.  
  47. wrds = [stemmer.stem(w) for w in doc]
  48.  
  49. for w in words:
  50. if w in wrds:
  51. bag.append(1)
  52. else:
  53. bag.append(0)
  54.  
  55. output_row = out_empty[:]
  56. output_row[labels.index(docs_y[x])] = 1
  57.  
  58. training.append(bag)
  59. output.append(output_row)
  60.  
  61.  
  62. training = numpy.array(training)
  63. output = numpy.array(output)
  64.  
  65. with open("data.pickle", "wb") as f:
  66. pickle.dump((words, labels, training, output), f)
  67.  
  68. tensorflow.reset_default_graph()
  69.  
  70. net = tflearn.input_data(shape=[None, len(training[0])])
  71. net = tflearn.fully_connected(net, 8)
  72. net = tflearn.fully_connected(net, 8)
  73. net = tflearn.fully_connected(net, len(output[0]), activation="softmax")
  74. net = tflearn.regression(net)
  75.  
  76. model = tflearn.DNN(net)
  77.  
  78. try:
  79. model.load("model.tflearn")
  80. except:
  81. model.fit(training, output, n_epoch=1000,batch_size=8, show_metric=True)
  82. model.save("model.tflearn")
  83.  
  84.  
  85. def bag_of_words(s, words):
  86. bag = [0 for _ in range(len(words))]
  87.  
  88. s_words = nltk.word_tokenize(s)
  89. s_words = [stemmer.stem(word.lower()) for word in s_words]
  90.  
  91. for se in s_words:
  92. for i, w in enumerate(words):
  93. if w == se:
  94. bag[i].append(1)
  95.  
  96. return numpy.array(bag)
  97.  
  98.  
  99. def chat():
  100. print("Start talking with the bot! (type quit to stop)")
  101. while True:
  102. inp = input("You: ")
  103. if inp.lower() == "quit":
  104. break
  105.  
  106. results = model.predict([bag_of_words(inp,words)])
  107. print(results)
  108.  
  109. chat()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement