A web-based English writing assistant with automatic grammar error correction (GEC) and example sentence suggestion.
- Frontend: sass, es6, react, redux, webpack.
- Backend: nodejs for webserver, python flask for GEC business logic.
- Special credits: GEC functionality is based on Linggle API (A web-scale linguistics search engine), which is developed by NTHU NLPLAB.
- node: v6.2.2 (recommend to use
nvm
) - npm: 3.9.5
- python: 2.7.10
- Assume that you've installed python virtual environment package -
virtualenv
. You'll need to first create a new virtual environment, then activate it. By doing this to prevent installing python packages required by this project in global space.
>> virtualenv venv (Create 'venv' folder whatever place you want to place in)
>> source venv/bin/activate (Activate virtual environment)
- Install python packages required by this project from requirements.txt. If there's any error, you can run
python server/app.py
to see what packages are required, then install them bypip install <package>
one by one.
>> pip install -r requirements.txt
- Note that our project requires
nltk
tagger -averaged_perceptron_tagger
and tokenizer -punkt
, you'll need to install those first.
(python cmd)>>> import nltk
(python cmd)>>> nltk.download()
- Assume that you've installed nodejs and npm. Run
npm install
to install nodejs packages required by this project
>> npm install
- Since this project runs two different servers, one is nodejs for routings, the other is python flask API for GEC. Please enter the following two commands in seperate terminal taps, this will help you get the app started.
>> python server/app.py (Start python flask api server)
>> npm start (Start node web server)
- You can run node web server on different port by revising
"start": "..."
command inpackage.json
. - You can run flask API server on different port by revising
port
in/server/app.py
at localhost or deploy it on server, you'll need to change API URL in client app at/app/config.js
.
If there's any problem, please open an issue or send me an email.