Class: Decidim::Ai::SpamDetection::Resource::Base

Inherits:
Object
  • Object
show all
Includes:
TranslatableAttributes
Defined in:
decidim-ai/lib/decidim/ai/spam_detection/resource/base.rb

Instance Method Summary collapse

Methods included from TranslatableAttributes

#attachment?, #default_locale?

Instance Method Details

#batch_trainObject



12
13
14
15
16
17
18
19
20
21
22
# File 'decidim-ai/lib/decidim/ai/spam_detection/resource/base.rb', line 12

def batch_train
  query.find_each(batch_size: 100) do |resource|
    classification = resource_hidden?(resource) ? :spam : :ham

    fields.each do |field_name|
      raise "#{resource.class.name} does not implement #{field_name} as defined in `#{self.class.name}`" unless resource.respond_to?(field_name.to_sym)

      train classification, translated_attribute(resource.send(field_name.to_sym))
    end
  end
end

#fieldsObject



10
# File 'decidim-ai/lib/decidim/ai/spam_detection/resource/base.rb', line 10

def fields; end

#train(category, text) ⇒ Object



24
25
26
27
28
# File 'decidim-ai/lib/decidim/ai/spam_detection/resource/base.rb', line 24

def train(category, text)
  raise error_message("Decidim::Ai::SpamDetection.resource_detection_service", __method__) unless classifier.respond_to?(:train)

  classifier.train(category, text)
end

#untrain(category, text) ⇒ Object



30
31
32
33
34
# File 'decidim-ai/lib/decidim/ai/spam_detection/resource/base.rb', line 30

def untrain(category, text)
  raise error_message("Decidim::Ai::SpamDetection.resource_detection_service", __method__) unless classifier.respond_to?(:untrain)

  classifier.untrain(category, text)
end