retoor b607207647 feat: add per-file analysis counter and percentage outputs to isspam, plus totals.py summarizer
Introduce a global `total` counter incremented on each `analyze()` call, printing the file sequence number. Extend the analysis block to compute and display capitalized and forbidden word percentages when forbidden words exist. Add a new Python script `totals.py` that reads the application output and computes average percentages across all processed files.
2024-11-30 19:32:55 +00:00

Isspam

Fast as light evaluator for text files to summarize specific details about the text files.

Building

make build

Build with memory check (requires valgrind to be installed):

make valgrind

Running

Using files as parameter

./isspam ./spam/*.txt
./isspam ./not_spam/*.txt

Using stdin

Useful for automation.

cat ./spam/example_spam1.txt | ./isspam

Example output

File: ./spam/example_spam3.txt
Capitalized words: 39
Sentences: 20
Words: 420
Numbers: 1
Forbidden words: 15
<0:recovery>
<1:techie>
<2:https>
<3:digital>
<4:hack>
<5://>
<6:com>
<7:@>
<8:crypto>
<9:bitcoin>
<10:whatsapp>
<11:cryptocurrency>
<12:stolen>
<13:contact>
<14:understanding>
Word count per sentence: 21
Memory usage: 1 MB, 6.460 (re)allocated, 4.222 unqiue free'd, 0 in use.

Valgrind status

Date: 2024-11-28

Memory usage: 1 MB, 6.460 (re)allocated, 4.222 unqiue free'd, 0 in use.
==131498== 
==131498== HEAP SUMMARY:
==131498==     in use at exit: 0 bytes in 0 blocks
==131498==   total heap usage: 6,486 allocs, 6,486 frees, 2,342,294 bytes allocated
==131498== 
==131498== All heap blocks were freed -- no leaks are possible
==131498== 
==131498== For lists of detected and suppressed errors, rerun with: -s
==131498== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
S
Description
For a site I was doing spam analysis, how to recognize it. I do this by checking how it is written. How much numbers are used. How many capitals. That's the first indication. I made it originally myself but a few people liked the project and wrote their versions in their preferred language. Very happy about that. We are bench marking it as challenge, the benchmark is doing analysis for 900 books in txt format. The fastest application wins. By now, every language has as wel won as lost. We keep iterating and making them faster. Thanks 12bitloat, BordedDev en JestDotty for contribution of their source.
Readme
486 MiB
Languages
Rust 73%
C++ 12.9%
C 6.8%
Swift 3.4%
Python 2.2%
Other 1.6%