Skip to content

Instantly share code, notes, and snippets.

@carlisia
Created October 23, 2008 17:37
Show Gist options
  • Save carlisia/19121 to your computer and use it in GitHub Desktop.
Save carlisia/19121 to your computer and use it in GitHub Desktop.
def load_classifier(name)
# load energetic classifier
labels = Bayes.find(:all,
:select => "category",
:conditions => ["classifier = ? AND word is NULL AND count is NULL", name])
str_labels = []
labels.each do |l|
str_labels << l.name
end
record = Bayes.find(:all,
:select => "category, word, count",
:conditions => ["classifier = ? AND category is not NULL AND word is not NULL AND count is not NULL", name])
puts record.size
puts str_labels
b = Classifier::Bayes.new str_labels
b.load_from_data(record)
b
end
def training()
record = TempTweet.find(:all,
:select => "text, energetic, positive")
# Build bayes classifier for energetic
b = Classifier::Bayes.new '0', '1'
record.each do |r|
b.train r[:energetic], r[:text]
end
# Test bayes classifier for energetic
correct = 0
record.each do |r|
guess = b.classify r[:text]
correct = correct + 1 if(guess == r[:energetic])
end
# puts correct/record.size
save_classifier( b, 'energetic')
#######
# Build bayes classifier for positive
b2 = Classifier::Bayes.new '0', '1'
record.each do |r|
b2.train r[:positive], r[:text]
end
# Test bayes classifier for positive
correct = 0
record.each do |r|
guess = b2.classify r[:text]
correct = correct + 1 if(guess == r[:positive])
end
#puts correct/record.size
save_classifier( b2, 'positive')
end
def save_classifier(b, name)
# Save classifier to table
# In the future, clean table
#destroy
cat = b.get_categories
cat.each do |key1, value1|
value1.each do |key2, value2|
puts name
puts key1
puts key2
puts value2
new_bayes = Bayes.new(:classifier => 'a', :category => 'b', :word => 'c', :count => 1)
# new_bayes = Bayes.new
# new_bayes.category = key1.to_s
# name.inspect
# new_bayes.classifier = name
# new_bayes.word = key2.to_s
# new_bayes.count = value2
new_bayes.save
end
end
end
def load_classifier(name)
# load energetic classifier
labels = Bayes.find(:all,
:select => "category",
:conditions => ["classifier = ? AND word is NULL AND count is NULL", name])
str_labels = []
labels.each do |l|
str_labels << l.name
end
record = Bayes.find(:all,
:select => "category, word, count",
:conditions => ["classifier = ? AND category is not NULL AND word is not NULL AND count is not NULL", name])
puts record.size
puts str_labels
b = Classifier::Bayes.new str_labels
b.load_from_data(record)
b
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment