Configuration-Driven Text Classification
A CoreRed Experimental Tool
About • Features • Installation • Usage • Architecture • Documentation • Contributing
TensorSuggestLite transforms structured configuration files (JSON, YAML, TOML) into trained TensorFlow/Keras text classification models with automatic TFLite export for embedded deployment.
Designed for rapid ML prototyping, TensorSuggestLite eliminates boilerplate code by treating configuration as training data. Define your categories and examples in a simple file format, and let the application handle tokenization, training, and model export.
"Configuration as training data."
TensorSuggestLite embodies pragmatic ML workflows: declarative inputs, transparent processing, portable outputs. No framework lock-in, no hidden complexity—just direct transformation from structured data to deployable models.
This is a CoreRed project, part of an experimental toolkit for developers who value simplicity and reproducibility.
- Multi-Format Input: Parse JSON, YAML, and TOML configuration files
- Automated Training: TensorFlow/Keras model generation with progress tracking
- Complete Artifact Export:
tokenizer.json- Vocabulary and preprocessing configtext_classifier.keras- Full Keras model for inferencelabel_encoder.json- Category-to-index mappingstext_classifier.tflite- Quantized model for mobile/edge
- Dual Interface:
- PyQt6 desktop GUI with real-time feedback
- Python API for scripting and automation
- Modular Architecture: Format-specific interpreters with isolated logic
- Theme Support: Dark and light UI themes
- Cross-Platform: Runs on Linux, macOS, and Windows
git clone https://github.com/Sxnnyside-Project/TensorSuggestLite.git
cd TensorSuggestLite
make setup- Python 3.8 or later
- pip (Python package manager)
- 2 GB RAM minimum (4 GB recommended)
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements-pinned.txt# Test core imports
python -c "from json_interpreter import trainer; print('✓ Installation verified')"
# Launch GUI
make runmake runWorkflow:
- Click Import JSON/YAML/TOML → select configuration file
- Click Train Model → wait for training (1-5 minutes)
- Click Generate TFLite → convert to mobile format
- Click Export TFLite → save for deployment
from json_interpreter import trainer
result = trainer.train_from_json('config.json')
print(f"Model: {result['model_path']}")from json_interpreter import trainer
def on_progress(percent):
print(f"Training: {percent}%")
def on_log(message):
print(f"[LOG] {message}")
result = trainer.train_from_json(
'config.json',
progress_cb=on_progress,
log_cb=on_log,
epochs=12
)from json_interpreter import trainer
tflite_path = trainer.convert_to_tflite(
model_dir='generated/json',
progress_cb=on_progress,
log_cb=on_log
)
print(f"TFLite: {tflite_path}")All formats follow this structure:
{
"CATEGORY_NAME": {
"respuestas": [
{"respuesta": "training text example 1"},
{"respuesta": "training text example 2"}
],
"sinonimos": ["synonym1", "synonym2"]
}
}Example (test/question_data.json):
{
"POSITIVE": {
"respuestas": [
{"respuesta": "This is excellent!"},
{"respuesta": "I love this product"}
],
"sinonimos": ["good", "great", "amazing"]
},
"NEGATIVE": {
"respuestas": [
{"respuesta": "This is terrible"},
{"respuesta": "Very disappointing"}
],
"sinonimos": ["bad", "poor", "awful"]
}
}TensorSuggestLite/
├── tensorsuggestlite.py # GUI entry point
├── json_interpreter/ # JSON format handler
│ └── trainer.py # Training & conversion
├── yaml_interpreter/ # YAML format handler
│ └── trainer.py
├── toml_interpreter/ # TOML format handler
│ └── trainer.py
├── styles/ # UI themes
│ ├── dark.qss
│ └── light.qss
├── examples/ # Functional examples (English schema)
│ ├── example.json # Recommended format
│ ├── example.yaml
│ └── example.toml
├── test/ # Test data (legacy, Spanish)
├── generated/ # Runtime output (git-ignored)
│ ├── json/
│ ├── yaml/
│ └── toml/
└── docs/ # Documentation
| Component | Technology |
|---|---|
| ML Framework | TensorFlow/Keras |
| GUI | PyQt6 |
| Data Processing | NumPy, scikit-learn |
| Config Parsing | PyYAML, toml |
- Parse configuration → extract text samples and labels
- Tokenize → build vocabulary using Keras Tokenizer
- Encode → map labels to numeric IDs
- Train → simple neural network (Embedding → Dense → Softmax)
- Export → save tokenizer, model, label encoder
- Convert → TFLite with quantization optimization
- User Guide - Installation, usage, troubleshooting
- Developer Guide - Architecture, extending, API reference
- Contributing - How to contribute
- Security - Vulnerability reporting
- Repository Status - Project health and limitations
make help # Show all commands
make setup # Install dependencies
make run # Launch GUI
make clean # Remove generated files
make lint # Run code quality checks
make test # Run tests (when implemented)Version: 2.0 (Experimental)
TensorSuggestLite is functional and stable for prototyping. API is subject to change based on community feedback.
- No input validation (well-formed files required)
- Single-threaded training (may freeze GUI briefly)
- No hyperparameter tuning interface
- No real-time evaluation metrics
- Basic model architecture (not SOTA)
See REPOSITORY_STATUS.md for complete details.
- CLI mode for headless operation
- Input validation and error recovery
- Model evaluation metrics display
- Hyperparameter configuration UI
- Batch processing support
Contributions are welcome! See CONTRIBUTING.md for:
- Development setup
- Code standards
- Pull request process
- Review criteria
Priority Areas:
- Input validation
- Test coverage (pytest)
- CLI mode implementation
- Documentation improvements
Before contributing, read our Code of Conduct.
For security vulnerabilities, see SECURITY.md.
Do not report security issues via GitHub Issues.
Contact: security.sxnnyside@sxnnysideproject.com
This project is licensed under the MIT License - see LICENSE for details.
Copyright (c) 2025-2026 CoreRed Project
- Documentation: See
docs/directory - Issues: GitHub Issues
- Email: support.sxnnyside@sxnnysideproject.com
- Maintainer: houjou.sxnnyside@sxnnysideproject.com
Built with discipline by CoreRed Project