You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mahout.apache.org by sr...@apache.org on 2009/06/19 13:09:37 UTC
svn commit: r786454 - in /lucene/mahout/trunk/core/src:
main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java
test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java
Author: srowen
Date: Fri Jun 19 11:09:36 2009
New Revision: 786454
URL: http://svn.apache.org/viewvc?rev=786454&view=rev
Log:
MAHOUT-135
Modified:
lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java
lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java
Modified: lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java?rev=786454&r1=786453&r2=786454&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java (original)
+++ lucene/mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModel.java Fri Jun 19 11:09:36 2009
@@ -92,6 +92,7 @@
private boolean loaded;
private DataModel delegate;
private final ReentrantLock reloadLock;
+ private final boolean transpose;
/**
* @param dataFile file containing preferences data. If file is compressed (and name ends in .gz
@@ -99,6 +100,10 @@
* @throws FileNotFoundException if dataFile does not exist
*/
public FileDataModel(File dataFile) throws FileNotFoundException {
+ this(dataFile, false);
+ }
+
+ public FileDataModel(File dataFile, boolean transpose) throws FileNotFoundException {
if (dataFile == null) {
throw new IllegalArgumentException("dataFile is null");
}
@@ -113,6 +118,7 @@
this.dataFile = dataFile.getAbsoluteFile();
this.lastModified = dataFile.lastModified();
this.reloadLock = new ReentrantLock();
+ this.transpose = transpose;
}
public File getDataFile() {
@@ -235,6 +241,11 @@
itemID = line.substring(delimiterOne + 1);
preferenceValueString = null;
}
+ if (transpose){
+ String tmp = userID;
+ userID = itemID;
+ itemID = tmp;
+ }
List<Preference> prefs = data.get(userID);
if (prefs == null) {
prefs = new ArrayList<Preference>(2);
Modified: lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java
URL: http://svn.apache.org/viewvc/lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java?rev=786454&r1=786453&r2=786454&view=diff
==============================================================================
--- lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java (original)
+++ lucene/mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/file/FileDataModelTest.java Fri Jun 19 11:09:36 2009
@@ -26,6 +26,7 @@
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.Item;
import org.apache.mahout.cf.taste.model.Preference;
+import org.apache.mahout.cf.taste.model.User;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.Recommender;
@@ -57,6 +58,7 @@
"D456,456,0.1"};
private DataModel model;
+ private File testFile;
@Override
public void setUp() throws Exception {
@@ -72,7 +74,7 @@
throw new IOException("Could not create temp directory");
}
}
- File testFile = File.createTempFile("test", ".txt", tmpLoc);
+ testFile = File.createTempFile("test", ".txt", tmpLoc);
testFile.deleteOnExit();
PrintWriter writer =
new PrintWriter(new OutputStreamWriter(new FileOutputStream(testFile), Charset.forName("UTF-8")));
@@ -98,6 +100,18 @@
model.refresh(null);
}
+
+ public void testTranspose() throws Exception {
+ FileDataModel tModel = new FileDataModel(testFile, true);
+ Item item = tModel.getItem("A123");
+ assertNotNull("item is null and it shouldn't be", item);
+ User user = tModel.getUser("456");
+ assertNotNull("user is null and it shouldn't be", user);
+ Preference [] pref = tModel.getPreferencesForItemAsArray("A123");
+ assertNotNull("pref is null and it shouldn't be", pref);
+ assertEquals("pref Size: " + pref.length + " is not: " + 3, 3, pref.length);
+ }
+
public void testItem() throws Exception {
assertEquals("456", model.getItem("456").getID());
}