From a0c19286783e040d0ee87a70b8257f99474b8714 Mon Sep 17 00:00:00 2001 From: Size43 Date: Thu, 21 May 2015 15:28:58 +0200 Subject: Reduced LOC + FeedSorter sorts by category, author, title and date/time + reduced learning rate from 0.3 to 0.2 --- .../java/org/rssin/neurons/FeedSorterTest.java | 96 ++++++++++++++++++---- .../java/org/rssin/neurons/NeuralNetworkTest.java | 10 +-- 2 files changed, 84 insertions(+), 22 deletions(-) (limited to 'app/src/androidTest/java/org') diff --git a/app/src/androidTest/java/org/rssin/neurons/FeedSorterTest.java b/app/src/androidTest/java/org/rssin/neurons/FeedSorterTest.java index a2d59ee..a6e3581 100755 --- a/app/src/androidTest/java/org/rssin/neurons/FeedSorterTest.java +++ b/app/src/androidTest/java/org/rssin/neurons/FeedSorterTest.java @@ -20,7 +20,7 @@ public class FeedSorterTest extends TestCase { Assert.assertTrue(true); } - public void testSortItems() throws Exception { + public void testSortItemsByCategory() throws Exception { List gameList = new ArrayList<>(); gameList.add("Games"); List sportList = new ArrayList<>(); @@ -39,28 +39,90 @@ public class FeedSorterTest extends TestCase { FeedSorter s = new FeedSorter(); //I like games & I hate sports - for(int i = 0; i < 100; i++) - { - for(FeedItem item : likedItems) - { - s.feedback(item, Feedback.Like); - } - - for(FeedItem item : dislikedItems) - { - s.feedback(item, Feedback.Dislike); - } - } + trainNetwork(likedItems, dislikedItems, s); FeedItem sportsItem = new FeedItem("", new Date(2014, 1, 1, 1, 2, 1), "SPORT ARTICLE", "DESCRIPTION", "", "Randy", sportList, "", "", ""); FeedItem gamesItem = new FeedItem("", new Date(2014, 1, 1, 1, 1, 1), "GAME ARTICLE", "DESCRIPTION", "", "Randy", gameList, "", "", ""); + testSortingOrder(s, sportsItem, gamesItem); + } + + public void testSortItemsByTitle() throws Exception { + List emptyList = new ArrayList<>(); + + FeedItem[] likedItems = new FeedItem[] + { + new FeedItem("", new Date(), "Video games are cool", "DESCRIPTION", "", "Randy", emptyList, "", "", ""), + new FeedItem("", new Date(), "The new video game", "DESCRIPTION", "", "Camil", emptyList, "", "", ""), + new FeedItem("", new Date(), "Best games of 2015", "DESCRIPTION", "", "Jos", emptyList, "", "", ""), + }; + + FeedItem[] dislikedItems = new FeedItem[] + { + new FeedItem("", new Date(), "Video of a cat", "DESCRIPTION", "", "Randy", emptyList, "", "", ""), + new FeedItem("", new Date(), "It's raining", "DESCRIPTION", "", "Joep", emptyList, "", "", ""), + new FeedItem("", new Date(), "Shocking video of a cat in the rain.", "DESCRIPTION", "", "Joep", emptyList, "", "", ""), + }; + + FeedSorter s = new FeedSorter(); + + //I like games & I hate sports + trainNetwork(likedItems, dislikedItems, s); + + FeedItem dislikedItem = new FeedItem("", new Date(2014, 1, 1, 1, 2, 1), "Another cool video of a cat in the sun.", "DESCRIPTION", "", "Randy", emptyList, "", "", ""); + FeedItem likedItem = new FeedItem("", new Date(2014, 1, 1, 1, 1, 1), "Coolest retro games", "DESCRIPTION", "", "Jos", emptyList, "", "", ""); + + testSortingOrder(s, dislikedItem, likedItem); + } + + public void testSortItemsByAuthor() throws Exception { + List emptyList = new ArrayList<>(); + + FeedItem[] likedItems = new FeedItem[] + { + new FeedItem("", new Date(), "Best games of 2015", "DESCRIPTION", "", "Jos", emptyList, "", "", ""), + new FeedItem("", new Date(), "It's raining cats and dogs!", "DESCRIPTION", "", "Jos", emptyList, "", "", ""), + }; + + FeedItem[] dislikedItems = new FeedItem[] + { + new FeedItem("", new Date(), "Video of a cat", "DESCRIPTION", "", "Randy", emptyList, "", "", ""), + new FeedItem("", new Date(), "It's raining", "DESCRIPTION", "", "Joep", emptyList, "", "", ""), + new FeedItem("", new Date(), "Shocking video of a cat in the rain.", "DESCRIPTION", "", "Joep", emptyList, "", "", ""), + new FeedItem("", new Date(), "Video games are cool", "DESCRIPTION", "", "Randy", emptyList, "", "", ""), + new FeedItem("", new Date(), "The new video game", "DESCRIPTION", "", "Camil", emptyList, "", "", ""), + }; + + FeedSorter s = new FeedSorter(); + + //I like games & I hate sports + trainNetwork(likedItems, dislikedItems, s); + + FeedItem dislikedItem = new FeedItem("", new Date(2014, 1, 1, 1, 2, 1), "Another cool video of a cat in the sun.", "DESCRIPTION", "", "Randy", emptyList, "", "", ""); + FeedItem likedItem = new FeedItem("", new Date(2014, 1, 1, 1, 1, 1), "Coolest retro games", "DESCRIPTION", "", "Jos", emptyList, "", "", ""); + + testSortingOrder(s, dislikedItem, likedItem); + } + + private void testSortingOrder(FeedSorter s, FeedItem dislikedItem, FeedItem likedItem) { List testItems = new LinkedList<>(); - testItems.add(sportsItem); - testItems.add(gamesItem); + testItems.add(dislikedItem); + testItems.add(likedItem); List sortedItems = s.sortItems(testItems); - Assert.assertEquals(sortedItems.get(0), gamesItem); - Assert.assertEquals(sortedItems.get(1), sportsItem); + Assert.assertEquals(sortedItems.get(0), likedItem); + Assert.assertEquals(sortedItems.get(1), dislikedItem); + } + + private void trainNetwork(FeedItem[] likedItems, FeedItem[] dislikedItems, FeedSorter s) { + for(int i = 0; i < 200; i++) { + for (FeedItem item : likedItems) { + s.feedback(item, Feedback.Like); + } + + for (FeedItem item : dislikedItems) { + s.feedback(item, Feedback.Dislike); + } + } } } \ No newline at end of file diff --git a/app/src/androidTest/java/org/rssin/neurons/NeuralNetworkTest.java b/app/src/androidTest/java/org/rssin/neurons/NeuralNetworkTest.java index b0f6eea..57776f3 100755 --- a/app/src/androidTest/java/org/rssin/neurons/NeuralNetworkTest.java +++ b/app/src/androidTest/java/org/rssin/neurons/NeuralNetworkTest.java @@ -7,12 +7,12 @@ public class NeuralNetworkTest extends TestCase { public void testAnd() throws Exception { MultiNeuralNetwork nn = new MultiNeuralNetwork(10, 2); - nn.addInput(); - nn.addInput(); - nn.addInput(); + nn.addInput();//bias + nn.addInput();//inputA + nn.addInput();//inputB //Simple AND - for (int i = 0; i < 100; i++) + for (int i = 0; i < 300; i++) { PredictionInterface p1 = nn.computeOutput(new double[] { 1, @@ -75,7 +75,7 @@ public class NeuralNetworkTest extends TestCase { nn.addInput(); //Simple AND - for (int i = 0; i < 100; i++) + for (int i = 0; i < 300; i++) { PredictionInterface p1 = nn.computeOutput(new double[] { 1, -- cgit v1.2.3 From 31e5e27e01fe868fa73960d62fcae74ec4f6058d Mon Sep 17 00:00:00 2001 From: Halzyn Date: Thu, 21 May 2015 15:09:49 +0200 Subject: Needs Testing doe het wel een keer als mn internet werkt want FUCK EDUROAM --- .../java/org/rssin/rss/FeedLoaderTest.java | 23 +++++++++ app/src/main/java/org/rssin/rss/FeedLoader.java | 56 +++++++++++----------- 2 files changed, 50 insertions(+), 29 deletions(-) create mode 100644 app/src/androidTest/java/org/rssin/rss/FeedLoaderTest.java (limited to 'app/src/androidTest/java/org') diff --git a/app/src/androidTest/java/org/rssin/rss/FeedLoaderTest.java b/app/src/androidTest/java/org/rssin/rss/FeedLoaderTest.java new file mode 100644 index 0000000..f4bbfdd --- /dev/null +++ b/app/src/androidTest/java/org/rssin/rss/FeedLoaderTest.java @@ -0,0 +1,23 @@ +package org.rssin.rss; + +import junit.framework.Assert; +import junit.framework.TestCase; + +import java.net.URL; + +/** + * Created by Randy on 21-5-2015. + */ +public class FeedLoaderTest extends TestCase { + + + public void testFetchXML() throws Exception { + String urlstring = "http://www.pcworld.com/index.rss"; + URL url = new URL(urlstring); + FeedLoader loader = new FeedLoader(url); + loader.fetchXML(); + FeedItem f = loader.getFeed().getPosts().get(0); + Assert.assertEquals(f.getTitle(), "Amazon adds local groceries and meals to one-hour Prime Now delivery service"); + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/rssin/rss/FeedLoader.java b/app/src/main/java/org/rssin/rss/FeedLoader.java index 726cbac..eabfebd 100644 --- a/app/src/main/java/org/rssin/rss/FeedLoader.java +++ b/app/src/main/java/org/rssin/rss/FeedLoader.java @@ -25,7 +25,7 @@ public class FeedLoader { private String text; public FeedLoader(URL url){ - this.urlString = url; + this.setUrlString(url); } /** @@ -48,15 +48,15 @@ public class FeedLoader { case "item": post = new FeedItem(null, null, null, null, null, null, new LinkedList(), null, null, null); - chan = false; //this starts collection information for the + chan = false; //this starts collecting information for the //separate items. break; case "image": imageTagParse(myParser); case "channel": feed = new Feed(new LinkedList(), null, null, null, null, - null, null, null, null, null, null, null, null, null, null, - null, null, null, null); + null, null, null, null, null, null, null, null, null, null, + null, null, null, null); chan = true; break; } @@ -214,31 +214,25 @@ public class FeedLoader { /** * Retrieves the XML and parses it. */ - public void fetchXML(){ - Thread thread = new Thread(new Runnable(){ - @Override - public void run() { - try { - URL url = urlString; - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setReadTimeout(10000 /* milliseconds */); - conn.setConnectTimeout(15000 /* milliseconds */); - conn.setRequestMethod("GET"); - conn.setDoInput(true); - // Starts the query - conn.connect(); - InputStream stream = conn.getInputStream(); - xmlFactoryObject = XmlPullParserFactory.newInstance(); - XmlPullParser myparser = xmlFactoryObject.newPullParser(); - myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); - myparser.setInput(stream, null); - parseXMLAndStoreIt(myparser); - stream.close(); - } catch (Exception ignored) { - } - } - }); - thread.start(); + public void fetchXML() { + try { + URL url = urlString; + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setReadTimeout(10000 /* milliseconds */); + conn.setConnectTimeout(15000 /* milliseconds */); + conn.setRequestMethod("GET"); + conn.setDoInput(true); + // Starts the query + conn.connect(); + InputStream stream = conn.getInputStream(); + xmlFactoryObject = XmlPullParserFactory.newInstance(); + XmlPullParser myparser = xmlFactoryObject.newPullParser(); + myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); + myparser.setInput(stream, null); + parseXMLAndStoreIt(myparser); + stream.close(); + } catch (Exception ignored) { + } } public void setFeed(Feed feed) { @@ -248,4 +242,8 @@ public class FeedLoader { public Feed getFeed() { return feed; } + + public void setUrlString(URL urlString) { + this.urlString = urlString; + } } -- cgit v1.2.3