_______ _______ ______ _______ _______ _______ ______ __ __
| _ || || _ | | | | || || _ | | | | |
| |_| || ___|| | || |_ _| ____ | _____|| ___|| | || | |_| |
| || |___ | |_||_ | | |____| | |_____ | |___ | |_||_ | |
| _ | | ___|| __ | | | |_____ || ___|| __ || |
| |_| || |___ | | | | | | _____| || |___ | | | | | |
|_______||_______||___| |_| |___| |_______||_______||___| |_| |___|
BERT-serv provides FinBERT sentiment as a service. Send financial text via HTTP and get sentiment analysis back from these pretrained models.
โ Only this sentiment model is implemented at this time.
- FinBERT analysis made available on-demand to HTTP clients (no Python required!)
- Avoid adding PyTorch dependencies to other parts of your system
- Results are saved and can be queried
- Analysis requests are handled asynchronously
Install Docker Desktop if needed.
git clone https://github.com/daveminer/BERT-serv.git
cd BERT-serv
cp .env.dist .env
docker-compose up
BERT-serv is now running on local port 8000!
Send a POST request to the /sentiment/new/
path. A callback_url
may be specified in
the query parameters for asynchrous use cases and long-running sentiment analyses. This callback
will have a JSON object in the body with an array of the new sentiment record id
s: '{"ids": [95, 96]}'
The body of the POST request must be a list; the strings inside will be processed synchronously.
curl --request POST \
--url 'http://localhost:8000/sentiment/new/?callback_url=http%3A%2F%2Fweb%3A8000%2Fcallback%2Fsentiment%2Fnew%2F' \
--header 'Content-Type: application/json' \
--data '[
"there is a shortage of capital, and we need extra financing",
"year over year growth is increasing"
]'
Response defaults to HTML unless application/json
is specified in the Accept
header.
Make a GET request to the /sentiment/
path.
curl --request GET \
--url http://localhost:8000/sentiment/ \
--header 'Accept: application/json'
Add the index of the sentiment resource to the sentiment
path:
curl --request GET \
--url http://localhost:8000/sentiment/1/ \
--header 'Accept: application/json'
A comma-separated list of tags may be specified in the tags
query parameter.
The period
query parameter accepts an integer that specifies how many days back to look for sentiments.
The sentiment index controller uses Django's built in pagination.
The /sentiment/
path accepts page_size
and a page
query parameters.
The make services
command will start all of the services besides the app. This allows for the app to be started and stopped (with make app
) in the terminal for convenience during development.
Local development requires that the local environment is set up alongside the containerized services.
python3 -m virtualenv env
python3 -m venv .venv
source .venv/bin/activate
Notes:
make services
requires Docker Desktopmake deps
will install dependencies via pip3 and must be run beforemake app
. This can take a few minutes as the PyTorch dependencies are sizable.