[MWForum]movie recommender
Jeff Knope
mwforum@lists.mathcats.com
Tue, 20 Apr 2004 15:49:42 -0700
This is a multi-part message in MIME format.
------=_NextPart_000_0009_01C426EF.189D55A0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Vasant Dhar wrote:
I am trying to build a very simple recommender system for movies in
Microworlds. It will work as follows:
1. System asks user to specify GENRE of interest, i.e. comedy, thriller,
etc.
2. System searches through a table of past movies (HISTORICAL_MOVIES)
corresponding to the specified GENRE. Call this subset SUBSET.
3. System presents user with SUBSET and asks which movies user liked (or =
it
can ask for a ranking, which is preferable). Let's call this =
LIKED_SUBSET.
4. System matches attributes of LIKED_SUBSET with a table of =
CURRENT_MOVIES
to determine SUGGESTED_SUBSET which consists of ranked movies.
5. If user is satisfies, quit, otherwise go to step 1.
This is a pretty simple problem, easily solvable in BASIC. How do I do =
it in
MW? The way I see it, it involves creating a tables of movies =
(historical
and current), which should be sets of structured objects whose
attribute-values can be accessed and matched. And the results should be
assigned via some kind of assignment statement to variables etc.
Dear Vasant,
MicroWorlds uses a different data structure paradigm than BASIC. =
MicroWorlds is a dialect of the artificial intelligence language LISP, =
whose name is derived from exactly this difference. It stands for "LISt =
Processing." The fundamental data structure is a list, not a table. Data =
is evaluated by recursively examining the elements of a list.=20
A list may me a list of lists. This statement is the key to complexity =
of data structure in MicroWorlds.=20
It takes a little practice to wrap your mind around this difference. It =
takes quite a bit of practice to become facile with writing procedures =
for building lists, and then writing other procedures for analyzing and =
comparing them.=20
If you're in a hurry, you probably ought to just do it in BASIC. =
Otherwise, your project makes a nearly ideal problem for learning list =
processing. Perhaps other forum members can point you toward the best =
materials for building skills to do this.
Please believe me, these comments are more helpful than they may at =
first sound.
Good Luck,
Jeff
------=_NextPart_000_0009_01C426EF.189D55A0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2800.1400" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV>Vasant Dhar wrote:</DIV>
<DIV> </DIV>
<DIV>I am trying to build a very simple recommender system for movies=20
in<BR>Microworlds. It will work as follows:<BR><BR>1. System asks user =
to=20
specify GENRE of interest, i.e. comedy, thriller,<BR>etc.<BR>2. System =
searches=20
through a table of past movies (HISTORICAL_MOVIES)<BR>corresponding to =
the=20
specified GENRE. Call this subset SUBSET.<BR>3. System presents user =
with SUBSET=20
and asks which movies user liked (or it<BR>can ask for a ranking, which =
is=20
preferable). Let's call this LIKED_SUBSET.<BR>4. System matches =
attributes of=20
LIKED_SUBSET with a table of CURRENT_MOVIES<BR>to determine =
SUGGESTED_SUBSET=20
which consists of ranked movies.<BR>5. If user is satisfies, quit, =
otherwise go=20
to step 1.<BR><BR>This is a pretty simple problem, easily solvable in =
BASIC. How=20
do I do it in<BR>MW? The way I see it, it involves creating a tables of =
movies=20
(historical<BR>and current), which should be sets of structured objects=20
whose<BR>attribute-values can be accessed and matched. And the results =
should=20
be<BR>assigned via some kind of assignment statement to variables=20
etc.<BR></DIV><FONT face=3DArial size=3D2></FONT>
<DIV><FONT face=3DArial size=3D2></FONT><BR><FONT face=3DArial =
size=3D2>Dear=20
Vasant,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>MicroWorlds uses a different data =
structure=20
paradigm than BASIC. MicroWorlds is a dialect of the artificial =
intelligence=20
language LISP, whose name is derived from exactly this=20
difference. It stands for "LISt Processing." The fundamental data =
structure=20
is a list, not a table. Data is evaluated by recursively examining =
the=20
elements of a list. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>A list may me a list of lists. This=20
statement is the key to complexity of data structure in =
MicroWorlds.=20
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>It takes a little practice to wrap your =
mind around=20
this difference. It takes quite a bit of practice to become facile with =
writing=20
procedures for building lists, and then writing other =
procedures=20
for analyzing and comparing them. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>If you're in a hurry, you probably =
ought to just do=20
it in BASIC. Otherwise, your project makes a nearly ideal problem for =
learning=20
list processing. Perhaps other forum members can point you toward the =
best=20
materials for building skills to do this.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>Please believe me, these comments are =
more helpful=20
than they may at first sound.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>Good Luck,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Jeff</FONT></DIV></BODY></HTML>
------=_NextPart_000_0009_01C426EF.189D55A0--