This project has moved and is read-only. For the latest updates, please go here.

Option to eliminate grammar

Nov 23, 2015 at 6:50 PM
I'm having trouble remembering passphrases generated by Readable Passphrase Generator due to the grammar. For example, articles such as "a/the", singular vs. plural nouns (cat/cats), verb tense (is/was/will). Basically, the extra entropy introduced by grammar is small, but very difficult for me to remember, and personally I believe this to be poor design, and I'll try to explain why.

Consider the classical "correct horse battery staple." These are simple, ungrammatical words. But then if you try to make it more grammatical, you end up with something like:

The correct horses were battery stapled
A correct horse is a battery staple
A correct horse will battery a staple

I can remember "correct horse battery staple" but I can't remember whether I need a/the, is/were/was/will, and singular/plural. This grammar makes remembering the password much more difficult (for me at least), but increases the entropy only slightly, thus defeating the goal of an easy-to-remember password.

Would it be possible to implement an option which produces passwords based on plain random words? Does such an option already exist?

Thanks for the awesome free tool, I really appreciate it!
Nov 23, 2015 at 7:46 PM
I figured I might be able to do what I want using a custom phrase. I want all my nouns to be singular, and I want no article. However, from NounClause.cs,
// Singular accepts: Definite, Indefinite, Demonstrative, PersonalPronoun.
// Plural accepts: None, Definite, Demonstrative, PersonalPronoun.
So it looks like I could get what I wanted (at least in terms of nouns) if "None" were an option for singular nouns.
Nov 23, 2015 at 8:11 PM
I get mostly what I want by using the following, and manually deleting the word "the." Any idea why some of the passphrases are missing the final noun? Thanks!
Noun = {
    Adjective->1, NoAdjective->0,
    NoArticle->1000, DefiniteArticle->1, IndefiniteArticle->0, Demonstrative->0, PersonalPronoun->0,
    ProperNoun->0, CommonNoun->1, AdjectiveNoun->0,
    Plural->0, Single->1, Number->0, NoNumber->1,
    Preposition->0, NoPreposition->1,
 }

Verb = {
    Adverb->0, NoAdverb->1,
    Interrogative->0, NoInterrogative->1,
    IntransitiveByNoNoun->1, IntransitiveByPreposition->0,
    Present->1, Past->0, Future->0, ContinuousPast->0, Continuous->0, Perfect->0, Subjunctive->0,
 }

Noun = {
    Adjective->0, NoAdjective->1,
    NoArticle->1000, DefiniteArticle->1, IndefiniteArticle->0, Demonstrative->0, PersonalPronoun->0,
    ProperNoun->0, CommonNoun->1, AdjectiveNoun->0,
    Plural->0, Single->1, Number->0, NoNumber->1,
    Preposition->0, NoPreposition->1,
 }
the wheezy vineyard rants
the infinite hookup lynches the tomboy
the dreamy condition eases the kid
the pulpy dribbler exchanges the dogwood
the cobbled valuable aspires
Dec 10, 2015 at 7:14 PM
Any ideas about how to eliminate "the"? Also, any idea why the final noun is often skipped? Thanks!
Jun 11, 2016 at 7:11 AM
First off, sorry for the very late reply. Whatever email Codeplex sent me got eaten by something.

You can generate totally random words using the console version and the -n option. And makemeapassword.org will generate xkcd / diceware / dictionary style passphrases (totally random; no grammar at all).

However, you've put in the yards with a custom passphrase definition which is 95% of the way there! And managed to uncover a few bugs which I've fixed in the 0.16 release. Now, you can put zeros everywhere and it won't blow up.

First off, "the" keeps appearing because it's not grammatically correct when used with singular verbs. That is, "the wheezy vineyard rants" is correct but "wheezy vineyard rants" isn't (assuming "rants" is a verb) - "a wheezy vineyard" can rant or "wheezy vineyards" can, but not "wheezy vineyard". However, I've changed the code so that, if you really, really want to drop the preposition for singular nouns, it will now let you (previously, it threw an ugly exception).

The issue with the final noun getting skipped is because the verb selected is intransitive. That is, "the cobbled valuable" must either "aspire" in and of itself, or "aspire to" something. Intransitives are handled by either a) dropping the final noun clause (the behaviour you're seeing) or b) inserting a preposition (eg: "to"). If you set both IntransitiveByNoNoun and IntransitiveByPreposition to zero, it will not use intransitive verbs at all.

You've also got an adjective in the first noun clause, which I don't think you want (although feel free to add it back).

Which brings us to the final definition and some examples:
Noun = {
    Adjective->0, NoAdjective->1,
    NoArticle->1, DefiniteArticle->0, IndefiniteArticle->0, Demonstrative->0, PersonalPronoun->0,
    ProperNoun->0, CommonNoun->1, AdjectiveNoun->0,
    Plural->0, Single->1, Number->0, NoNumber->1,
    Preposition->0, NoPreposition->1,
 }

Verb = {
    Adverb->0, NoAdverb->1,
    Interrogative->0, NoInterrogative->1,
    IntransitiveByNoNoun->0, IntransitiveByPreposition->0,
    Present->1, Past->0, Future->0, ContinuousPast->0, Continuous->0, Perfect->0, Subjunctive->0,
 }

Noun = {
    Adjective->0, NoAdjective->1,
    NoArticle->1, DefiniteArticle->0, IndefiniteArticle->0, Demonstrative->0, PersonalPronoun->0,
    ProperNoun->0, CommonNoun->1, AdjectiveNoun->0,
    Plural->0, Single->1, Number->0, NoNumber->1,
    Preposition->0, NoPreposition->1,
 }
And some examples:
gull benefits bug
sand blacklists pea
premier slaps debacle
bow bills pussycat
Which I hope will meet your needs!

Obviously, you can pad this out with adjectives or other nouns if to get the length you require.
Jun 28, 2016 at 7:03 PM
Hi Ligos,

I just got around to upgrading the plugin, and your definition works very well. Thanks so much! Problem resolved. :) Great work.
Jun 29, 2016 at 2:11 PM
Glad it's working better for you now!
(And that I actually got an email this time)