dictionary – Generates a list of user name words for OSINT

I want to generate a list of user name words that would be appropriate for the following cases:

  1. Can be combined from several words depending on the case: "name", "last name + first name", "last name + first name + date of birth".
  2. The user name may contain special characters such as "." or "_" in the
    middle, but not at the beginning or end of the user name.
  3. Creates more username options, such as "J.Doe" as a derivative of
    "John"

I've tried Crunch, but it gives permutations of N specified words and does not make combinations N-1, N-2 … Then I've tried bopscrk and he's doing combinations of N- 1, N-2 but includes characters at the beginning or end of the user name. As a last option, I decided to move to a more advanced tool, PyDictor, but I still could not find a way to generate a word list that would meet all of the above requirements.
The best I could find is this script, the result of the entry "john doe" is presented below:

Python script GIF

But this allows only two variables to be combined.

What is the best way to generate a list of user name words?