Skip to main content

A simple tool for Vietnamese Sentiment Analysis

Project description

A Simple Tool For Sentiment Analysis

Sentivi - a simple tool for sentiment analysis which is a wrapper of scikit-learn and PyTorch Transformers models (for more specific purpose, it is recommend to use native library instead). It is made for easy and faster pipeline to train and evaluate several classification algorithms.



  • Decision Tree
  • Gaussian Naive Bayes
  • Gaussian Process
  • Nearest Centroid
  • Support Vector Machine
  • Stochastic Gradient Descent
  • Character Convolutional Neural Network
  • Multi-Layer Perceptron
  • Long Short Term Memory
  • Text Convolutional Neural Network
  • Transformer
  • Ensemble
  • Lexicon-based

Text Encoders

  • One-hot
  • Bag of Words
  • Term Frequency - Inverse Document Frequency
  • Word2Vec
  • Transformer Tokenizer (for Transformer classifier only)
  • WordPiece
  • SentencePiece


  • Install legacy version from PyPI:

    pip install sentivi
  • Install latest version from source:

    git clone
    cd sentivi
    pip install .


from sentivi import Pipeline
from import DataLoader, TextEncoder
from sentivi.classifier import SVMClassifier
from sentivi.text_processor import TextProcessor

text_processor = TextProcessor(methods=['word_segmentation', 'remove_punctuation', 'lower'])

pipeline = Pipeline(DataLoader(text_processor=text_processor, n_grams=3),

train_results = pipeline(train='./data/', test='./data/')
_pipeline = Pipeline.load('./weights/pipeline.sentivi')

predict_results = _pipeline.predict(['hàng ok đầu tuýp có một số không vừa ốc siết. chỉ được một số đầu thôi .cần '
                                    'nhất đầu tuýp 14 mà không có. không đạt yêu cầu của mình sử dụng',
                                    'Son đẹpppp, mùi hương vali thơm nhưng hơi nồng, chất son mịn, màu lên chuẩn, '
print(f'Decoded results: {_pipeline.decode_polarity(predict_results)}')

Take a look at more examples in example/.

Pipeline Serving

Sentivi use FastAPI to serving pipeline. Simply run a web service as follows:

from sentivi import Pipeline, RESTServiceGateway

pipeline = Pipeline.load('./weights/pipeline.sentivi')
server = RESTServiceGateway(pipeline).get_server()
# pip install uvicorn python-multipart
uvicorn serving:server --host --port 8000

Access Swagger at or Redoc For example, you can use curl to send post requests:

curl --location --request POST '' \
     --form 'text=Son đẹpppp, mùi hương vali thơm nhưng hơi nồng'

# response
{ "polarity": 2, "label": "#POS" }

Deploy using Docker

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7

COPY . /app

ENV APP_MODULE=serving:server

RUN pip install -r requirements.txt
docker build -t sentivi .
docker run -d -p 8000:80 sentivi

Future Releases

  • Lexicon-based
  • CharCNN
  • Ensemble learning methods
  • Model serving (Back-end and Front-end)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sentivi-1.1.0.tar.gz (19.8 kB view hashes)

Uploaded source

Built Distribution

sentivi-1.1.0-py3-none-any.whl (27.2 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page