Idea on Improving the Trending FeedsteemCreated with Sketch.

in #steemit7 years ago

How do we determine what is really trending vs what is being pumped

As any minnow on STEEMit knows, it is hard to get your article noticed. Sure, you can use a bot to give you upvotes or get lucky and have Curie or a random whale share some upvote love. But, in general, most posts get created and move off to the ether not even getting $0.10 of upvotes. I haven't taken a survey (future STEEMit option?), but I am guessing that there is a perception that only certain whales get to the top of the trending list. Sure, anyone can make the top of a trending list for a particular Tag/Category, but getting to the top of the main trending list is almost impossible for a small minnow or anyone below a reputation of 50.

trending.gif

As part of researching this article, I noticed that there are very few articles in the trending feed that are from authors who are below 50 reputation. I don't know if it is due to people with lower reputation not writing compelling articles or if the feed is skewed against those with lower reputations. At the time of writing this article, there were only 2 authors with a reputation in the 50s and most had a reputation in the 70s.

Another thing that seems to drive trending ranking is the reward value. The top article might not have the highest reward value, but the ones at the top will be in the 3 digit or higher range verses those at the bottom. While it makes sense that those articles getting the biggest upvote rewards should be at the top, we end up going back to how those with large amounts of Steem POWER can more easily push up their reward upvotes better than a little minnow with hardly any Steem POWER.

How can we solve this?

I don't know for sure. Maybe we should ignore the Trending and only focus on the Hot feed, which only shows articles that are new and not days old like Trending. Or, we could rethink how we calculate the positioning for the feeds.

I am guessing my formula could also work for the Hot feed, just switching out the Day Age Bonus with an Hour Age Bonus and only including those articles created within the last 12 hours.

I have created a formula that gives articles points. The higher the points, the higher the ranking. The points are based of off a number of items related to the article. As part of this article, I did manage to create a Google Spreadsheet that calculated the points from inputs that could easily be retrieved from each article. This is important, because we want this to be automatic and update on a regular basis and adjusting the rankings. Based on my formula, the rankings would only need to be adjusted on the hour.

First, lets focus on the things that really make an article trending (according to DeanLogic).

  1. Number of Views
  2. Number of Upvotes
  3. Age of Article

Age of Article

This of course, is a high importance. An article can be very popular, but if it is old, then it isn't "Trending" anymore. Things that are trending should be in the now and not stale. Since the payout for rewards is based off of a 7 day system, then any article that is about to payout or has paid out, should not be trending.

No Articles Over 6 Days Old

As part of my formula for determining which articles to choose, I will limit it to only articles less than 7 days old. Then, I will give a bonus to those articles that are newer verses older ones. The older articles, by definition, are leaving the trending status.

Age Bonus

  • 0-1 days = 6x dayMultiplier
  • 1-2 days = 5x
  • 2-3 days = 4x
  • 3-4 days = 3x
  • 4-5 days = 2x
  • 5-6 days = 1x
  • 6+ days = 0x ( as you will see below, that would give the article 0 points)

How the Age Bonus works, any article under 1 day old gets a 6x multiplier to total number of article points. As the article ages, the Age Bonus is less effective. These means, given two articles with equal base article points, the newer one would be ranked much higher. It is also possible that a newer article with less base articles points could be ranked higher than an older article with more base article points. At the moment, my formula uses whole numbers, but it could be adjusted to use fraction of an hour, so that an article created 15 minutes ago, gets just a slightly higher bonus than one created at 55 minutes.

Number of Views and Upvotes

One of the biggest annoyances is to see an article with just a few views but 100s of upvotes. Most likely, this article was upvoted by a bot or some community voting, without even being read. Bots have become a scourge of STEEMit. While some believe that the bots help minnows and new users, in the end they don't really help the community at all.


DestroyAllBots.png

To offset the difference between articles with actual users upvoting verses bot upvotes, the formula determines the actual view upvotes or

Views per Vote
viewPerVote = (Views / Votes) * Views

This part of the formula takes the number of views and divides it by the number of votes. If you have more votes than views, then this will give you a number below 1. If you have more views than votes, then that will give you a number above 1. The calculated number is then multiplied by your views. All things being equal, if an article was visited by an upvote bot and only have a couple of views, it would rank lower than an article that was viewed and upvoted by those people viewing it.

Finally, there needs to be something to add points for effort.

Word Count Sets and Bonus

It seems that the main purpose of STEEMit is to provide a place that offers content. Until there is an AI built that can determine what is a good article and what is a bad article, the best we can do is use the word count of the article. I'm sure there are tools that could be used to determine if an article has spelling, syntax and grammar errors, but that would probably slow down the calculations. Counting the number of words is easy and I used an online app called WORD Counter.net to check the articles. For the most part, I tried to not include any footer text or text that looked like it wasn't part of the article.

Frankly, the world count should probably be at the end of the edit window on STEEMit. Other applications, like WordPress, offer a word count, so that you know if you have hit enough words for the search crawlers to care.

Videos and Photos

