• Stars
    star
    1,199
  • Rank 38,755 (Top 0.8 %)
  • Language
    Python
  • License
    GNU Affero Genera...
  • Created over 5 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Pytorch-Named-Entity-Recognition-with-BERT

BERT NER

Use google BERT to do CoNLL-2003 NER !

new Train model using Python and Inference using C++

ALBERT-TF2.0

BERT-NER-TENSORFLOW-2.0

BERT-SQuAD

Requirements

  • python3
  • pip3 install -r requirements.txt

Run

python run_ner.py --data_dir=data/ --bert_model=bert-base-cased --task_name=ner --output_dir=out_base --max_seq_length=128 --do_train --num_train_epochs 5 --do_eval --warmup_proportion=0.1

Result

BERT-BASE

Validation Data

             precision    recall  f1-score   support

        PER     0.9677    0.9745    0.9711      1842
        LOC     0.9654    0.9711    0.9682      1837
       MISC     0.8851    0.9111    0.8979       922
        ORG     0.9299    0.9292    0.9295      1341

avg / total     0.9456    0.9534    0.9495      5942

Test Data

             precision    recall  f1-score   support

        PER     0.9635    0.9629    0.9632      1617
        ORG     0.8883    0.9097    0.8989      1661
        LOC     0.9272    0.9317    0.9294      1668
       MISC     0.7689    0.8248    0.7959       702

avg / total     0.9065    0.9209    0.9135      5648

Pretrained model download from here

BERT-LARGE

Validation Data

             precision    recall  f1-score   support

        ORG     0.9288    0.9441    0.9364      1341
        LOC     0.9754    0.9728    0.9741      1837
       MISC     0.8976    0.9219    0.9096       922
        PER     0.9762    0.9799    0.9781      1842

avg / total     0.9531    0.9606    0.9568      5942

Test Data

             precision    recall  f1-score   support

        LOC     0.9366    0.9293    0.9329      1668
        ORG     0.8881    0.9175    0.9026      1661
        PER     0.9695    0.9623    0.9659      1617
       MISC     0.7787    0.8319    0.8044       702

avg / total     0.9121    0.9232    0.9174      5648

Pretrained model download from here

Inference

from bert import Ner

model = Ner("out_base/")

output = model.predict("Steve went to Paris")

print(output)
'''
    [
        {
            "confidence": 0.9981840252876282,
            "tag": "B-PER",
            "word": "Steve"
        },
        {
            "confidence": 0.9998939037322998,
            "tag": "O",
            "word": "went"
        },
        {
            "confidence": 0.999891996383667,
            "tag": "O",
            "word": "to"
        },
        {
            "confidence": 0.9991968274116516,
            "tag": "B-LOC",
            "word": "Paris"
        }
    ]
'''

Inference C++

Pretrained and converted bert-base model download from here

Download libtorch from here

  • install cmake, tested with cmake version 3.10.2

  • unzip downloaded model and libtorch in BERT-NER

  • Compile C++ App

      cd cpp-app/
      cmake -DCMAKE_PREFIX_PATH=../libtorch

    cmake output image

    make

    make output image

  • Runing APP

       ./app ../base

    inference output image

NB: Bert-Base C++ model is split in to two parts.

  • Bert Feature extractor and NER classifier.
  • This is done because jit trace don't support input depended for loop or if conditions inside forword function of model.

Deploy REST-API

BERT NER model deployed as rest api

python api.py

API will be live at 0.0.0.0:8000 endpoint predict

cURL request

curl -X POST http://0.0.0.0:8000/predict -H 'Content-Type: application/json' -d '{ "text": "Steve went to Paris" }'

Output

{
    "result": [
        {
            "confidence": 0.9981840252876282,
            "tag": "B-PER",
            "word": "Steve"
        },
        {
            "confidence": 0.9998939037322998,
            "tag": "O",
            "word": "went"
        },
        {
            "confidence": 0.999891996383667,
            "tag": "O",
            "word": "to"
        },
        {
            "confidence": 0.9991968274116516,
            "tag": "B-LOC",
            "word": "Paris"
        }
    ]
}

cURL

curl output image

Postman

postman output image

C++ unicode support

Tensorflow version

More Repositories

1

BERT-SQuAD

SQuAD Question Answering Using BERT, PyTorch
Python
396
star
2

Named-Entity-Recognition-with-Bidirectional-LSTM-CNNs

Named-Entity-Recognition-with-Bidirectional-LSTM-CNNs
Python
357
star
3

BERT-NER-TF

Named Entity Recognition with BERT using TensorFlow 2.0
Python
213
star
4

ALBERT-TF2.0

ALBERT model Pretraining and Fine Tuning using TF2.0
Python
199
star
5

stable-diffusion-tritonserver

Deploy stable diffusion model with onnx/tenorrt + tritonserver
Jupyter Notebook
119
star
6

Vision-Transformer

Vision Transformer using TensorFlow 2.0
Python
95
star
7

DATA-SCIENCE-BOWL-2018

DATA-SCIENCE-BOWL-2018 Find the nuclei in divergent images to advance medical discovery
Jupyter Notebook
90
star
8

e5-mistral-7b-instruct

Finetune mistral-7b-instruct for sentence embeddings
Python
65
star
9

minGPT-TF

A minimal TF2 re-implementation of the OpenAI GPT training
Jupyter Notebook
55
star
10

BioELECTRA

BioELECTRA
51
star
11

Swin-Transformer-Serve

Deploy Swin Transformer using TorchServe
Python
26
star
12

TAPAS-TF2

End-to-end neural table-text understanding models.
Python
8
star
13

Malayalam-News-Classifier

Python
7
star
14

BioGPT-HF

Jupyter Notebook
5
star
15

Tapas-Tutorial

Jupyter Notebook
3
star
16

Summarizer

Python
2
star
17

pytorch-tutorial

Jupyter Notebook
2
star
18

Redis-Stack-Bitnami-Helm-Chart

Redis Stack Server Helm Chart
Mustache
1
star
19

librispeech_100_jax

Python
1
star
20

Tensorflow-Paper-Implementation

Python
1
star
21

BioNLP-Corpus

Python
1
star
22

dlrm-jax

Python
1
star
23

S4-Standalone

Python
1
star
24

Multilingual-Complex-Named-Entity-Recognition

Python
1
star
25

git-actions-python

Python
1
star
26

NLI4CT

Jupyter Notebook
1
star
27

BioSimCSE

1
star