Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/strayMat/tag_serve
Deployable Neural Tagger implementation for Named Entity Recognition
https://github.com/strayMat/tag_serve
bilstm-crf deep-learning docker-image flask flask-application machine-learning ner neural-network nlp pytorch tagger
Last synced: 2 months ago
JSON representation
Deployable Neural Tagger implementation for Named Entity Recognition
- Host: GitHub
- URL: https://github.com/strayMat/tag_serve
- Owner: strayMat
- License: mit
- Created: 2018-07-20T12:28:53.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-12-09T19:29:43.000Z (almost 6 years ago)
- Last Synced: 2024-06-22T23:51:55.530Z (5 months ago)
- Topics: bilstm-crf, deep-learning, docker-image, flask, flask-application, machine-learning, ner, neural-network, nlp, pytorch, tagger
- Language: Jupyter Notebook
- Homepage:
- Size: 22.6 MB
- Stars: 8
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WEB-API for Pytorch NER model
This project seeks to facilitate the exchange and diffusion of NER models built with different architectures. We strongly used the code from [NCRF++](https://github.com/jiesutd/NCRFpp) which allow to build various NER neural models in pytorch.
The `tag_serve` repo adapts the ner model from [NCRF++](https://github.com/jiesutd/NCRFpp) and wrap it in a flask API to allow live demo via a web page and a deployment for medium scale production.
## Installing from source
You can install `tag_serve` from source by cloning the git repository:
`git clone https://github.com/strayMat/tag_serve.git`
Create a Python 3.6 virtual environment, and install the necessary requirements by running:
`./src/install_requirements.sh`
## Call the API
### Launch API and web demo locally
+ Launch the API: `python app.py`
+ Open in the client in browser: `firefox client/pred_client.html`### Launch API and send multiple files
+ Launch the API: `python app.py`
+ Launch call function: `python client/call.py -i decoding/ins/ -o decoding/outs/`
(add `-v` to get visualization `.html`: `python client/call.py -i decoding/ins/ -o decoding/outs/ -v`)### With a curl command
In your terminal, run :
`curl -H 'Content-type:application/json' -d '{"file":"Paris is wonderful!"}' localhost:5000/predict`
## Change the trained model used by the API
You can either give a specific model to the api, when launching the python code `app.py` or replace the default model in the `pretrained` directory.+ **Specify a model to `app.py`**: Launch the api with the `-m` option and specify your `new_model` name, `python app.py -m myModel/new_model` where the folder `myModel` should contain `new_model.xpt` and `new_model.model` (the architecture and the weights of the model).
+ **Replace the baseline model**: Replace directly the baseline files in the pretrained directory: put new `baseline.xpt` and `baseline.model` in the `pretrained/` folder (you can check that the default model of the app is `pretrained/baseline` by typing `python app.py --help`)## Use docker
You can deploy the model with docker. Go on docker website to install docker and docker-compose. Then build the docker with:`sudo docker build --build-arg http_proxy=$yourProxy -t yourTag .`
Run the docker with :
`sudo docker run -d -p 5000:5000 --name tagger yourTag python3 /app/app.py`
You can now access the docker API with the call methods of your choice (`client/call.py`, `client/predict_client.html` or `curl`)
## Train your own model
Go see the demonstration notebook: [train_decode_template.ipynb](https://github.com/strayMat/tag_serve/blob/master/nermodel/train_decode_template.ipynb)## References:
+ [NCRF++ : An Open-source Neural Sequence Labeling Toolkit, Yang et Zhang, 2018](https://arxiv.org/abs/1806.05626)
+ Many thanks to [Guillaume Genthial](https://guillaumegenthial.github.io/serving.html) for the excellent blog post on python web-api with flask.