One issue with using the word count has to do with videos and photos. I know that photo blogs are big on STEEMit and I have participated in them. As they say, "A picture says a 1,000 words". But, I am not about to give an image link 1,000 words or 2 word set bonus. Maybe whomever tweaks the formula can figure out whether the hashtag used for the article contains photography and provide article points based on the number of photos. But, we are still limited as to whether or not the photos are good or not. The same goes with videos. There is no way of determining the quality or effort put into the video. I would suggest, that a minimum, the author should provide text to explain the photo and the video in order to get more article points.

What's the 'Best'Word Count for Google?

The article above mentions that each page must have at least 250 words. Since that is the minimum effort, I decided to make 500 words as the minimum for a Word Set. To adjust for those who almost wrote another set, I determined that if the remaining word count was more than 250, then it can be counted as a full word set. And, to be a little bit fair, each article would get 1 point for being an article. So, if you had a half of word set beyond 500 words, you get 2 points: 1 for being and article and 1 for the half word set counted as a whole.

Total Word Sets

  • fullWordSets = words / 500
  • wordEndReminder = words - (fullWordSets * 500)
  • if(wordEndReminder > 250) {
    totalWordSets = fullWordSets + 2
    } else {
    totalWordSets = fullWordSets + 1
    }

Also, I decided that there had to be a point at which the author went beyond basic effort and that those articles should get a bonus for the extra effort. I decided that if there were more than 5 Word Sets, for each additional set, the article would get a two times multiplier. 5 word sets would be 2,500 words, or right at the "sweet spot" for building organic traffic.

HubSpot, in their 2017 post, found their blog post sweet spot was 2,500 words ~ Source: https://seocopywriting.com/whats-the-best-word-count-for-seo-copywriting/

For every word set you create beyond the "sweet spot", you are getting a bonus.
Word Set Bonus

  • if(totalWordSets > 5) {
    bonusWordSets = (totalWordSets - 5) * 2
    }

Let's put it all together

Now that we have the criteria for creating the points, we need to calculate the Article Points. As I mentioned, the Day Age is a multiplier, so all the base points are added and then multiplied by that.

Ranking Formula

  • points = (totalWordSets + bonusWordSets + viewPerVote) * dayMultiplier

As I mentioned at the start, I figured out how to do these calculations in Google Spreadsheet and went to get the data. As a note, the day multiplier was created by using a VLOOKUP and breaking down the days to a decimal. I didn't do an exact breakdown, because I didn't have the exact date of the article.

The Outcome

trendspread.gif

As part of my experiment, I took the Top 11 articles in the Trending feed. I ignored the first article, because it was from Ned and it had the rewards option removed. I'm not sure if that should be a criteria or not. I guess it shouldn't matter if you choose not to receive rewards from your article. Anyway, I excluded it because it was Ned's. After entering the values for those articles, I found 6 random articles way down on the list to see if they could unseat the Top 10 listed. Some article titles had to be truncated in order to fit in the table structure.

Trending RankArticleArticle PointsPoints Rank
1Miss. Delicious #81 : Tamsui's Hai Feng Seafood Restaurant - 55 years and still going!34425
2BUILDTEAM Final Auction2229
3"Code Is Law (Only When I Want, Otherwise It's Abuse)"103293
4Join the MinnowBooster Whitelist for MegaBoost!83364
5The evolution of Adam - the lesser understood spirit within us all.17456
6DLive - Answers for Tech Teasers, Bounty Survey for All Readers45958
7A Geeky Dad's Movie Guide to Thor: Ragnarok (2017)14810
8Sharpe.Capital ICO - Earn ETH in Exchange for Your Opinion about Markets and Assets.9697
9Everything for Beauty278021
10Introducing Lila*Star in Spokenword185652

As you can see from the Top 10 list, there would be some changes in the rankings using my system. "The Everything for Beauty" article, which is 2 days old, would be the top article by a long shot.

Trending RankArticleArticle PointsPoints Rank
1The Brick Building19out of Top 10
2Damn Poetry...161out of Top 10
3SteemFest² Speakers Inspire My New Upvoting System!2031rank higher than 5th
4The Predjama Castle129out of Top 10
5The Chronicles of The Father of Blockchain135out of Top 10
6Water Color Art #4: LADY IN BLUE631rank higher than 9th

The 6 random articles are listed as I found them, meaning rank 1 was higher than rank 2, etc. While two of the articles would actually be higher than some of the Top 10 articles, my formula also shows that the ranking of these articles would change in the overall listing.

The only real way to see a difference would be to create an app to replace the Trending and Hot feeds. Then I could compare the live feeds directly to see if there is a major change in what gets pushed to the top.

Would this help out any minnows?

I don't know if it would help out or not. But, I just think that maybe the method of determining the ranking in the feeds might benefit from some tweaking.

Word count: 2,277


DeanLogicForkSing-sm.png
Steem Badges

Let the positive energy sing!

More Power to the Minnows!!


DestroyAllBots.png

Sort:  

Coin Marketplace

STEEM 0.16
TRX 0.13
JST 0.027
BTC 59329.35
ETH 2613.53
USDT 1.00
SBD 2.44