Steem Sincerity - Spam Filtering API and App Extensions



Steem Sincerity

This project will attempt to help the community address the spam problem by aiming to introduce the following:

  1. A fast API which provides detailed classification information about any Steem account.
  2. Chrome extension(s) for popular Steem web apps such as Condenser, which make this information easily available in these front-end interfaces, and allow the sorting and filtering of comments based on personalised criteria such as spam scores.
  3. Modifications to front-ends and (hopefully) apps to support this API directly.

Approach

A few months ago, I created an experimental account classifier. This uses machine learning and a small training set to determine patterns which identify comments as spam (or from bots). I would like to adapt this by increasing the training set of accounts, increasing the complexity of the feature set and making it performant enough to apply to the hundreds of thousands of Steem accounts in a scalable manner.

I'm aware that hiding spam does not directly stop it from bloating the blockchain, or being used for self-voting, which are significant concerns, but it should assist with content discovery, and by reducing the visibility of spam, somewhat undermine the economic incentive to produce it. In addition to this, it may reduce the number of comments which are upvoted and increase the number which are downvoted by providing instant insights into each account commenting on posts.

What's Available Now?

There is a minimally functional experimental endpoint at https://multi.tube/s/api/

This allows you to make HTTP GET calls like this:

https://multi.tube/s/api/get-classification-scores/account1,account2

...and which returns JSON responses like this:

{
    "account1": {
        "classification_bot_score": 0.285714285714286,
        "classification_human_score": 0.714285714285714,
        "classification_spammer_score": 0.0
    },
    "account2": {
        "classification_bot_score": 0.571428571428571,
        "classification_human_score": 0.428571428571429,
        "classification_spammer_score": 0.0
    }
} 

Up to 100 accounts can be queried at once, and the results may be easily used to modify/suppress comment rendering. If a requested account has not been classified, it will not be returned in the response.

This API is still using the same spam scoring formula as the Steem Reports accounts classifier, and this really needs to be improved and trained again to increase the accuracy of classification scores, but I think it is helpful in its current state, and serves as something to develop the other aspects of the project against.

When using this API to exclude spam, it is envisaged that we could also use followers information to augment the data. For example, somebody may want to allow accounts they already follow to evade the spam filtering process so they never miss something they would want to see, as no spam filter is perfect.

Training the Classifier Software

To improve the accuracy of the classifier I will need to collect three sets of account names:

  1. Spammers - generating significant spam, and little content of value
  2. Humans Content Creators - generating no (or very little) spam and valuable content
  3. Bots

I will announce a training date soon, and collect recent examples of each of these types of accounts. They need to be recent as the database will store a maximum of 14 days of comments.

Please let me know if you would be able to help by providing accounts in these categories when the time comes, so I can notify you.


I'm using my multi.tube domain/server in the short-term, but if the project gets enough support I'll give it its own.

Again, please let me know if you have any questions or would like to help with the project.

H2
H3
H4
3 columns
2 columns
1 column
14 Comments