3 ms·
The current consensus is to use statistics without trying to write a program that "understands" human language. A common approach is to break your items down i
by aristus 18y ago
The current consensus is to use statistics without trying to write a program that "understands" human language.
A common approach is to break your items down into a vector of "features" (words, phrases, tokens, etc) and apply standard IR techniques like kNN, singular value decomposition (SVD), tf/idf, etc.
One interesting thing about your problem is that people use different words and phrasing for the same thing, which means you need a way to equate different tokens with each other. SVD is pretty good because it finds degrees of similarity based on context: 'Pikachu' becomes strongly associated with 'Pokemon' and 'Squirtle', and also with misspellings like 'Picachoo'. SVD is tricky and expensive if you implement it wrong. The good news is that it recently came off-patent so there are a lot of new libraries popping up.
When I worked on a keyword search engine prototype for Brasil, I found that a mix of Tanimoto and Ferber similarity scores worked very well for finding similarity between short phrases, and I didn't even need to know how to read Portuguese.
PressFlip is using support vector machines for a similar task of clustering news items. The Vowpal Wabbit is a stellar library used by Yahoo. I think they recently open-sourced it. allvoices.com is tackling the same area as well. (disclaimer: I am a dev at allvoices, though I don't work on that part :)
- jacobscott 18y agoHow big is the technology gap in this area between large players and startups? I've always wondered whether having a feature being more mathy/researchy makes it harder for a small team to handle. I guess if everyone is using OSS libraries it may even the score.
- aristus 18y agoIt's smaller than you may imagine. Google's great advantage is that they were one of the first to realize that data tends to beat clever algorithms at a certain scale. But for restricted domains there are many techniques that are well-known in academic circles that are not yet mainstream. A "mathy/researchy" feature only requires people versed in that research and math. It is surprising how many jaded IR graduates there are in the valley, looking for an interesting problem to solve.
- ntoshev 18y agoStatistical language processing is a good way to go, but he must have enough data for it to be useful. I'd recommend to start by gathering the data.
- deleted 18y ago[deleted]
- abhikshah 18y agoAmazon's Mechanical Turk seems like a good way to gather training data.. and it might even be cheap enough to use instead of a trained model (at least at first).