Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

76 lines (62 sloc) 1.827 kb
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
describe "NaiveBayes" do
describe "Classification" do
before do
@classifier = create_and_train_classifier
end
it "should classify as spam with a score of 0.5" do
a = @classifier.classify('bad', 'word')
a[0].should == :spam
a[1].should == 0.5
end
it "should change information" do
@classifier.untrain(:spam, 'bad', 'word')
a = @classifier.classify('bad', 'word')
a[0].should == :ham
a[1].should == 1.0
end
end
describe "Saving the NB" do
describe "DB filepath has been set" do
before do
@classifier = NaiveBayes.new(:spam, :ham)
@classifier.db_filepath = db_filepath
end
it "should save to the filepath provided" do
FileUtils.rm(db_filepath, :force => true)
@classifier.save
File.exists?(db_filepath).should be_true
end
end
describe "DB filepath has no been set" do
it "should raise an error" do
lambda do
NaiveBayes.new(:spam, :ham).save
end.should raise_error
end
end
end
describe "Load" do
before do
classifier = NaiveBayes.new(:spam, :ham)
classifier.db_filepath = db_filepath
classifier.train(:spam, 'bad', 'word')
classifier.train(:ham, 'we', 'bad')
classifier.save
end
it "should return 0.5" do
classifier = NaiveBayes.load(db_filepath)
classifier.classify('bad', 'word')[1].should == 0.5
end
end
private
def create_and_train_classifier
a = NaiveBayes.new(:spam, :ham)
a.train(:spam, 'bad', 'word')
a.train(:ham, 'we', 'bad')
a
end
def db_filepath
File.expand_path(File.dirname(__FILE__) + '/db/naive.nb')
end
end
Jump to Line
Something went wrong with that request. Please try again.