Skip to content

Instantly share code, notes, and snippets.

@muhmudrik
Last active December 12, 2018 01:17
Show Gist options
  • Save muhmudrik/21110a62de3febb94cbee3e025a8e48d to your computer and use it in GitHub Desktop.
Save muhmudrik/21110a62de3febb94cbee3e025a8e48d to your computer and use it in GitHub Desktop.
Rukabot response function
def LemNormalize(text):
remove_punct_dict = dict((ord(punct), None) for punct in string.punctuation)
#fungsi ini meremove punct yang ada di dict dan menghilangkan huruf kapital
return [token for token in nltk.word_tokenize(text.lower().translate(remove_punct_dict))]
def response(user_response):
ruka_response=''
sent_tokens.append(user_response) #Ini ngeappend input user ke list yang dibuat dari chatbot.txt
if 'apa itu fasilkom' in user_response or 'fasilkom adalah' in user_response or 'fasilkom' in user_response:
ruka_response = ruka_response+sent_tokens[0]
return ruka_response
elif 'paralel untuk d3' in user_response or 'ekstensi' in user_response:
ruka_response = ruka_response+sent_tokens[8]
return ruka_response
TfidfVec = TfidfVectorizer(tokenizer=LemNormalize)
tfidf = TfidfVec.fit_transform(sent_tokens)
#TF IDF ini gunanya buat bikn statistik numerikal suatu kata untuk memberi
#gambaran seberapaseringnya kemunculan/berat kata itu dalam dokumen.
#menghitungnya menggunakan rumus khusus
vals = cosine_similarity(tfidf[-1], tfidf)
# Ini buat mencocokan antara kata input dari user(yang baru dimasukin ke list
# (biar 'kata'nya juga ada bobot(dalam vektor))) dengan isi list
# nanti hasil perintah ini berupa list yang isinya kecocokan setiap item list terhadap
# input user dalam besaran sudut, semakin mendekati 1 maka semakin mirip katanya.
idx=vals.argsort()[0][-2]
flat = vals.flatten() #di flatten karena hasilnya list dalem list
flat.sort()
req_tfidf = flat[-2] #lalu diambil index -2 karena setelah di sort hasil yg paling mirip ada di index itu(mendekati 1)
if(req_tfidf==0): #Jika gaada yg mirip maka responnya gini
ruka_response=ruka_response+"{}".format(random.choice(Confused_responses))
return ruka_response
else:
ruka_response = ruka_response+sent_tokens[idx]
return ruka_response
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment