ich habe heute mal versucht einen (sehr simplen) Chatbot zu coden,
die Begrüßung bekommt er nicht hin, danach kommt eine Fehlermeldung,
hat hier vielleicht jemand eine Idee wie ich das lösen könnte?
Code: Alles auswählen
import nltk
import numpy as np
import random
import string
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
f = open('AVP.txt', 'r', errors='ignore')
raw = f.read()
text = raw.lower()
Token_sent = nltk.sent_tokenize(text)
Token_word = nltk.word_tokenize(text)
lemmer = nltk.stem.WordNetLemmatizer()
def LemToken(tokens):
return [lemmer.lemmatize(token) for token in tokens]
remove_punct_dict = dict((ord(punct), None) for punct in string.punctuation)
def LemNormalize(text):
return
LemToken(nltk.word_tokenize(text.lower().translate(remove_punct_dict)))
Greeting_input = ("hello", "hi")
Greeting_response = ["yo", "what's up", "what you want?"]
def greeting(sentence):
for word in sentence.split():
if word.lower() in Greeting_input:
return random.choice(Greeting_response)
def response(user_response):
robo_response = ' '
Token_sent.append(user_response)
TfidfVec = TfidfVectorizer(tokenizer=LemNormalize,
stop_words='english')
tfidf = TfidfVec.fit_transform(Token_sent)
vals = cosine_similarity(tfidf[-1], tfidf)
idx = vals.argsort()[0][-2]
flat = vals.flatten()
flat.sort()
req_tfidf = flat[-2]
if(req_tfidf==0):
robo_response = robo_response + "I don't know what you want from me and I simply don't care"
return robo_response
else:
robo_response = robo_response + Token_sent[idx]
return robo_response
flag = True
print("RadicalBot: i can talk to you...try it")
while(flag==True):
user_response = input()
user_response = user_response.lower()
if(user_response != 'fuck off'):
if(user_response == 'yes'):
flag = False
print("RadicalBot: ok ..")
else:
if(greeting(user_response) != None):
print(greeting(user_response))
else:
print("RadicalBot: ")
print(response(user_response))
Token_sent.remove(user_response)
else:
flag = False
print("RadicalBot: i leave from here..")