prmr / creco Goto Github PK
View Code? Open in Web Editor NEWRecommendation System for Consumer Products
License: Apache License 2.0
Recommendation System for Consumer Products
License: Apache License 2.0
The feature_selection branch is now obsolete. I will delete next week if no one is using.
Implement the algorithm that takes as input as list of feature and a category and outputs a ranked list of products. Autodetect attributetype: more is better, less is better, discrete.
Need to implement an object that takes a list of products and an equivalence class and outputs a set of features(ratings and specs) as well as a score for these features based on the inputs.
This information is then passed to the product sorter.
For all files of data and data.stubs:
Branch: Issue0022
This issue will be used to write tests to ensure that the data API is performing as we expect it to and more importantly to make sure that database follows our assumptions.
Please feel free to suggest any tests you would like to see. Here is a list of tests I will be starting with:
-Jaccard Index
-Product lists (add,remove, count)
-Attribute lists (add,remove, count)
-AttributeStat values (min, max, Enum,count)
-Category (getProducts, getSpecs, getRatings)
-CategoryList
-TypedVal
Auto-complete for the search page with pre-populated values for the text field. Checks if the entered string is a substring of any of the category names present.
We are having difficulty finding the human-readable product names. For example, in the laptop equivalence class, there is the product name "2344BKU (Black)". The product can be found here:
This page contains "Product Name ThinkPad T430 2344BKU Notebook", which is the string we want, but we can't find it through the Product API. We should investigate what's the correct field in the JSON file and make sure it's loaded in the Product object.
A revamp of the autocomplete feature including:
Test for following :
Return of specified number of products.
Different cases of specified filters
Given that the purpose of Creco is to simplify honing on products, we should aggregate specs and ratings as a uniform list of attributes.
Test:
Sorting
Score Attribution
Handling empty feature list
Handling of heterogeneous features
Extracted feature type
Extracted default value
The results show "Humidifier for your baby" with 0 products.
We shouldn't return empty categories.
Create a list of scenarios that describe one walk-through of the entire state space of Creco, from product search to feature-sensitive ranking. These can be documented in /doc/scenarios/
I'm getting 32 errors when running the tests in the master branch.
Also 404 (Not Found) Error from JQuery in the browser console.
update product ranking based on user's selected features
Ranking products inside the recommended list to be displayed.
Inputs :
Output :
Recommended list of products with ranks.
Should have unit tests for ProductSearch and CategorySearch, which cover basic search functionality, such as querying by exact string match, by string with typo, etc.
Unhook the product search and rank the products alphabetically. Keep the product search code around.
Cleaning up code for milestone 1
Adding tests for each component
Code engineering
"N/A" or "NA" is sometimes used interchangeably in the code to specifiy that no value was available for this attribute. This can lead to errors.
TypedValue should also be cleaned of dead code.
Add equals and hashcode.
The html resources have broken references and/or refer to unused URLs. Some of the div tags still have id "demo", etc.
Download CSS and reference from project.
Make an API for loading products into the following classes:
The classes in the product object graph should be immutable.
Should task artifacts be put in the gitignore (.gradle/1.8/taskArtifacts/*)? They seem to be generated with every build and eclipse asks you to commit every time. If I understand correctly these are the files the project provides to the outside world.
Setup some tooling to automatically generate file headers with license and copyright information.
CRData, CategorySearch and ProductSearch classes should all become singleton beans.
Each of the three classes will implement its own interface, so that we can also create mock objects to test.
Can these classes be merged and the extra functionality of AttributeValue moved into TypedValue? In any case it would be preferable to use primitive types as early as possible, i.e., as soon as the typed value is internally converted.
Create and test a class to produce a local path to the CR data dump that is based on a local properties file.
I suggest we add a score (or ranking) field to the Products and Attributes, make them comparable and them override the compareTo method to sort them according this score or ranking.
This way any controller manipulating the items could simply update the scores and then easily sort the items accordingly.
All the logging in Creco should be done through slf4j.
Currently the data API has categories, franchises, equivalences classes, and subequivalences classes. I wonder if this is all needed. The distinction between category and equivalence class is difficult to manage. It seems only equivalence classes are used by the rest of the system. I would like to propose:
Any comments on this? If this is a feasible change I'll retag this issue as a maintenance issue for release 0.3
The second UI view of the system, where we will show a set of features (ratings & specs) for the user to tweak.
Achieve at least line coverage of all the category and product processing in CR data. The tests can be added into TestCRData.
Search for "Sparking Ros" and you should get a category intended to be "Sparkingly Rosé" that's got a messed up acute accent.
Create a file listing all the features of Creco.
From what I understand the code in creco.server is highly experimental and I don't see how it's used given that the data is loaded by CRData. I recommend that we remove this from the project altogether to clean the code base.
Refreshing the CRData can be done by a proper service, but this should be done on a separate branch after milestone 0.2
At the start of application, the system automatically checks from the local data path if, the local json files is stale (not pulled from consumer API in the last 24 hours) and pulls the new set of files.
Product/Category objects are built after the data is persisted.
AttributeStat
Define a class structure responsible for storing the user session information. Based on our discussion today, this should probably contain the following (these are just suggestions):
Investigate what facilities Spring provides to store data in association to a user-session, and, design these session objects in a way that fits Spring's session paradigm.
Implement a service that takes in a category id and a max number of n features and returns at most n features determined to distinguish the products in the category.
This is an open, and important question. If you feel you have nothing to do atm, here's something to do!
Diagram the overall architecture and flow of activities. I might try to bust out some UML on this.
This should be a living document that represents the actual relationships that we are building. If something seems out of line with what you're building, it's a sign that a discussion needs to happen. Hopefully this will help keep us well-synced.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.