Re: [BULK] New plugin: NeuralNetwork.pm

David Birnbaum <[email protected]> Sat, 28 Feb 2026 13:59:27 -0600
Newsgroups gmane.mail.spam.spamassassin.devel
Message-ID <[email protected]>
Howdy.

I am testing this out to see how it goes.  Early results show it marking a lot of things as Spam that I don’t expect to see…I did notice this as I was training it up:

Feb 28 13:18:07.029 [169364] dbg: config: read file /etc/mail/spamassassin/NeuralNetwork.pre
Feb 28 13:18:07.030 [169364] dbg: config: read file /etc/mail/spamassassin/NeuralNetwork.cf
Feb 28 13:18:07.031 [169364] dbg: config: parsing file /etc/mail/spamassassin/NeuralNetwork.pre
Feb 28 13:18:07.031 [169364] dbg: config: fixed relative path: /etc/mail/spamassassin/NeuralNetwork.pm
Feb 28 13:18:07.031 [169364] dbg: plugin: loading Mail::SpamAssassin::Plugin::NeuralNetwork from /etc/mail/spamassassin/NeuralNetwork.pm
Feb 28 13:18:07.817 [169364] dbg: config: parsing file /etc/mail/spamassassin/NeuralNetwork.cf
Feb 28 13:18:07.974 [169364] dbg: plugin: Mail::SpamAssassin::Plugin::NeuralNetwork=HASH(0x55631d0005a0) implements 'finish_parsing_end', priority 0
Feb 28 13:18:07.991 [169364] dbg: NeuralNetwork: SQL connection initialized for vocabulary storage
Feb 28 13:18:10.212 [169364] dbg: NeuralNetwork: Loaded 748 vocabulary terms from SQL for user: spam
Feb 28 13:18:10.212 [169364] dbg: NeuralNetwork: Insufficient spam/ham data for prediction: spam=158, ham=0
Feb 28 13:18:10.212 [169364] dbg: NeuralNetwork: Not enough tokens found
Feb 28 13:18:10.289 [169364] dbg: plugin: Mail::SpamAssassin::Plugin::NeuralNetwork=HASH(0x55631d0005a0) implements 'autolearn', priority 0
Feb 28 13:18:10.293 [169364] dbg: plugin: Mail::SpamAssassin::Plugin::NeuralNetwork=HASH(0x55631d0005a0) implements 'learn_message', priority 0
Feb 28 13:18:10.293 [169364] dbg: NeuralNetwork: autolearning disabled, quitting

Even though I am feeding ham in, it doesn’t seem to be tagging anything as ham (or, at least, the counter is not being set correctly).  I have fed stuff in via sa-learn —ham, as well as through the normal auto-learning process (which I have set to 1).

I didn’t see any way to get the spam/ham token counts after this message disappears.  Perhaps that could be added to sa-learn —dump magic (or add another option there).  

Any thoughts as to whether or not this is properly loading ham in correctly?  I downloaded it from GitHub today (2/28) so I should have the latest code installed.

Cheers,

David.

——

> On Feb 24, 2026, at 7:59 PM, Kent Oyer <[email protected]> wrote:
> 
> I haven't had time to play with this plugin, but my understanding of this type of NN is that it doesn't work well with incremental training. Meaning that if just one item is added to the training set, the whole learning process needs to be re-run. Otherwise the model adjusts it's weights to match the new sample at the expense of all previous samples. I'm just wondering if you've run into this and if you have any preliminary accuracy statistics from this plugin.
> 
> 
> 
> On Tue, Dec 30, 2025 at 03:33 AM, Giovanni Bechis <[email protected]> wrote:
> ------------------------------------------------------------------------------------------------------------------
> CAUTION: External email from: gbechis@‌apache.‌org
> Use caution before clicking on links or opening attachments.
> ------------------------------------------------------------------------------------------------------------------
> Hi,
> I've just committed to my Github repo the first version of a SpamAssassin plugin that uses Neural Networks to detect spam messages.
> Code is available at https://github.com/bigio/spamassassin-NeuralNetwork , if the community is interested I can work on merging it to the Apache SpamAssassin src tree.
> Testers are always welcome.
> Cheers
> Giovanni
> -- 
> Giovanni Bechis
> V.P. Apache SpamAssassin
> [email protected] <mailto:[email protected]>