Skip to content

Commit

Permalink
Remove textblob dependency in time logic adapter
Browse files Browse the repository at this point in the history
  • Loading branch information
gunthercox committed Nov 30, 2016
1 parent 79e35c3 commit e50aa37
Showing 1 changed file with 42 additions and 13 deletions.
55 changes: 42 additions & 13 deletions chatterbot/logic/time_adapter.py
Expand Up @@ -10,27 +10,56 @@ class TimeLogicAdapter(LogicAdapter):

def __init__(self, **kwargs):
super(TimeLogicAdapter, self).__init__(**kwargs)
from textblob.classifiers import NaiveBayesClassifier

training_data = [
('what time is it', 1),
('do you know the time', 1),
('do you know what time it is', 1),
('what is the time', 1),
('it is time to go to sleep', 0),
('what is your favorite color', 0),
('i had a great time', 0),
('what is', 0)
from nltk import NaiveBayesClassifier

self.positive = [
'what time is it',
'do you know the time',
'do you know what time it is',
'what is the time'
]

self.negative = [
'it is time to go to sleep',
'what is your favorite color',
'i had a great time',
'what is'
]

self.classifier = NaiveBayesClassifier(training_data)
labeled_data = (
[(name, 0) for name in self.negative] +
[(name, 1) for name in self.positive]
)

# train_set = apply_features(self.time_question_features, training_data)
train_set = [(self.time_question_features(n), text) for (n, text) in labeled_data]

self.classifier = NaiveBayesClassifier.train(train_set)

def time_question_features(self, text):
"""
Provide an analysis of significan features in the string.
"""
features = {}

all_words = " ".join(self.positive + self.negative).split()

for word in text.split():
features['contains({})'.format(word)] = (word in all_words)

for letter in 'abcdefghijklmnopqrstuvwxyz':
features['count({})'.format(letter)] = text.lower().count(letter)
features['has({})'.format(letter)] = (letter in text.lower())

return features

def process(self, statement):
from chatterbot.conversation import Statement

now = datetime.now()

confidence = self.classifier.classify(statement.text.lower())
time_features = self.time_question_features(statement.text.lower())
confidence = self.classifier.classify(time_features)
response = Statement('The current time is ' + now.strftime('%I:%M %p'))

return confidence, response

0 comments on commit e50aa37

Please sign in to comment.