Giter Club home page Giter Club logo

a_ner-nerbert's Introduction

bert_ner

介绍

Use google BERT to do CoNLL-2003 NER

dataset

CoNLL-2003

model folder

About the parameter --bert_model

You can just input model name like: bert-base-cased
It will call pytorch-pretrained-bert to down the bert-base-cased model files.
And this will work, besides you need to wait a little longer time.
So if you network is unstable, you may fail.

At this time, you need to download the pretrained models manually.
Since this project is based on pytorch, so you need the pytorch version of the BERT.

pytorch-pretrained-bert has changed name to pytorch-transformers. here is the github:
pytorch-transformers

Ok, The Subject create the local model folder
a model folder is like this:

bert-base-cased
    python_model.bin
    bert_config.json
    vocab.txt

When you download the model tar.gz file, untar it then you can get python_model.bin and bert_cofnig.json.
For vocab.txt, you need download the file like bert-base-cased-vocab.txt, and change its name to vocab.txt

how to run?

bash run.sh

This command will create the environment that needed by the models.
This project is created on the purposes of easy-on-run.
If you want to know the details about the models, just read code.

It takes about 10 minutes for one epoch, 50 minutes for five epoch. The results report by BERT paper

https://arxiv.org/pdf/1810.04805.pdf
System Dev F1 Test F1
ELMo+BiLSTM+CRF 95.7 92.2
CVT+Multi - 92.6
BERT_BASE 96.4 92.4
BERT_LARGE 96.6 92.8

The result this project get: bert-base-cased

             precision    recall  f1-score   support

        LOC     0.9271    0.9305    0.9288      1668
        ORG     0.8754    0.9055    0.8902      1661
        PER     0.9663    0.9573    0.9618      1617
       MISC     0.7803    0.8348    0.8066       702

avg / total     0.9049    0.9189    0.9117      5648

my device has a 1080Ti, if you use bert-large may have a memory problem, and I do not try.

Inference

from bert import Ner

model = Ner("out_!x/")

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"
        }
    ]
'''

Deploy REST-API

BERT NER model deployed as rest api In the run.sh file

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"
        }
    ]
}

a_ner-nerbert's People

Contributors

darr 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.