Responsible: Mario von Bassen Start Date: 2022-09-01 Last Change: TBD Status: In Progress
As a first step, the application should independently identify or classify products (possibly also reviews) of a webshop as products and differentiate them from other content elements with the help of an AI model. A web application provides the user interface for uploading content. Next, the application assigns Schema.org meta-tags (Product, Offer, Review) and expands them with meta descriptions. Finally, it constructs a knowledge graph of the webshop’s assortment for analytics and SEO benefits.
Develop an app where users upload webshop content. The system filters input, extracts data, uses ML to:
- Identify products vs. non-products
- Classify product category, features, and values
- Output Schema.org meta-tags and build a knowledge graph of the assortment
Search engines need structured data (Schema.org) to understand webpages. This tool simplifies adding structured data for e-commerce hosts to build semantic sites.
- Search engines can’t parse page semantics
- Structured data insertion is hard for non-technical hosts
- Complex entity relationships are hidden
- Large assortments become unmanageable
- Out-of-scope products go unnoticed; recommendations fail
- Verifying entity accuracy and completeness is difficult
- Use Schema.org structured data for ML semantic understanding
- User-friendly upload & tagging interface
- Automated knowledge graph visualization
- Graphical product display options
- Recommender systems & anomaly detection leverage structured data
- Structured data improves SEO rich snippets
- Entity-level data enables quick fact verification
Interfaces:
- Frontend ↔ Backend (REST)
- Backend ↔ Database (SQLite/MySQL)
- Backend ↔ ML Model
- Model ↔ Database
Frameworks:
- Python (Flask or Django), R for ML
- Frontend: HTML, CSS, JS (Bootstrap/jQuery/React optional)
- ML: NumPy, pandas, scikit-learn, TensorFlow, Keras
- Visualization: Matplotlib, graph libs
- Frontend: VS Code
- Backend: PyCharm
- Model: Anaconda, Jupyter, PyCharm, Google Colab
Basic Features:
- User registration, login/logout
- Account management (edit/delete)
- Upload code, images, HTML/text
- Save user data and settings
- Download/copy model output
Extended Features:
- Social media sharing
- Reviews & voting
- Google Mail integration
- Activity tracking
- Notifications & updates
- Account status dashboard
- Loading Time: ≥ 90 on Google Lighthouse
- Usability: Follow Nielsen’s 10 heuristics; usability testing
- Responsive Design: Desktop-first; support mobile/tablet
- GDPR/Data Protection Act compliance
- Cookie consent (Google Analytics)
- Cross-browser: Chrome, Safari, Edge, Firefox, Opera
- Duration: 2022-09-01 to 2023-01-31
- Effort: ≥ 40 hours/week
- Access to Google Colab & Jupyter Notebook
- Hardware: laptop for mobile work; tower PC for model training
See risk table in attachments.
- Define QA process; use test plans, review cycles
Combined public datasets for product/review classification. After cleaning, obtained:
- 13,172,462 products (as of 2022-09-28) with title, category, brand, description
- Datasets for binary (title vs. description) and multiclass classification
Specifies deliverables, pricing, timelines, acceptance criteria, and stakeholder responsibilities. Project completes when all functional/non-functional requirements pass QA and stakeholder sign-off.
- Detailed specs, diagrams, risk tables, dataset summaries
Functional Requirements:
- Account CRUD
- Login/registration UI
- Upload & result pages
- Settings page
Design: Figures 3–7 (login, upload, result, account settings)
Written in Flask (lightweight vs. Django). Uses SQLite (migrate to MySQL later). Supports user and upload data management.
Entity-Relationship Diagrams (first draft)
- Upload: URL scrape / manual text/HTML / image upload
- Storage: raw data for display & model training
- Processing: text cleaning, OCR, extraction, classification
- Output: display on site or save for model
Sample Python code for OCR and title detection
- Select columns: title, category, brand, description
- Remove special chars, numeric-only rows, HTML tags
- Expand contractions, deduplicate
- Filter by length (title < 30 words, description < 300 words)
- Lowercase, remove stopwords, lemmatize
- Binary classification: Title (1) vs. Description (0)
- Under-/oversampling due to class imbalance
- TF‑IDF vs. CountVectorizer; unigram/bigram tests
- Multiple training runs (1–11) varying vectorizer, max_features, n-grams, solver
- Report precision, recall, F1-score, accuracy
| Run | Solver | Vectorizer | Features | n‑gram | Score |
|---|---|---|---|---|---|
| 1 | liblinear | CV | 1500 | uni | 92% |
| … | … | … | … | … | … |
| 11 | liblinear | TF‑IDF (min_df=5) | 3500 | uni | 95% |
- Undersampled logistic regression runs (mf_df 1–20); scores ~94.5%
- Oversampling doubles training time with similar scores
- Four classes: Title, Brand, Category, Description
- Initial imbalance; apply sampling techniques
- Logistic Regression & other algorithms; scores ~80–94%
- KNN: brute-force O(knd), KD-tree O(n d log n)
- Category classification uses extracted Title, Brand, Description as inputs
- Semantic Web for E‑Commerce, arXiv:2109.01084
- Title Classification Techniques, NTU CSIE