Created
October 23, 2008 17:37
-
-
Save carlisia/19121 to your computer and use it in GitHub Desktop.
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 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