Live data from Hacker News

Proselint

proselint.com

51–60 of 141 posts

Re: Proselint

#51

If you're on Ubuntu, you want to run 'pip3 install proselint' rather than 'pip install proselint'. I ran it on a couple 800 word emails and it didn't catch anything except me using 2 spaces instead of 1 in one place. I also ran it on my city's sidewalk maintenance ordinance, and it didn't report anything.

Part of the goals of proselint is to minimize the number of false positives that traditionally clutter the results of style checkers, resulting in users ignoring the changes when they see them. We want to be reasonably certain before raising an alarm. You can read more about the precise metric[^fn1] we use here: http://proselint.com/lintscore/.

And yes, `python3` for the win. :)

[^fn1]: If you wanted to be truly precise, it's a parametric family of metrics.

Re: Proselint

#52
post #14

I can see a lot of value for this sort of tool, and might even play with it myself, for sake of evaluating whether or not to incorporate its suggestions into my writing. At the same time, however, I have some wariness that its widespread use could actually have a shaping, and, specifically homogenizing , effect on language. For me, a large part of the beauty of language is how facile it is, how judiciously breaking i…

I agree!

But still, it corrects incorrect things that my spell checker doesn't see, like inconsistent spacing and 'goofy approximations' like (R) for ®. (Depends on your definition of incorrect, but I personally would not mind at all if these things were homogenized for everyone, it would not take any richness out of the English language).

What I'd like (--help doesn't list such an option) would be to be able to enable some checks with a flag while disabling other parts (the ones that contain suggestions you can elect to break).

Re: Proselint

#53
post #39
post #10

I question how useful a tool like this is for a skilled writer. Prose isn't code. Many key elements of good writing are based around the idea of knowing the rules, and then carefully breaking them .

A linter doesn't prevent breaking its rules, it just notifies the writer of which rules are being broken. I was writing some C earlier and my linter warned me about "incrementing a void pointer". However, I understood the context better than my linter, knew that I'd be compiling with gcc (which allows void pointer arithmetic), so I ignored the warning and carried on. My code compiled and ran nicely. When it comes to…

Sounds like your system is in US English rather than the variant of English you are used to?

http://grammarist.com/spelling/color-colour/

Re: Proselint

#54

Does anyone know about similar tool for scientific papers? Specifically to help non native English speakers to write high quality scientific papers?

Something along these lines:

http://matt.might.net/articles/shell-scripts-for-passive-voi...

https://github.com/bnbeckwith/writegood-mode

Re: Proselint

#55
Its a python module? I'm looking forward to making a Pelican plugin so my mate can start checking his blog for glaring errors before he posts! :)

Re: Proselint

#57
post #34

This sounds interesting. As a bit of constructive criticism, please put some examples high up. You tell me it does cool things. Great, show me. I've looked about on the various pages and can see only one example and I don't understand it: text.md:0:10: wallace.uncomparables Comparison of an uncomparable: 'unique' can not be compared. What's the context of this, what's the error it would have caught in my writing? The…

Some people feel you should never ever say things like "more unique", "most unique" etc Which I think is equally as misguided as trying to force "data" to be plural, and that "less than 3" is wrong

In a mathematical context, something is either "unique" or it is not. There is no in-between state.

But you can easily define it to mean something else. And you can even make "uniqueness" comparable.

Re: Proselint

#58
What kinds of NLP technique does this system use?

Is it possible to specify new rules in a high-level way?

Can it learn from examples?

Does it work on a sentence-by-sentence basis only, or does it "grasp" complete paragraphs?

Re: Proselint

#59
post #14

I can see a lot of value for this sort of tool, and might even play with it myself, for sake of evaluating whether or not to incorporate its suggestions into my writing. At the same time, however, I have some wariness that its widespread use could actually have a shaping, and, specifically homogenizing , effect on language. For me, a large part of the beauty of language is how facile it is, how judiciously breaking i…

This is a fair concern of style recommenders in general. Yes, we want to shape text. And what follows is merely a partial response, but it should address some of your concerns.

First, much of the advice is that certain word sequences are problematic without suggesting any particular replacement text. There are a few reasons for this (including the computational natures of error-detection vs. solution-recommendation problems). The reason most relevant to your concern is that solution-recommendations are more likely to produce a homogenizing effect because they have a driving effect, wherein using a particular set of words is deemed superior to another set of words. Much in the way that the diversity of life-forms has arisen because of selective pressures, by eliminating the least fit combinations of words, the native variation in writing can flourish all the more readily.

The goal is not to homogenize text for the sake of uniformity, but rather to identify those cases that have been identified by respected authors and usage guides as being specifically problematic. Any text that is sufficiently artful and compelling to have not been specifically addressed by these sources should not be able to be caught by the linter. Novelty will continue to introduce new usages, and some of them will be poor. Authors identified as trustworthy may point these out, but this will only be in retrospect. If you do not trust a guide's point of view, our strongest recommendation would be to turn off the modules associated with that guide. You can see some of the module names and a high-level description here: http://proselint.com/checks/.

Finally, I will modify a quote in the Foreword[^fn2] by Robert Bringhurst in The Elements of Typographic Style (version 3.2, 2004) > [Language usage] thrives as a shared concern — and there are no paths at all where there are no shared desires and directions. A [language user] determined to forge new routes must move, like other solitary travelers, through uninhabited country and against the grain of the land, crossing common thoroughfares in the silence before dawn. The subject [of proselint] is not [stylistic] solitude, but the old, well-traveled roads at the core of the tradition: paths that each of us is free to follow or not, and to enter and leave when we choose — if only we know the paths are there and have a sense of where the lead. That freedom is denied us if the tradition is concealed or left for dead. Originality is everywhere, but much originality is blocked if the way back to earlier discoveries is cut or overgrown.

[^fn2]: Only because we are on the topic of historical traditions and stylistic guides, it should be mentioned that a foreword – according to book design tradition – would be written by an individual other than the author about the author, the book, and usually the relation between them. In this case, the section in Bringhurst's masterpiece labeled "Foreword" would likely be better described as "Preface" or "Introduction". Given his knowledge of book design, I shall assume that this was a conscious departure from the road of tradition, even if I cannot appreciate the new view that it offers.

Re: Proselint

#60
post #58

What kinds of NLP technique does this system use? Is it possible to specify new rules in a high-level way? Can it learn from examples? Does it work on a sentence-by-sentence basis only, or does it "grasp" complete paragraphs?

Rules are defined in Python scripts which can have arbitrary complexity. However, it seems like most rules are just string or regex matching:

https://github.com/amperser/proselint/blob/master/proselint/...

https://github.com/amperser/proselint/blob/master/proselint/...

Post reply on HN