Added classifer analysis to bicorder ascii and web app

This commit is contained in:
Nathan Schneider
2025-12-21 21:38:39 -07:00
parent b541f85553
commit 1b508b911f
17 changed files with 2795 additions and 49 deletions

View File

@@ -383,3 +383,49 @@ Hypothesis: Changing the analyst and their standpoint could result in interestin
Method: Alongside the dataset of protocols, generate diverse personas, such as a) personas used to evaluate every protocols, and b) protocol-specific personas that reflect different relationships to the protocol. Modify the test suite to include personas as an additional dimension of the analysis.
## Integration with Bicorder Tool
The cluster analysis findings have been integrated into the bicorder system as an automated analysis gradient:
**Bureaucratic ↔ Relational** - A new analysis field that automatically calculates where a protocol falls on the spectrum between the two protocol families identified through clustering analysis.
### Implementation
- **Model**: Linear Discriminant Analysis (LDA) trained on 406 protocols
- **Input**: The 23 diagnostic dimension values (read from bicorder.json in gradient order)
- **Output**: A value from 1-9 where:
- **1-3**: Strongly bureaucratic/institutional (formal, top-down, externally enforced)
- **4-6**: Mixed or boundary characteristics
- **7-9**: Strongly relational/cultural (emergent, voluntary, community-based)
**Design philosophy**: The model includes a `bicorder_version` field matching the bicorder.json version it was trained on. The implementation checks versions match before calculating. When bicorder.json structure changes (gradients added/removed/reordered), increment the version and retrain the model.
This simple version-matching approach ensures compatibility without complex structure mapping.
### Files
- `bicorder_model.json` (5KB) - Trained LDA model with coefficients and scaler parameters
- `bicorder-classifier.js` - JavaScript implementation for real-time classification in web app
- `ascii_bicorder.py` (updated) - Python script now calculates automated analysis values
- `../bicorder.json` (updated) - Added bureaucratic ↔ relational gradient to analysis section
### Usage
The calculation happens automatically when generating bicorder output:
```bash
python3 ascii_bicorder.py bicorder.json bicorder.txt
```
For web integration, see `INTEGRATION_GUIDE.md` for details on using `bicorder-classifier.js` to provide real-time classification as users fill out diagnostics.
### Key Features
- **Automated**: Calculated from diagnostic values, no manual assessment needed
- **Data-driven**: Based on multivariate analysis of 406 protocols
- **Single metric**: Distance to boundary determines classification confidence
- **Form recommendation**: Can suggest short vs. long form based on boundary distance
- **Lightweight**: 5KB model, no dependencies, runs client-side
The integration provides a data-backed way to understand where a protocol sits on the fundamental institutional/relational spectrum identified in the clustering analysis.