Fuzzy smart selections
Not, I am not particulary hungry at the moment, despite what this image may suggest.
Let us assume that I am hungry, and I would like some sort of a Vegetable to eat. Now, I know that I would really like to eat a carrot.
Problem.
I don't want to try all the possibilities in the kitchen. That would be real horror. But do I have any other choice? Assume that I have the time to do whatever I want, how would you handle the question of "give me something like carrot".
Please remember that simplicity is a value. And yes, I do have an idea about this.
Comments
I'd tag different food products with properties like "can be eaten raw", "is healthy", "is crunchy" etc. then run a query to see which other things had the most properties in common.
kinda curious how cheese and carrots are related?
Thats easy:
Build your nutrimatic dispenser, press the button and you'll get something "almost, but not quite, entirely unlike carrot"...
(http://en.wikipedia.org/wiki/Notable_phrases_from_The_Hitchhiker's_Guide_to_the_Galaxy#Not_entirely_unlike)
Oh, and it will have the SelectedIndex of 42
Sorry ... not really helpfull ... but it just had to be... :-)
It depends on your definition of what is similar to a carrot. What is your criteria for a fuzzy match? The fact that something is a vegetable? Color? Size? Nutritional Value? Similar sounding name? The list really can go on.
The answer really depends on the question. To generalize this, all you need for a fuzzy match is criteria(one or many) to match on and a range of acceptable values for those criteria.
Well, it looks like your picture is a proximity map. IOW, the thing closest on the chart is the closest to what I'm after. If I ask for a carrot, the next closest thing according to the map is a pumpkin (orange, crunchy (raw anyways)), next is corn, onion, or eggplant.
Wouldn't the simplest possible thing be not display those things that cannot be selected (or at least indicate they are currently unavailable)?
The kind of fuzzy pattern matching you are talking about is probably quite possible, but if you are talking about making a fuzzy match for a person based on their initial selection, consider that the way you evaluate a list of items and pick similar things is very different to the way someone else may make that same evaluation.
I'd be trying as hard as possible to let the user perform the fuzzy matching =)
The problem is not unlike that of detecting spam, which can be done with a statistical rules engine that classifies things into buckets. (Bayesian Filtering. http://en.wikipedia.org/wiki/Bayesian_spam_filtering)
Or, perhaps like the Netflix algorithm (http://www.netflixprize.com/), whereby Netflix is able to reliably predict what movies I will like.
Or perhaps just having a wife that will cook dinner for me.
Hogfather was a good movie, as well as a great book. Hex was a stroke of genius. Thanks for the grin you just gave me :)
I think this post lacks information. What is the 'plate' at the top? Is it data available to explore? How is it persisted? Can machines believe?
I actually did some work like this in computer vision a while ago back when I was still in school. Computer vision, particularly image search (like google images for example) is full of interesting problems like this one and they have a number of interesting solutions. I think in this case, when you want something "like a carrot" what you need to do is come up with a histogram that is able to group vegetables by certain measurable characteristics and then if you have no carrot, you can go to the same "bin" in your histogram that carrot lives in and select another item and it would have many of the same characteristics of a carrot. If you don't have anything else, you would be able to jump to adjacent bins that would contain vegetables that may have some similar qualities to what you're looking for. The trick here is organizing your bins so that this relationship can be modeled. In computer vision, this is often a 6-dimensional monstrosity that is very obnoxiously difficult to work with mathematically (I think I used the term "data blob"), but does work, often quite well. If you want to be really slick, you can use some sort of feedback algorithm that modifies the characteristics of each bin in your histogram and continously regroups your vegetables based on that feedback. Therefore, over time, when I wanted something like a carrot, I would possibly get a different vegetable than you because my definition of what makes a carrot a carrot would be different. Applying this type of thing to computer vision is really hard.
In first place, you should not show unavailable vegetables, or put a note warning stock availability. If this usability improvement is not enough, just then you can think in taxonomies, bayesian filters, IA, etc...
I am thinking of a learning algorithm. Maybe registering what users usually pick after being disappointed by carrots, and offer that as a first choice.
Comment preview