./outfits \
data/productMeta.txt.gz \
data/duplicate_list.txt.gz \
data/image_features_Baby.b \
models/Baby-also_viewed-10-0.000000.txt \
data/urlPath_Baby.txt
1. 5 input params:
categoryPath, duplicatePath, imFeaturePath, modelPath, urlPath
2. load data
corpus corp("null", // review path
argv + 6, // graph paths
categoryPath, // path to category data
duplicatePath, // path to duplicate ASIN listing
imFeaturePath, // path to image features
G, // number of graphs
productsPerTopic,
0); // max number of reviews to read (0 for all)
3. load models
int NW;
double* W = loadModel(modelPath, &NW);
3.1 if (startsWith(lb, " \"NW\""))
int K = NW / 4096;
lrMahalanobis ec(&corp, 0, 0, 0, K);
ec.init();
4. load urls
map<string, string>* urls = loadUrls(urlPath);
5. queriesBaby
else if (string(imFeaturePath).find("Baby") != string::npos)
{
printf("Running queries for Baby's products\n");
int NQ = 1000;
queriesBaby(&ec, W, urls, NQ);
}
5.1 queriesFromCategories(ec, W, categoriesS, urls, NQ);
5.1.1 double** Uc = projectFeatures(ec, W);
5.1.2 vector<int> outfit = queriesProductCategory(ec, Uc, item, categories, &categoryVecs);
5.1.2.1 res.push_back(query(ec, Uc, item, *it, categoryVecs));
5.1.2.1.1 double d = dist(Uc[qItem], Uc[item], ec->K); // Find the distance between the query