I am trying to solve a specific problem that has some other applications.
My specific problem is I want to add an English word to every file from my camera. The files come in like [date]_time.jpg. Although I think the best workflow involves using a photo management app like DarkTable, sometimes you just want to quickly browse your filesystem and grab the original image. Browsing just by datetime creates problems when you take two very similar images seconds apart. It takes a lot of effort determining which is which. And if you pick out your best picture from a shoot, you then have to mentally note you want timestamp _12345678 and find it in your folder.
I think it would be smoother to have files like:
20261019_cape_1234567820261019_echo_12346678
In my specific case, 100 unique words is the absolute minimum, with 500-2000 words being more comfortable.
This is trivial if you have a “wordlist”, a list of words you find suitable for the task. And there’s the rub. What’s a good wordlist? I can hack one together myself but I’m hoping some top minds have thought about this.
Some prior art that I’ve found is:
- Diceware and the EFF diceware lists
- Some bitcoin folks created 2048 words that are uniquely identified by the first 4 letters of the word
- a lot of default usernames take the form
adjective-noun, but I don’t know where they get their wordlist - router default passwords
This task is nontrivial in my use case. Words can:
- evoke computers - copy, original, resize, error, fail, process, base, cat, category, data, base, idle, arm
- evoke other common file formats - album, music, song, camera, photo, video
- evoke the contents of an image or file - cool, neat, tree, car, sky, beautiful, best, trip
- evoke common filenames and extensions - wave
- be full on offensive
- be offensive in some contexts, as well as have a negative connotation in the most literal sense: bad, corrupt, awful, awkward, bomb
This is partly an “I know it when I see it” problem, but I’m kind of looking for the 500 blandest, most non-ideological English words there are.
I think very few if any words on https://en.wiktionary.org/wiki/Appendix:Basic_English_word_list are offensive, and it has the size you want.
If you need only 100 or even 2000, it’s not that hard to take random words from the diceware list and vet them one by one until you have enough.
How about using the radio alphabet, and then picking two words each time? Then you’d have some 26^2 combinations, which is hopefully enough.
The good part is that this would take meaning out of the words, because when thinking about it, also words like echo and cape will evoke some emotional connotation inside you. But when treating the words as just another form of cold and objective identifier, like they are used in radio communications, that may take the emotional connotation out of them.
- a lot of default usernames take the form
adjective-noun, but I don’t know where they get their wordlist
I collected such a word list a while ago, by using my brain to think of words, well, and occasionally removing ones I don’t like: https://codeberg.org/trem/fantastic_snail/
The nouns are animal names. They are not the blandest word combinations possible, because I found those difficult to memorize. Instead I went for evoking funny images, sort of anthropomorphizing the animals.
I cannot guarantee that there’s not some word combination that could be interpreted offensively, because humans are very creative in offensive language, especially with racism, but I’ve been regularly generating word combinations for a few years now and remove offensive combinations when I come across them.
It’s a Rust library, but the specific word lists are here:
- https://codeberg.org/trem/fantastic_snail/src/branch/main/src/adjectives.rs
- https://codeberg.org/trem/fantastic_snail/src/branch/main/src/nouns.rs
I could also place these lists into the repo as just newline-separated words, if that helps you. Probably makes sense to offer in general…
- a lot of default usernames take the form
https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases
The EFF has a wordlist alike diceware as well. Mind you have a computer at your disposal. You could write a short program to cross-check wordlists against some list of vulgar words. And in case 500 words is all you need, why not just go through them? Shouldn’t take more than 10 minutes and you’re done.
I think you should use a DAM instead. I use digiKam and it works really well. When I import photos I create a sub-folder with the YYYY/YYYY-MM - Subject, and rename the pictures to YYYY-MM-dd_hhmmss_ms.ext. Then I tag the photos with as many tags as I want and make sure they’re geo-tagged. I then go through and cull the photos with the picker and delete the photos that don’t make the cut. All of the metadata is written to a sidecar file, so I never change the actual image file. You might even be able to rename the photos to include a main tag.
ETA:
I recommend DK because you’re already talking about touching every photo by hand anyway. DK would seem to make the most sense for the file name changes you want to make. You also mentioned Darktable. While this program has tagging/renaming (DAM) abilities, it’s primary use case is as a photo editor similar to Lightroom, but, admittedly with a learning curve. DigiKam is primarily a DAM with photo editing capabilities. Ideally, one would use dK for the DAM, and DT (running in memory mode, or no DB) for editing.
This reminded me of heroku,which named it’s instances (or whatever their called) with random adjective noun this project replicates that: https://github.com/polleverywhere/random_username. Looks like theres other versions out there in other programming languages.
This is basically the same problem as project names.
You can find a lot of made up words that don’t mean anything in mythology for example. Take names from gods (Greek+roman+norse will probably already get to 100.
Animals or desserts (like android) may appear in pictures. You can add mythical creatures to your list of gods though. Probably won’t encounter a minotaur in your photos
You’re question made me think of rainbow codes, the naming scheme for British secret military projects during part of the cold war.
I couldn’t find the wordlist they used (if there ever was an official one), but if you used a system like that (with two words instead of one), then you might even get away with making your own wordlist by hand.
Why not just use metadata headers for the file and throw in actual descriptions?
You spend a lot of time writing metadata descriptions for your photo sets?
They’re already proposing processing photos in DarkTable, which takes it’s own degree of care and enables this inherently. Then any search can find the necessary data.
I spend a lot of time wrangling disparate datasets.
Fair point. Glazed over because I didn’t recognise the name. If you don’t mind me asking, work or pleasure?
Masochism?
I would consider using LLM for language processing as they ware made for that purpose. You could try generating or filtering out unwanted words.
Using complex, power-hungry matrix algebra to get words that could come from an indexed array in constant time is just about the worst solution of which I can think.
Worth noting, it may be that you meant to generate a list as a one-time operation. That is maybe sensible. I originally interpreted you to mean on the fly generation.
And it won’t have a clue if you consider “asbestos” an unwanted word. I mean that’s all highly subjective and an AI will (most likely) just do whatever.
A small locally run model would work and it would use less electricity than what’s needed for spending time researching different lists from different websites.
This seems like a problem that can be approached entirely in embedding space. Find embeddings for words that you want to avoid, then filter your dictionary to remove anything too close to those.
No need to go through full text gen or anything, though if you want to go that route, a classifier like Jev (or OpenJev/etc) would be best.
Yes, the two approaches I was thinking (because it’s so subjective to my use) was manual review or using something like Jev.




