Created
October 17, 2016 19:47
-
-
Save generall/42e28f67ee01078b7ebf7861ccb52963 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
# Common analizer interface | |
class TSemanticAnaliser | |
def analise_text(text) | |
# returns double | |
end | |
def learn(array_of_texts) | |
end | |
end | |
class TBayesSemanticAnalizer < TSemanticAnaliser | |
# Implementation of interface | |
def analise_text(text) | |
# implementation here | |
end | |
# Implementation of interface | |
def learn(array_of_texts) | |
# actual learning here | |
end | |
end | |
# какая-то имплементация анализатора, которая реализует общий интерфейс | |
class MyCustomAnalizer < TSemanticAnaliser | |
# Implementation of interface | |
def analise_text(text) | |
# implementation here | |
end | |
# Implementation of interface | |
def learn(array_of_texts) | |
# actual learning here | |
end | |
end | |
# класс, который производит мажоритарное голосование среди всех классификаторов | |
class MajorityUnit | |
# analizer - что-то, реализующее TSemanticAnaliser | |
def add_analizer(analizer) | |
@analizers.push(analizer) | |
end | |
def classify(text) | |
@analizers.map{|analizer| analizer.analise_text(text)}.reduce(&:+) | |
end | |
def learn_all() | |
@analizers.each(&:learn) | |
end | |
end | |
# класс, который производит взвешенное мажоритарное голосование среди всех классификаторов | |
class WeightedMajorityUnit < MajorityUnit | |
# analizer - что-то, реализующее TSemanticAnaliser | |
def add_analizer(analizer, weight) | |
@analizers.push([analizer, weight]) | |
end | |
def classify(text) | |
@analizers.map{|analizer, weight| analizer.analise_text(text) * weight}.reduce(&:+) | |
end | |
# здесь learn_all не надо заново реализовывать, переиспользование кода, все такое | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment