PyABSA - Open Framework for Aspect-based Sentiment Analysis
Try our demos on Huggingface Space
Apart from the paper, there are two new features in PyABSA: Aspect sentiment triplet extraction and Aspect quadruple extraction. We have deployed the demos on Huggingface Space, you can try them online.
- Aspect sentiment quadruple extraction (English) New feature
- Aspect sentiment triplet extraction (English) New feature
- (Gradio) Aspect term extraction & sentiment classification ( English, Chinese, Arabic, Dutch, French, Russian, Spanish, Turkish, etc.)
- (Prototype) Aspect term extraction & sentiment classification ( English, Chinese, Arabic, Dutch, French, Russian, Spanish, Turkish, etc.)
- Aspect-based sentiment classification (Multilingual) (English, Chinese, etc.)
Usage Examples
We have prepared many examples for different tasks. Please refer to Examples for more usage examples.
Installation
Install Anaconda (Optional)
Install Anaconda if you do not have it.
Create a new environment (Optional)
conda create -n pyabsa python=3.8
conda activate pyabsa
Install Pytorch
Install Pytorch following the official instructions. You need to select your environment, operating system, package, Python version, and CUDA version.
install via pip
To use PyABSA, install the latest version from pip or source code:
pip install -U pyabsa
install via source
git clone https://github.com/yangheng95/PyABSA --depth=1
cd PyABSA
python setup.py install
Quick-Start
Extract aspect terms and classify sentiments
from pyabsa import AspectTermExtraction as ATEPC, available_checkpoints
# you can view all available checkpoints by calling available_checkpoints()
checkpoint_map = available_checkpoints()
aspect_extractor = ATEPC.AspectExtractor('multilingual',
auto_device=True, # False means load model on CPU
cal_perplexity=True,
)
# instance inference
aspect_extractor.predict(['I love this movie, it is so great!'],
save_result=True,
print_result=True, # print the result
ignore_error=True, # ignore the error when the model cannot predict the input
)
inference_source = ATEPC.ATEPCDatasetList.Restaurant16
atepc_result = aspect_extractor.batch_predict(target_file=inference_source, #
save_result=True,
print_result=True, # print the result
pred_sentiment=True, # Predict the sentiment of extracted aspect terms
)
print(atepc_result)
Aspect-based sentiment analysis
from pyabsa import AspectPolarityClassification as APC, available_checkpoints
# you can view all available checkpoints by calling available_checkpoints()
checkpoint_map = available_checkpoints(show_ckpts=True)
classifier = APC.SentimentClassifier('multilingual',
auto_device=True, # False means load model on CPU
cal_perplexity=True,
)
# instance inference
classifier.predict(['I love this movie, it is so great!'],
save_result=True,
print_result=True, # print the result
ignore_error=True, # ignore the error when the model cannot predict the input
)
inference_source = APC.APCDatasetList.Laptop14
apc_result = classifier.batch_predict(target_file=inference_source, #
save_result=True,
print_result=True, # print the result
pred_sentiment=True, # Predict the sentiment of extracted aspect terms
)
print(apc_result)
Dataset Annotation and Model Training
please refer to the documentation: PyABSA Documentation. If you have any questions about the docs, please feel free to raise an issue. Also, you can join to improve the docs.
Notice
This repository is based on our papers for ABSA research. Here are the papers that you can cite or refer to for your implementations:
Aspect sentiment polarity classification models
- Back to Reality: Leveraging Pattern-driven Modeling to Enable Affordable Sentiment Dependency Learning ( e.g., Fast-LSA, 2020)
- Learning for target-dependent sentiment based on local context-aware embedding ( e.g., LCA-Net, 2020)
- LCF: A Local Context Focus Mechanism for Aspect-Based Sentiment Classification ( e.g., LCF-BERT, 2019)
Aspect sentiment polarity classification & Aspect term extraction models
If you are looking for the original proposal of local context focus, here are some introduction at here.
Citation
@article{YangL22,
author = {Heng Yang and
Ke Li},
title = {A Modularized Framework for Reproducible Aspect-based Sentiment Analysis},
journal = {CoRR},
volume = {abs/2208.01368},
year = {2022},
url = {https://doi.org/10.48550/arXiv.2208.01368},
doi = {10.48550/arXiv.2208.01368},
eprinttype = {arXiv},
eprint = {2208.01368},
timestamp = {Tue, 08 Nov 2022 21:46:32 +0100},
biburl = {https://dblp.org/rec/journals/corr/abs-2208-01368.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
Contribution
This repository is developed and maintained by HENG YANG (yangheng95@GitHub), with great contribution from community researchers. We expect that you can help us improve this project, and your contributions are welcome. You can make a contribution in many ways, including:
- Share your custom dataset in PyABSA and ABSADatasets
- Integrates your models in PyABSA. (You can share your models whether it is or not based on PyABSA. if you are interested, we will help you)
- Raise a bug report while you use PyABSA or review the code (PyABSA is a individual project driven by enthusiasm so your help is needed)
- Give us some advice about feature design/refactor (You can advise to improve some feature)
- Correct/Rewrite some error-messages or code comment (The comments are not written by native english speaker, you can help us improve documents)
- Create an example script in a particular situation (Such as specify a SpaCy model, pretrained-bert type, some hyper-parameters)
- Star this repository to keep it active
License
PyABSA is released under MIT licence, please cite this repo (or papers) or attach the author information in your work (repository, blog, product, etc.)