Ranking code: info screen from program guide shows description at top, recording options in box. Could have a slider above that that the user could set a rank with. Also have to have the same slider on the advanced recording screen Are you sure you want to delete? box should have a slider as well. also needs to be in popup box from hitting 'i'. Master mixer volume in audio setup is an example of a slider. Database should store program name, category, user rank. Category can be used later to tweak selection. CREATE TABLE IF NOT EXISTS prgRank ( title VARCHAR(128), category VARCHAR(64), rank tinyint DEFAULT 0 ); -- decided to not pre-prime the table -- To prime the prgRank table: look in the 'record' table and add positive entries according to current recording method. If it is 1 - record only this showing 2 - record in this timeslot every X (or, record whenever on this channel) 3 - record anytime, anywhere -- decided to not pre-prime the table -- Another table will be used that stores program name, subtitle, and description. This table can then be used later on to do recommendation calculations. When a new rank is given to a program, all programs with that name will get added to this table. When new data is downloaded, program names in 'rank' will be checked and new programs matching those names will have their info added to this table. This way we build up a database of useful terms that we can base calculations off of. Hopefully this will provide more info that just the name of the show itself. CREATE TABLE prgRankHelper ( title VARCHAR(128), subtitle VARCHAR(128), description TEXT, category VARCHAR(64) ); Make the recommendation calculation a seperate program, like the mythcommskip program. Let it run at low priority, Have a "need to calculate recommendations" flag in the settings table that can be set, and periodically check that flag to see if it needs to be run. The flag will be set from mythfilldatabase, and anytime that a user changes a ranking. Once the flag is set from a user changing a ranking, don't run the rec calc immediately. Give the user 5 minutes or so to finish ranking programming. ========== irc log of discussing plans with Chutt ================ 11:35 < kvandivo> I'm really wanting to change things in a couple of ways for the next couple of steps, though. 11:36 < kvandivo> 1) I want to change the name of program rankings. That's not really what it is doing. It's actually setting recording priorities... (and I want to use the name 'program rankings' to actually allow users to rank programs.. whether or not they might happen to have them scheduled to record) 11:37 < Chutt> that'd be fine 11:37 < kvandivo> 2) actually implement the program rankings, where users can set a value (probably -5 through +5 or something) for how much they like/dislike a random show that shows up in the guide. 11:38 < kvandivo> this would also show up in various pages in myth, such as when they delete a show.. they would be asked something like 'how much did you like this (-5 - +5), etc 11:38 < kvandivo> and THEN, once that is in, I revise the way that I'm doing the recommendation calcs.. Right now it is working off of values in oldrecorded, recorded, and record.. I'd drop that, and switch to doing pure bayesian on what they have actually ranked 11:39 < kvandivo> so that's my plan of attack right now 11:40 < Chutt> sounds good 11:40 < Chutt> any plans for cf? 11:42 < kvandivo> absolutely. 11:42 < kvandivo> that's stage 2, though. :) 11:42 < kvandivo> that's where i really really really want to get to.. 11:44 < kvandivo> with the sparse amount of data that zap2it gives us here in na, i'm guessing that i can achieve pretty good accuracy on the recommendations without collaborative, but with it, it should really be effective 11:44 < kvandivo> if we got actors, etc in the datastream i think i could do a pretty slick job without cf 11:44 < Chutt> hopefully that'll change whenever they get off their asses and start their datadirect service 11:45 < kvandivo> i mean, the current version does pretty well, but it's really using oldrecorded in a way that it wasn't meant for. the data in there isn't really perfect for determining whether or not a user _likes_ a show.. (hence the reasons for my planned changes) 11:48 < kvandivo> and then, of course, there is all the configuration options that I have planned.. should it autorecord suggestions, if so, how (how much space, how many of each show, etc etc) and it would be helpful to add a recording type for suggestion, so that the autodelete code knows to kill those first, etc ========== irc log of recommendation calculation ================ 01:16 < thor_> on the reccomendations thing ... 01:16 < thor_> I actually know some of the guys that did the first collaborative filtering algorithms for Amazon 01:17 < Chutt> heh 01:17 < thor_> but I'm unclear on how anyone could do this without external information 01:17 < Chutt> build up a database 01:17 < Chutt> based on user information 01:18 < thor_> I like things that start at 7 pm ? 01:19 < thor_> just seems to me it would be a lot easier and much more useful to do some kind of shared information 01:19 < thor_> well ... 01:19 < Chutt> user A likes X and Y, user B likes X, so might like Y 01:19 < thor_> easier to do reccomendations 01:19 < thor_> yeah, outside information, ok 01:20 < Chutt> if zap2it ever launches their datadirect service 01:21 < Chutt> stuff like actors/directors can be used 01:21 < mikegrb> heh /if/ 01:21 < thor_> yup, yup 01:21 < mikegrb> you'd think they would want to make money 01:21 < thor_> I do understand collab. filtering 01:21 < thor_> I was just worried we were thinking we could get somewhere without touching the network 01:22 < Chutt> eventually, it'll be needed 01:22 < Chutt> i just can't write anything for it =) 01:22 < thor_> that's kind of an odd statement 01:23 * thor_ is thinking about odd employment contracts 01:23 < thor_> silence is golden 01:23 < thor_> well good 01:24 < Chutt> heh 01:24 < Chutt> no, one of our products is a recommendation engine 01:24 < thor_> 'cause we need somewhere to store DVD info (a la cddb) in any case 01:24 < thor_> ah 01:24 < Chutt> i obviously can't write anything to compete with work stuff 01:24 < Chutt> same with a dvd-database, too similar to what i do for work 01:24 < mikegrb> off line stuff could eventualy be something along the lines of a snapshot of an online database 01:25 < thor_> mikegrb, yup ... but you need something to snapshot :-) 01:25 < mikegrb> right 01:26 < thor_> hmmmm 01:26 < mikegrb> eventually heh, support the people who aren't paranoid eventually... then a database would be built up 01:26 < mikegrb> and the paranoid people can benifit some 01:26 < thor_> sure 01:26 < mikegrb> kind of could draw parallels between that and open source software 01:27 < mikegrb> support the people who give back, eventually a project may end up becomming so 'mainstream' that it ends up having things to support other people 01:28 < thor_> would be easy if bandwidth was free 01:28 < thor_> oh, and server space 01:28 < thor_> and maintenance 01:29 < thor_> well here's an odd thought ... 01:29 < ChaosExiguum> not really suited to p2p either 01:30 < thor_> build the capacity into myth, but leave the URL to the user 01:33 < thor_> build a sales channel method and a marketing mechanism into the protocol (?) 01:35 < ChaosExiguum> and hope someone makes a start-up? 01:36 < thor_> there has to be some sensible way to finance the infrastructure of reccomendations and metadata lookups 01:37 < ChaosExiguum> other than shameless plugs =) 01:37 < thor_> well ... it would be of value to me 01:37 < thor_> I would pay for it 01:38 < thor_> especially if "paying" meant a banner add on my Schedule Recordings screen 01:38 < ChaosExiguum> I guess as long as the reccomendations stayed unbiased 01:39 < thor_> yeah, that's a non trivial issue 01:39 < bline> could probably find volunteers for servers 01:39 < thor_> could definitely get the ball rolling for free 01:39 < thor_> no problem 01:39 < thor_> but longer term ... 01:41 < thor_> and doing a user X user X program collab. filter and managing the whole program/actor/episode namespace etc.,etc., that;s real CPU cycles 01:42 < thor_> well ... 01:42 < thor_> I wonder if you couldn't do it P2P ? 01:42 < ChaosExiguum> I bet you could with supernodes of a sort 01:42 < ChaosExiguum> much like bbs netmail 01:45 < ChaosExiguum> you could have a master server keeping track of who is supposed to connect to who, and that way evenly distrobute the load First time I mentioned the idea --- http://www.gossamer-threads.com/perl/mailarc/gforum.cgi?post=68579;search_string=collaborative%20filtering;guest=1176344&t=search_engine#68579 Discussion as a result of one of the patches --- http://www.gossamer-threads.com/perl/mailarc/gforum.cgi?post=80673;search_string=recommendations;guest=1571452&t=search_engine#80673 http://www.gossamer-threads.com/perl/mailarc/gforum.cgi?post=106234;search_string=;guest=2255584&t=search_engine#106234