Presentation is loading. Please wait.

Presentation is loading. Please wait.

Yenta A Simple Recommendation Language Kenny Rivera - Tester Becky Tang – System Architect Shylah Weber – Systems Integrator Anthony Yim – Project Manager.

Similar presentations


Presentation on theme: "Yenta A Simple Recommendation Language Kenny Rivera - Tester Becky Tang – System Architect Shylah Weber – Systems Integrator Anthony Yim – Project Manager."— Presentation transcript:

1 Yenta A Simple Recommendation Language Kenny Rivera - Tester Becky Tang – System Architect Shylah Weber – Systems Integrator Anthony Yim – Project Manager

2 Definition Yenta 1) Yiddish word which describes an old woman who is a matchmaker - a Yentle. (Ref. Fiddler on the Roof) 2) In modern use the meaning has become that of an annoying old hag. (http://www.urbandictionary.com)

3 Motivation Recommendation engines are becoming increasingly popular We wanted to make recommendations: Fast Simple to program Flexible in content

4 Overview Imperative language Yenta allows recommendations based on either of the following input: A “seed” or example piece of data A set of criteria or “tags” TitleArtistAlbumYearGenreLength WrappedGeorge StraitIt Just Comes Natural2006Country4:10 You Got LuckyTom PettyGreatest Hits2000Rock3:36 MMMBopHansonMiddle of Nowhere1997Pop4:29

5 Syntactic Constructs Sample Yenta program: Built-in subroutines (3 main steps) – import(string fileName) – applyBasicScore(string tag, string tagValue, double weight,... ) – printTop(int n) Java-like declarations of primitive types – file type file myMusicFile = import("music.txt"); myMusicFile.applyScore("Year", ”2006", "0.8", "Genre", "Pop", "0.2"); myMusicFile.printTop(3);

6 public void importFile(String filename)throws IOException{ BufferedReader in = new BufferedReader(new FileReader(filename)); BufferedReader in2 = new BufferedReader(new FileReader(filename)); String line = in.readLine(); String lineCopy = line; rows = 0; while (line != null){ rows++; line = in.readLine(); } StringTokenizer st = new StringTokenizer(lineCopy, ”\t"); cols = 0; while(st.hasMoreTokens()){ st.nextToken(); cols++; } tags = new Tag[cols]; line = in2.readLine(); StringTokenizer st3 = new StringTokenizer(line, ”\t"); for(int k = 0; (k < cols) && st3.hasMoreTokens(); k++){ tags[k] = new Tag(st3.nextToken()); tags[k].col = k; } rows--; file = new String[rows][cols]; line = in2.readLine(); int i = 0; while (line != null){ StringTokenizer st2 = new StringTokenizer(line, ”\t"); int j = 0; while(st2.hasMoreTokens()){ file[i][j] = st2.nextToken(); j++; } i++; line = in2.readLine(); } scores = new double[rows]; } Equivalent Java Code for Import() Yikes!

7 Other Syntactic Constructs Flow control – for loops – if statements Other types – int – double – string (seen) – scoreFunc

8 Translator Architecture Java compiler Java file representing the Yenta program Main.java Yenta Output Java program Yenta Program Main Java compiler Java interpreter

9 Translator Architecture Java compiler YentaProg.java Main.java Yenta Output YentaProg YentaProg.txt Main Java compiler Java interpreter javac Main.java java Main < YentaProg.txt javac YentaProg.java java YentaProg

10 Interpreter Implementation Wrote Java methods that are always in the output file Our grammar simply calls these methods with the programmer’s parameters

11 Development Environment ++ +

12 Tools ANTLR v3 Parser + Lexer Takes a LL(*) grammar as input. “Spits out” tokens as output. Example ANTLR grammar

13 Tools ANTLRWorks parse tree

14 Tools StringTemplate example StringTemplate Equiv. Java code that was “printed” out. Outputs…

15 The Proposed Test Suite Unit testing – Grammar was constructed based on several programs designed to exploit key features – Advantages: Provides strict guidelines that code must satisfy. Unit testing finds problems early in development Fuzz testing – Provides random data to our example programs to test for errors and inconsistencies

16 Advantages Yenta is a simple, easy-to-use language that is: Easy to learn Fast to write Concise, easy-to-read code Can be used by beginners but also augmented by more advanced features

17 Advantages Yenta’s primary advantage is that it can be used to recommend anything a programmer wishes (Like Columbia classes!)


Download ppt "Yenta A Simple Recommendation Language Kenny Rivera - Tester Becky Tang – System Architect Shylah Weber – Systems Integrator Anthony Yim – Project Manager."

Similar presentations


Ads by Google