Last active
December 12, 2018 01:17
-
-
Save muhmudrik/21110a62de3febb94cbee3e025a8e48d to your computer and use it in GitHub Desktop.
Rukabot response function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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