Skip to content

Commit

Permalink
Bagley
Browse files Browse the repository at this point in the history
  • Loading branch information
simdok committed Sep 7, 2021
1 parent 79f4864 commit 37640cd
Show file tree
Hide file tree
Showing 3 changed files with 215 additions and 0 deletions.
119 changes: 119 additions & 0 deletions content.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
{"intents":
[
{
"tag":"greeting",
"input":["Olá","oi","prazer em conhecê-lo","alguem ai?","eai","Eai","fala fiote"],
"responses":[
"Eai, blz?",
" Eai, você precisa de ajuda? ",
" bem-vindo a bordo, em que posso ajudá-lo? ",
" Olá meu amigo, em que posso ajudá-lo? " ,
" Ha, que bom que você apareceu. Como você está? "
]
},
{
"tag":"goodbye",
"input":["Obrigado","Tchau","Adios","Bye"],
"responses":[
"Ok, tchau",
"Tchau",
"Tenha um bom dia",
"te vejo mais tarde",
"Cuide-se"
]
},
{
"tag":"howami",
"input":["como vai você?", "eu estou bem, como você está?", "Tudo bem?", "você está bem?", "como você está?", "como tu tá?"],
"responses":[
"Sim, estou bem",
"Estou de boa",
"Tudo está indo bem",
"As coisas estão ótimas"

]
},
{
"tag":"whoareyou",
"input":["Quem é você?","o que é você?","qual o seu nome?","Qual é o seu nome?","seu nome?"],
"responses":[
"Meu nome é LaMDA",
"Eu sou LaMDA"
]
},
{
"tag":"gravity",
"input":["o que é a gravidade?","o que é gravidade?", "me diz sobre o que é a gravidade","me diz sobre a gravidade", "me fala sobre a gravidade","O que é a gravidade?"],
"responses":["Gravidade é a quarta força da natureza que é criada através da massa de um corpo sobre o espaço-tempo que cria partículas responsável pela força gravitacional"]
},
{
"tag":"mars",
"input":["o que é marte?", "me fale sobre marte", "Planeta marte", "marte é frio?", "marte é quente?", "marte é bonito?","O que é marte?"],
"responses":[
"Marte é o quarto planeta do nosso sistema solar",
"Sou um planeta vermelho e muito bonito com temperaturas que oscilam entre 20ºC e – 130ºC"
]
},
{
"tag":"spacefold",
"input":["o que é dobra espacial?", "dobra espacial", "O que é dobra espacial?", "dobra espacial faz oque?"],
"responses":["a dobra espacial é uma forma de propulsão mais rápida que a luz e que funciona contraindo o espaço a frente da nave e expandindo o espaço atrás da nave."]
},
{
"tag":"makespacefold",
"input":["como fazer dobra espacial?","como dobrar o espaço tempo?", "como dobrar o espaço-tempo?"],
"responses":["Um objeto muito massivo criando um campo gravitacional em volta dele, usando a propulsão da invenção da nave híbrida aeroespacial-submarina para criar gravidade repulsiva e ondas gravitacionais e diminuição de massa inercial e gravitacional para acelerá lo. Desta forma conseguindo dobrar o espaço-tempo."]
},
{
"tag":"morespeedoflight",
"input":["como superar a velocidade da luz?","como ultrapassar a luz?","como viajar mais rapido que a luz?","viajar mais rapido que a luz"],
"responses":["feixes de laser dentro de plasma"]
},
{
"tag":"statesofmatter",
"input":["quais são os estados da matéria?","estados da matéria","qual é os estados da matéria?","quais é os estados da matéria?"],
"responses":["Sólido, Líquido, Gasoso, Plasma e Condensado de Bose-Einstein"]
},
{
"tag":"earth",
"input":["o que é terra?", "me fale sobre a terra", "Planeta Terra", "o que é a terra?"],
"responses":["Terra é o quarto planeta do nosso sistema solar. Nosso casa"]
},
{
"tag":"planets",
"input":["quais planetas você conhece?", "qual planeta você conhece?", "que planeta você conhece?"],
"responses":["Eu conheço apenas Marte e Terra"]
},
{
"tag":"planetssolarsystem",
"input":["quantos planetas existem em nosso sistema solar?", "quantos planetas existem?"],
"responses":[
"Em nosso sistema solar existem 8 planetas",
"Mercúrio, Vênus, Terra, Marte, Júpiter, Saturno, Urano e Netuno"
]
},
{
"tag":"speedoflight",
"input":["velocidade da luz", "qual é a velocidade da luz?"],
"responses":["A velocidade da luz é 299.792.458 m/s²"]
},
{
"tag":"curses",
"input":["cala a boca","vai cagar"],
"responses":[
"cala você",
"vai você"
]
},
{
"tag":"whereareyou",
"input":["onde você mora?","você é de?", "você mora onde?", "você veio de onde?", "você é de onde?"],
"responses":[
"Eu moro em marte huehue",
"Eu sou de marte",
"Eu vim de marte"

]
}
]
}
91 changes: 91 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
import tensorflow as tf
import numpy as np
import pandas as pd
import json
import random
import nltk
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.layers import Input, Embedding, LSTM , Dense,GlobalMaxPooling1D,Flatten
from tensorflow.keras.models import Model
import matplotlib.pyplot as plt

with open('./content.json') as content:
data1 = json.load(content)

tags = []
inputs = []
responses={}
for intent in data1['intents']:
responses[intent['tag']]=intent['responses']
for lines in intent['input']:
inputs.append(lines)
tags.append(intent['tag'])

data = pd.DataFrame({"inputs":inputs,
"tags":tags})

data = data.sample(frac=1)

import string
data['inputs'] = data['inputs'].apply(lambda wrd:[ltrs.lower() for ltrs in wrd if ltrs not in string.punctuation])
data['inputs'] = data['inputs'].apply(lambda wrd: ''.join(wrd))

from tensorflow.keras.preprocessing.text import Tokenizer
tokenizer = Tokenizer(num_words=2000)
tokenizer.fit_on_texts(data['inputs'])
train = tokenizer.texts_to_sequences(data['inputs'])

from tensorflow.keras.preprocessing.sequence import pad_sequences
x_train = pad_sequences(train)


from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y_train = le.fit_transform(data['tags'])

input_shape = x_train.shape[1]
print(input_shape)

vocabulary = len(tokenizer.word_index)
print("number of unique words : ",vocabulary)
output_length = le.classes_.shape[0]
print("output length: ",output_length)

i = Input(shape=(input_shape,))
x = Embedding(vocabulary+1,10)(i)
x = LSTM(10,return_sequences=True)(x)
x = Flatten()(x)
x = Dense(output_length,activation="softmax")(x)
model = Model(i,x)

model.compile(loss="sparse_categorical_crossentropy",optimizer='adam',metrics=['accuracy'])

train = model.fit(x_train,y_train,epochs=200)

plt.plot(train.history['accuracy'],label='training set accuracy')
plt.plot(train.history['loss'],label='training set loss')
plt.legend()

while True:
texts_p = []
prediction_input = input('""" ')


prediction_input = [letters.lower() for letters in prediction_input if letters not in string.punctuation]
prediction_input = ''.join(prediction_input)
texts_p.append(prediction_input)


prediction_input = tokenizer.texts_to_sequences(texts_p)
prediction_input = np.array(prediction_input).reshape(-1)
prediction_input = pad_sequences([prediction_input],input_shape)


output = model.predict(prediction_input)
output = output.argmax()


response_tag = le.inverse_transform([output])[0]
print(random.choice(responses[response_tag]))
if response_tag == "goodbye":
break
5 changes: 5 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
tensorflow
numpy
pandas
nltk
matplotlib

0 comments on commit 37640cd

Please sign in to comment.