Giter Club home page Giter Club logo

language_tool_python's Introduction

language_tool_python: a grammar checker for Python 📝

language tool python on pypi

Test with PyTest

Current LanguageTool version: 5.4

This is a Python wrapper for LanguageTool. LanguageTool is open-source grammar tool, also known as the spellchecker for OpenOffice. This library allows you to make to detect grammar errors and spelling mistakes through a Python script or through a command-line interface.

Local and Remote Servers

By default, language_tool_python will download a LanguageTool server .jar and run that in the background to detect grammar errors locally. However, LanguageTool also offers a Public HTTP Proofreading API that is supported as well. Follow the link for rate limiting details. (Running locally won't have the same restrictions.)

Using language_tool_python locally

Local server is the default setting. To use this, just initialize a LanguageTool object:

import language_tool_python
tool = language_tool_python.LanguageTool('en-US')  # use a local server (automatically set up), language English

Using language_tool_python with the public LanguageTool remote server

There is also a built-in class for querying LanguageTool's public servers. Initialize it like this:

import language_tool_python
tool = language_tool_python.LanguageToolPublicAPI('es') # use the public API, language Spanish

Using language_tool_python with the another remote server

Finally, you're able to pass in your own remote server as an argument to the LanguageTool class:

import language_tool_python
tool = language_tool_python.LanguageTool('ca-ES', remote_server='https://language-tool-api.mywebsite.net')  # use a remote server API, language Catalan

Apply a custom list of matches with utils.correct

If you want to decide which Match objects to apply to your text, use tool.check (to generate the list of matches) in conjunction with language_tool_python.utils.correct (to apply the list of matches to text). Here is an example of generating, filtering, and applying a list of matches. In this case, spell-checking suggestions for uppercase words are ignored:

>>> s = "Department of medicine Colombia University closed on August 1 Milinda Samuelli"
>>> is_bad_rule = lambda rule: rule.message == 'Possible spelling mistake found.' and len(rule.replacements) and rule.replacements[0][0].isupper()
>>> import language_tool_python
>>> tool = language_tool_python.LanguageTool('en-US')
>>> matches = tool.check(s)
>>> matches = [rule for rule in matches if not is_bad_rule(rule)]
>>> language_tool_python.utils.correct(s, matches)
'Department of medicine Colombia University closed on August 1 Melinda Sam

Example usage

From the interpreter:

>>> import language_tool_python
>>> tool = language_tool_python.LanguageTool('en-US')
>>> text = 'A sentence with a error in the Hitchhiker’s Guide tot he Galaxy'
>>> matches = tool.check(text)
>>> len(matches)
2

Check out some Match object attributes:

>>> matches[0].ruleId, matches[0].replacements # ('EN_A_VS_AN', ['an'])
('EN_A_VS_AN', ['an'])
>>> matches[1].ruleId, matches[1].replacements
('TOT_HE', ['to the'])

Print a Match object:

>>> print(matches[1])
Line 1, column 51, Rule ID: TOT_HE[1]
Message: Did you mean 'to the'?
Suggestion: to the
...

Automatically apply suggestions to the text:

>>> tool.correct(text)
'A sentence with an error in the Hitchhiker’s Guide to the Galaxy'

From the command line:

$ echo 'This are bad.' > example.txt
$ language_tool_python example.txt
example.txt:1:1: THIS_NNS[3]: Did you mean 'these'?

Installation

To install via pip:

$ pip install --upgrade language_tool_python

Customizing Download URL or Path

To overwrite the host part of URL that is used to download LanguageTool-{version}.zip:

$ export LTP_DOWNLOAD_HOST = [alternate URL]

This can be used to downgrade to an older version, for example, or to download from a mirror.

And to choose the specific folder to download the server to:

$ export LTP_PATH = /path/to/save/language/tool

The default download path is ~/.cache/language_tool_python/. The LanguageTool server is about 200 MB, so take that into account when choosing your download folder. (Or, if you you can't spare the disk space, use a remote URL!)

Prerequisites

The installation process should take care of downloading LanguageTool (it may take a few minutes). Otherwise, you can manually download LanguageTool-stable.zip and unzip it into where the language_tool_python package resides.

LanguageTool Version

As of April 2020, language_tool_python was forked from language-check and no longer supports LanguageTool versions lower than 4.0.

Acknowledgements

This is a fork of https://github.com/myint/language-check/ that produces more easily parsable results from the command-line.

language_tool_python's People

Contributors

myint avatar jxmorris12 avatar hiddenspirit avatar aokellermann avatar jayvdb avatar rafaelwo avatar sils avatar misrasaurabh1 avatar tetris0k avatar johndle avatar matthewmcintire-savantx avatar samber avatar tilka avatar tuomastik avatar jie-mei avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.