Tuesday, 13 December 2016
The Common Ground Algorithm - A Possible Remedy for Filter Bubbles
Wednesday, 17 June 2015
The Bootstrap Problem
A post on Data Community DC discusses Why You Should Not Build a Recommendation Engine. The main point is that recommendation engines need a lot of data to work properly, and you're unlikely to have that when you start out.
I know the feeling. In a previous job I created a recommendation engine for a business communication system. It used tags on the content and user behaviour to infer the topics that the user was most likely to be interested in, and recommend content accordingly. Unfortunately, my testbed was my employer's own instance of the product, and the company was a start-up that was too small to need its own product. I never really got a handle on how well it worked.
This brings me to Emily. Emily isn't a product. It's a personal portfolio project. I had an idea for a recommendation system that would infer users' interests from content they posted in blogs, and recommend similar content. The problem is, the content it recommends comes from the other users, so at its current early stage of operation, it doesn't have much to recommend. The more people use it, the better it will become, but what's the incentive to be an early adopter?
What I seem to have at the moment is a recommendation engine that needs somebody to recommend it.
Tuesday, 9 June 2015
Emily Has Moved
Wednesday, 5 March 2014
One of my Fantastical Devices is on PyPI
sudo pip install Markov, and try it out. If you feel you can help me improve it, contact me and I can add you to the Google Code project.
Monday, 24 June 2013
A Couple of my Fantastical Devices
Saturday, 9 February 2013
Custom Sorting For Conlangs again
class CustomSorter(object): def __init__(self,alphabet): self.alphabet=alphabet def __call__(self,word): head,tail=self.separate(word1) key=[self.alphabet.index(head1)] if len(tail): key.extend(self(tail)) return key def separate(self,word): candidates=self.Candidates(word) while candidates==[]: word=word[1:] candidates=self.Candidates(word) candidates.sort(key=len) head=candidates.pop() tail=word[len(head):] return head,tail def Candidates(self,word): return [letter for letter in self.alphabet if word.startswith(letter)]