Skip to content

PLNech/never2late

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

29 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

โ‚ฆโˆƒโ‹โˆƒโ„ยฒแ’ชฮ”อฒโˆƒ โ–“โ–‘โ–’ dโœtโœ unicode poetry โ–’โ–“โ–“โ–‘

"the day she picked a pฬ•อœrฬ€oฬธtecฬ€อtฬจedฬทอž fอŸอกlฬ€oฬตอขwอœอeฬ•rฬ€อ the sky อกา‰อœา‰อขfฬกอ˜eา‰อ ฤผฬทฬตฬดฬตอ˜อŸอŸฤผฬทฬตฬดฬตอ˜อŸอŸ"

แ“šแ˜แ—ข A Bฬถrฬดoฬดkฬถeฬถnฬท Iฬด and A Bฬถrฬดoฬดkฬถeฬถnฬท Yฬตoฬทuฬถ แ“šแ˜แ—ข

Never2Late ๐“ฒ๐“ผ an โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ poetry-โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ making machine โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ from what is โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ lost. In the spaces between โ–ˆโ–ˆโ–ˆ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ on WordReference.com, โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ oblivion, we find the โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ of language from โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ our collective โ–ˆโ–ˆโ–ˆโ–ˆ.

Developed for la Fรชte des Fleurs, 2025 edition.

image


"๐”ป๐•–๐•’๐•ฅ๐•™ ๐•š๐•ค ๐•Ÿ๐• ๐•ฅ ๐•ฅ๐•™๐•– ๐•–๐•Ÿ๐•• ๐• ๐•— ๐•“๐•–๐•’๐•ฆ๐•ฅ๐•ช. โ„™๐• ๐•–๐•ฅ๐•ฃ๐•ช ๐•š๐•ค ๐•ฅ๐•™๐•– ๐•ฃ๐•–๐•ค๐•ฆ๐•ฃ๐•ฃ๐•–๐•”๐•ฅ๐•š๐• ๐•Ÿ ๐• ๐•— ๐•ž๐•–๐•’๐•Ÿ๐•š๐•Ÿ๐•˜."

โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“

โ„‚๐•ฃ๐•–๐••๐•š๐•ฅ๐•ค ๐•’๐•Ÿ๐•• ๐”ธ๐•”๐•œ๐•Ÿ๐• ๐•จ๐•๐•–๐••๐•˜๐•–๐•ž๐•–๐•Ÿ๐•ฅ๐•ค โŒฌโŽฐโ—Šโ ฌโ ƒโ†คโ˜˜

"i've never picked a protected flower" See the source at github.com/everestpipkin/never

๐Ÿ…ผ๐Ÿ…ฐ๐Ÿ…ฝ๐Ÿ…ธ๐Ÿ…ต๐Ÿ…ด๐Ÿ†‚๐Ÿ†ƒ๐Ÿ…พ

Instead of relying on external APIs for conceptual relationships, we use local NLP models with spaCy + vector similarity computations to retrieve semantically proximate words directly from the corpus, based on English NLP pre-trained word models.

The project is composed of four independent yet interconnected parts:

  1. scraper.py - ษจืฆษฌเฝžฤ…ฦˆษฌส‚ raw language from the collective unconscious
  2. clean.py - ๊އ๊€ค๊’’๊“„๊‚๊‹ช๊Œ— the noise from the signal
  3. generator.py - เฉฎะณเธ„เบ–ลžเงฒเนะณเบ–ลž random words into semantic poetry
  4. wallpaper.py - ั”ฮทยขฮฑโˆ‚ั”ั• the poems into unicode patterns

โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“

๐Ÿ„ธ๐Ÿ„ฝ๐Ÿ…‚๐Ÿ…ƒ๐Ÿ„ฐ๐Ÿ„ป๐Ÿ„ป๐Ÿ„ฐ๐Ÿ…ƒ๐Ÿ„ธ๐Ÿ„พ๐Ÿ„ฝ โ•œโ—ŠโŽผโ–ฒโ–…โ Œโ—‡โ•ฏโ—†

# Clone the repository
git clone https://github.com/PLNech/never2.git
cd never2

# Optional but recommended: create a virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install spacy beautifulsoup4 requests numpy
python -m spacy download en_core_web_lg

๐Ÿ†„๐Ÿ†‚๐Ÿ…ฐ๐Ÿ…ถ๐Ÿ…ด

1. ๐•Š๐•”๐•ฃ๐•’๐•ก๐•š๐•Ÿ๐•˜ โ„™๐• ๐•–๐•ฅ๐•ฃ๐•ช ๐•€๐•Ÿ๐•˜๐•ฃ๐•–๐••๐•š๐•–๐•Ÿ๐•ฅ๐•ค

python scraper.py --start 1 --end 100 --delay 2 --batch 20

Options:

  • --start START - Starting page number
  • --end END - Ending page number
  • --delay DELAY - Delay between requests (seconds)
  • --batch BATCH - Save to disk after this many pages

image

"In the gaps between forum words, I found sentences that never existed."

2. แถœหกแต‰แตƒโฟโฑโฟแต แต—สฐแต‰ แดฐแตƒแต—แตƒ

python clean.py -i english4.csv -o clean4.csv

Options:

  • -i INPUT, --input INPUT - Input CSV file (default: english4.csv)
  • -o OUTPUT, --output OUTPUT - Output CSV file (default: derived from input)

"Language is a virus ๐’‡๐’“๐’๐’Ž ๐’๐’–๐’•๐’†๐’“ ๐’”๐’‘๐’‚๐’„๐’†."

