How to check whether a sentence is correct (simple grammar check in Python)?

前端 未结 4 1982
深忆病人
深忆病人 2020-11-28 22:40

How to check whether a sentence is valid in Python?

Examples:

I love Stackoverflow - Correct
I Stackoverflow love - Incorrect
4条回答
  •  北荒
    北荒 (楼主)
    2020-11-28 23:23

    There are various Web Services providing automated proofreading and grammar checking. Some have a Python library to simplify querying.

    As far as I can tell, most of those tools (certainly After the Deadline and LanguageTool) are rule based. The checked text is compared with a large set of rules describing common errors. If a rule matches, the software calls it an error. If a rule does not match, the software does nothing (it cannot detect errors it does not have rules for).

    After the Deadline

    import ATD
    ATD.setDefaultKey("your API key")
    errors = ATD.checkDocument("Looking too the water. Fixing your writing typoss.")
    for error in errors:
     print "%s error for: %s **%s**" % (error.type, error.precontext, error.string)
     print "some suggestions: %s" % (", ".join(error.suggestions),)
    

    Expected output:

    grammar error for: Looking **too the**
    some suggestions: to the
    spelling error for: writing **typoss**
    some suggestions: typos
    

    It is possible to run the server application on your own machine, 4 GB RAM is recommended.

    LanguageTool

    https://pypi.python.org/pypi/language-check

    >>> import language_check
    >>> tool = language_check.LanguageTool('en-US')
    >>> text = 'A sentence with a error in the Hitchhiker’s Guide tot he Galaxy'
    >>> matches = tool.check(text)
    
    >>> matches[0].fromy, matches[0].fromx
    (0, 16)
    >>> matches[0].ruleId, matches[0].replacements
    ('EN_A_VS_AN', ['an'])
    >>> matches[1].fromy, matches[1].fromx
    (0, 50)
    >>> matches[1].ruleId, matches[1].replacements
    ('TOT_HE', ['to the'])
    
    >>> print(matches[1])
    Line 1, column 51, Rule ID: TOT_HE[1]
    Message: Did you mean 'to the'?
    Suggestion: to the
    ...
    
    >>> language_check.correct(text, matches)
    'A sentence with an error in the Hitchhiker’s Guide to the Galaxy'
    

    It is also possible to run the server side privately.

    Ginger

    Additionally, this is a hacky (screen scraping) library for Ginger, arguably one of the most polished free-to-use grammar checking options out there.

    Microsoft Word

    It should be possible to script Microsoft Word and use its grammar checking functionality.

    More

    There is a curated list of grammar checkers on Open Office website. Noted in comments by Patrick.

提交回复
热议问题