Skip to main content

This tool provides the state-of-the-art models for aspect term extraction (ATE), aspect polarity classification (APC), and text classification (TC).

Project description

PyABSA - Open Framework for Aspect-based Sentiment Analysis (paper)

PyPI - Python Version PyPI Downloads Downloads License Documentation Status

total views total views per week total clones total clones per week

PWC

Hi, there! Please star this repo if it helps you! Each Star helps PyABSA go further, many thanks. PyABSA is a free and open-source tool for everyone, but please do not forget to attach the (informal or formal) author information and project address in your works, products and publications, etc.

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.

Usage Examples

We have prepared many examples for different tasks. Please refer to Examples for more usage examples.

Installation

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
  1. Back to Reality: Leveraging Pattern-driven Modeling to Enable Affordable Sentiment Dependency Learning ( e.g., Fast-LSA, 2020)
  2. Learning for target-dependent sentiment based on local context-aware embedding ( e.g., LCA-Net, 2020)
  3. LCF: A Local Context Focus Mechanism for Aspect-Based Sentiment Classification ( e.g., LCF-BERT, 2019)
Aspect sentiment polarity classification & Aspect term extraction models
  1. A multi-task learning model for Chinese-oriented aspect polarity classification and aspect term extraction] ( e.g., Fast-LCF-ATEPC, 2020)
  2. (Arxiv) A multi-task learning model for Chinese-oriented aspect polarity classification and aspect term extraction

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     = {PyABSA: Open Framework for 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.)

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

pyabsa-2.4.1.post1-py3-none-any.whl (575.5 kB view details)

Uploaded Python 3

File details

Details for the file pyabsa-2.4.1.post1-py3-none-any.whl.

File metadata

  • Download URL: pyabsa-2.4.1.post1-py3-none-any.whl
  • Upload date:
  • Size: 575.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for pyabsa-2.4.1.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 105b5e50f286c2b0380c50d5b31a5c0949a832a5d69da2b4e8a8366f7683d686
MD5 cf235bfec6b5e1e24009391db9a9c434
BLAKE2b-256 2d26b51e61ac7bfbd73a3c3e217347726e9c84a4cc11a2d95fd5010a9123c688

See more details on using hashes here.

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