Cadmium::BayesClassifier
Inherits YAML::Serializable / JSON::Serializable / Reference / Object
This is a native-bayes classifier which used Laplace Smoothing. It can be trained to categorize sentences based on the words in that sentence.
Example:
classifier = Cadmium.bayes_classifier.new
# Train some angry examples
classifier.train("omg I can't believe you would do that to me", "angry")
classifier.train("I hate you so much!", "angry")
classifier.train("Just go. I don't need this.", "angry")
classifier.train("You're so full of shit!", "angry")
# Some happy ones
classifier.train("omg you're the best!", "happy")
classifier.train("I can't believe how happy you make me", "happy")
classifier.train("I love you so damn much!", "happy")
classifier.train("You're the best!", "happy")
# And some indifferent ones
classifier.train("Idk, what do you think?", "indifferent")
classifier.train("yeah that's ok", "indifferent")
classifier.train("cool", "indifferent")
classifier.train("I guess we could do that", "indifferent")
# Now let's test it on a sentence
classifier.categorize("You shit head!")
# => "angry"
puts classifier.categorize("You're the best :)")
# => "happy"
classifier.categorize("idk, my bff jill?")
# => "indifferent"
Constants
DEFAULT_TOKENIZER = Cadmium::WordTokenizer.new
Constructors
new(ctx : YAML::ParseContext, node : YAML::Nodes::Node)
Sourcenew(pull : JSON::PullParser)
Sourcenew(tokenizer = nil)
Sourcenew(*, __pull_for_json_serializable pull : JSON::PullParser)
Sourcenew(*, __context_for_yaml_serializable ctx : YAML::ParseContext, __node_for_yaml_serializable node : YAML::Nodes::Node)
SourceInstance methods
frequency_table(tokens)
Build a frequency hash map where
- the keys are the entries in
tokens - the values are the frequency of each entry in
tokens
initialize_category(name)
Intializes each of our data structure entities for this
new category and returns self.
token_probability(token, category)
Calculate the probaility that a token belongs to
a category.
tokenizer
Sourcetokenizer=(tokenizer : Cadmium::Tokenizer)
Sourcetrain(text, category)
Train our native-bayes classifier by telling it what
category the train text corresponds to.