Views
No views yet
| Problem | Why It Happens | NeuroName Solution |
|---|---|---|
| Too generic | LLMs predict probable tokens from training distribution | Character-level VAE generates outside known distributions |
| Obvious combinations | Token-level = existing word chunks | Char-level latent space enables smooth morphological blending |
| No sound awareness | No phonotactic model | Dedicated Phonotactic Discriminator scores pronounceability |
| Can't be truly novel | Constrained to recombine training tokens | VAE latent interpolation creates genuinely new sequences |
| No fine control | Prompt engineering is imprecise | Energy-based composable attribute control in latent space |
| RLHF kills creativity | Safety alignment → conservative outputs | No RLHF; creativity is the objective function |
Input: semantic_hints + control_params (length, style, language_feel, energy)
│
▼
┌─────────────────────────────┐
│ Semantic Encoder │ ← Transformer encodes meaning hints
│ (attention-pooled) │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Conditional Prior │ ← P(z|semantics, controls) - Gaussian
│ Network (μ, σ learned) │
└──────────────┬──────────────┘
│
▼ z ~ N(μ, σ²)
┌─────────────────────────────┐
│ Latent Space + EBM │ ← Energy-based attribute composition
│ (ODE-guided sampling) │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Character Decoder │ ← Transformer generates char-by-char
│ (cross-attends to z) │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ Phonotactic Validator │ ← CNN+Transformer scores sound quality
└──────────────┬──────────────┘
│
▼
Generated Name: "Velocix" ✓1pip install torch numpy pyyaml tqdm
2git clone https://huggingface.co/asdf98/neuroname
3cd neuroname
4pip install -e .1from neuroname import NeuroNameGenerator
2
3# Initialize generator
4generator = NeuroNameGenerator()
5
6# Generate brand names with semantic hints
7names = generator.generate(
8 semantic_hints=["speed", "technology", "future"],
9 style="modern", # modern/classic/playful/techy/organic/elegant/bold/minimal
10 language_feel="latin", # english/latin/greek/japanese/nordic/spanish/french/abstract
11 energy="energetic", # calm/neutral/energetic
12 length_range=(5, 8),
13 num_names=10,
14 temperature=0.8
15)
16print(names)
17# ['Velocix', 'Tervon', 'Nexura', 'Fluxen', 'Zyphos', ...]
18
19# Generate YouTube channel names
20names = generator.generate(
21 semantic_hints=["gaming", "adventure", "epic"],
22 style="playful",
23 language_feel="english",
24 energy="energetic",
25 length_range=(6, 12),
26 num_names=10
27)
28
29# Generate social media handles
30names = generator.generate(
31 semantic_hints=["art", "minimal", "aesthetic"],
32 style="elegant",
33 language_feel="french",
34 energy="calm",
35 length_range=(4, 8),
36 num_names=10
37)1# Train from scratch
2python train.py --config configs/default.yaml
3
4# Train with custom data
5python train.py --data_path your_names.txt --epochs 100neuroname/
├── README.md # This file
├── pyproject.toml # Package configuration
├── neuroname/
│ ├── __init__.py # Package exports
│ ├── model.py # Core architecture (VAE + all components)
│ ├── generator.py # High-level generation interface
│ ├── phonotactics.py # Phonotactic scoring & sound symbolism
│ ├── morphology.py # Morphological composition operations
│ ├── latent_ops.py # Energy-based latent space control
│ ├── data.py # Dataset & data loading utilities
│ └── config.py # Configuration management
├── train.py # Training script
├── configs/
│ └── default.yaml # Default training configuration
└── notebooks/
└── demo.ipynb # Interactive demonstration| Phoneme Type | Associations | Example Brands |
|---|---|---|
| Voiced plosives (b, g, d) | Strong, bold, grounded | Bose, Google, Dell |
| Voiceless plosives (p, t, k) | Sharp, precise, clean | Paypal, Tesla, Kodak |
| Fricatives (f, v, s, z) | Fast, flowing, futuristic | Visa, Zara, Spotify |
| Nasals (m, n) | Warm, nurturing, smooth | aMazon, Nintendo |
| Liquids (l, r) | Fluid, dynamic, premium | Lexus, Rolex |
| High vowels (i, ee) | Small, quick, technical | Pixel, Wii |
| Low vowels (a, o) | Big, open, powerful | Apple, Volvo |
1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model_id = "asdf98/neuroname"
4tokenizer = AutoTokenizer.from_pretrained(model_id)
5model = AutoModelForCausalLM.from_pretrained(model_id)AutoModelForCausalLM with the appropriate AutoModel class.