3. ๐”พ๐•–๐•Ÿ๐•–๐•ฃ๐•’๐•ฅ๐•š๐•Ÿ๐•˜ โ„™๐• ๐•–๐•ž๐•ค

python generator.py -i clean4.csv -n 20 -l 5 -f html --feet 575 --cache vectors_cache.pkl

Options:

  • -i INPUT, --input INPUT - Input CSV file with cleaned sentences
  • -n NUM_POEMS, --num-poems NUM_POEMS - Number of poems to generate
  • -l LENGTH, --length LENGTH - Maximum number of lines per poem
  • -m MODEL, --model MODEL - spaCy model to use (default: en_core_web_lg)
  • -o OUTPUT_DIR, --output-dir OUTPUT_DIR - Directory to save generated poems
  • -f {txt,html,json}, --format {txt,html,json} - Output format
  • -s SEED, --seed SEED - Initial seed word for poem generation
  • -p PORT, --port PORT - Run as HTTP server on specified port
  • -b BATCH, --batch BATCH - Generate a large batch of poems (specify count)
  • -w WORKERS, --workers WORKERS - Number of worker processes for batch generation
  • --cache CACHE - Cache file for word vectors and similarity
  • -r RELATED, --related RELATED - Test related words
  • --feet FEET - Pattern for syllable counts (e.g., "575" for haiku, "12x4" for alexandrines)
  • --test - Run tests for word similarity

Example - python generator.py -i clean.csv -b 100 -f txt --feet "575" --cache .poem_cache.bin

Loading spaCy model: en_core_web_lg...
Loading cache from .poem_cache.bin...
Loaded 1545 word vectors, 310284 similarity pairs, and 216 related words sets
Loading data from clean.csv...
Loaded 10268 sentences from 2166 users
Found 15 words related to 'thought': ['think', 'believed', 'probably', 'because', 'something', 'understanding', 'knowing', 'deliberately', 'remember', 'imperceptibly']
Using cached related words for 'blush'
Found 15 words related to 'trail': ['road', 'mountainside', 'roadway', 'mountain', 'route', 'canyon', 'path', 'ridge', 'mountains', 'outcropping']
Using cached related words for 'flame'
Using cached related words for 'decay'
Using cached related words for 'sky'
[...]
Using cached related words for 'brick'
Using cached related words for 'boundary'
Saved 100 poems to poems
Saving cache to .poem_cache.bin...
Saved 1545 word vectors, 322200 similarity pairs, and 225 related words sets

image

"Every poem is an epitaph. ๏ผไบบโ—• โ€ฟโ€ฟ โ—•ไบบ๏ผผ"

4. ๐Ÿ’ฎ Creating Unicode Wallpaper ๐Ÿ’ฎ

python wallpaper.py -W 80 -H 24 -g pmm --poem poems/poem_1.txt -f html -o pattern.html

Options:

  • -W WIDTH, --width WIDTH - Width of the pattern in characters
  • -H HEIGHT, --height HEIGHT - Height of the pattern in characters
  • -s SEED, --seed SEED - Random seed for pattern generation
  • -g {p1,pm,pmm,...}, --group {p1,pm,pmm,...} - Specific wallpaper group to use
  • -p PORT, --port PORT - Run as web server on specified port
  • -o OUTPUT, --output OUTPUT - Output file path
  • -f {txt,html}, --format {txt,html} - Output format
  • --poem POEM - Text file containing poem to embed
  • -D DENSITY, --density DENSITY - Character density (higher = more characters)
  • -b {white,black}, --background {white,black} - Background color for HTML output
  • -i [INTERACTIVE], --interactive [INTERACTIVE] - Run in interactive mode with auto-updates
  • --chaos - Run in chaos mode with varying density and update intervals

Examples โŒฏโ—“โ–€โŒ‚โ”ฃโŽบโ—Š

The -D parameter controls the density of Unicode characters in the output. Here are examples with increasing density values:

Command Results
-D 50 -H 10 -W 40 image
-D 100 -H 12 -W 40 image
-D 500 -H 28 -W 80 image
-D 1000 -H 10 -W 40 image

๐Ÿ…ฃ๐Ÿ…ž๐Ÿ…“๐Ÿ…ž โ–’โ–“โ–’โ–“โ–’โ–“โ–’โ–“โ–’โ–“โ–’โ–“โ–’

  • Rework wallpaper.py: Current implementation is far from the unicode magic of everest's original project. Needs significant upgrades to achieve bolder aesthetic impact.
  • Add support for more output formats and embedding options
  • Improve interactive visualization modes
  • Rework web interface
  • Enhance thematic poem generation
  • Fine-tune feet/syllable matching logic

โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“โ–“

โ„“ฮนฦˆั”ฮทั•ั” โ•›โ•โ•œโ”ถโŒงโ”Š

This project is free software. Take it, use it, modify it, reshare it. Just add/download your own dataset!

๐Ÿ…›๐Ÿ…˜๐Ÿ…’๐Ÿ…”๐Ÿ…๐Ÿ…ข๐Ÿ…”๐Ÿ…“ ๐Ÿ…ค๐Ÿ…๐Ÿ…“๐Ÿ…”๐Ÿ…ก ๐Ÿ…ฃ๐Ÿ…—๐Ÿ…” ๐Ÿ…–๐Ÿ…๐Ÿ…ค ๐Ÿ…–๐Ÿ…Ÿ๐Ÿ…›-๐Ÿน.๐Ÿถ

About

Never 2 Late - a reinterpretation of Everest Pipkin's 'i've never picked a protected flower'

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages