Extinction
- 5 Devlogs
- 14 Total hours
A lightweight AI content blocker browser extension powered by regex-based pattern matching and linguistic analysis.
A lightweight AI content blocker browser extension powered by regex-based pattern matching and linguistic analysis.
Expanded the options page even further! You can now basically customize every single parameter that Extinction’s underlying system uses.
Funny thing, I actually caught two bugs when adding the signal calibrator and lexical diversity / burstiness weight fields.
The first bug: the signal calibration math actually didn’t allow for decimal calibrators because it was doing plain exponentiation (meaning negative signals would fail in that step). To fix this, I added a very basic change that would simply preserve the sign of the signal during calibration. That way, negative signals stay negative and positive signals stay positive.
The second bug: if both the lexical diversity weight AND the burstiness weight are 0, there would be a division-by-zero error when calculating fluency score (which is the value that represents how natural-sounding the text is). Pretty simple fix. I just added a check using a ternary operation.
Added even more fields to the parameter options! You can now edit the suspicion threshold along with some more sensitive options like the adjustment offset (basically the horizontal shift of the logistic function that is used to normalize the score).
Also, while adding this, I realized I forgot to actually enforce the default value for all fields outside of just the options page. (Essentially, if you were to install the extension and never open the parameters tab, all the variables in there would default to null when it actually analyzes web pages.) Made sure to include a fix for that in these changes!
I also learned a little more about sigmoid functions in general while trying to come up with a good enough caption for the new field, so that’s a nice bonus. Also had to add a little note at the top of the page because the defaults for these fields were not really chosen based on tested accuracy (they are simply based on my own observations of what seems to produce the most satisfactory results).
By the way, I’d like to take some time to acknowledge the amazing feedback I got after my first ship! For Chrome users wanting justice after seeing that this extension is only published on AMO, I should mention that publishing to the Chrome Web Store requires a $5 fee, which I (unfortunately) cannot pay at this time. For now, Chrome/Safari users can stick to following the official build instructions listed in the README. In the future, I’ll also try to optimize Extinction’s detection system since I’m starting to feel like its status of being “lightweight” is slowly slipping away as I add new features. Anyway, thank you all for your wonderful comments, and I hope to fulfill as many of your suggestions as I can! :)
Added a “Suspicion threshold” option so anyone who uses Extinction can customize the detector’s aggressiveness. I also plan on making many of the other weights configurable as well in the near future!
Made a decent amount of changes today with Extinction’s classification algorithm and a few UI elements. Detections should be more accurate now with these new changes. (For those who want more detail: I added Type-Token Ratio calculations for determining lexical diversity along with better-tuned weights/constants. Also now using a sigmoid function for score normalization. A decent amount of math involved with this, but I’d say it works a lot better now.)
Finally reached a working version of Extinction, a lightweight AI content blocker extension that uses regex pattern matching and basic sentence analysis for detection (not LLM-based like almost every other AI detector, so it’s fully local). It’s definitely not foolproof, but it does a sufficiently decent job at detecting AI-generated articles despite its significant limitations. It also comes with a configurable exception list to exclude domains and pages from detections!
(This is a project I’ve been working on for several months, but I’ve been making a lot more progress ever since Stardance began!)