Senta — это библиотека на Python для решения множества задач анализа тональности. Она поддерживает выполнение таких задач, как классификация тональности предложений, классификация тональности аспектов и маркировка ролей мнений. Большая часть кода в этом репозитории используется для реализации SKEP: Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis (Усиленное предварительное обучение с использованием знаний о тональности для анализа тональности). В статье показано, как интегрировать знания о тональности в предварительно обученные модели для изучения унифицированного представления тональности для множества задач анализа тональности.
Вы можете напрямую использовать пакет Python для прогнозирования задач анализа тональности, загрузив предварительно обученную модель SKEP.
Senta поддерживает Python 3.6 или более позднюю версию. Для этого репозитория требуется PaddlePaddle 1.6.3, см. здесь инструкции по установке.
Установите Senta:
python -m pip install Senta
Или
git clone https://github.com/baidu/Senta.git
cd Senta
python -m pip install .
```python
from senta import Senta
my_senta = Senta()
# получить предварительно обученную модель, мы предоставляем три предварительно обученных модели, все из которых основаны на SKEP
print(my_senta.get_support_model()) # ["ernie_1.0_skep_large_ch", "ernie_2.0_skep_large_en", "roberta_skep_large_en"]
# ernie_1.0_skep_large_ch, китайская предварительно обученная модель skep, основанная на ERNIE 1.0 large.
# ernie_2.0_skep_large_en, английская предварительно обученная модель skep, основанная на ERNIE 2.0 large.
# roberta_skep_large_en, английская предварительно обученная модель skep, основанная на RoBERTa large, которая используется в нашей статье.
# получить поддерживаемую задачу
print(my_senta.get_support_task()) # ["sentiment_classify", "aspect_sentiment_classify", "extraction"]
use_cuda = True # установить True или False
# прогнозировать разные задачи
my_senta.init_model(model_class="roberta_skep_large_en", task="sentiment_classify", use_cuda=use_cuda)
texts = ["a sometimes tedious film ."]
result = my_senta.predict(texts)
print(result)
my_senta.init_model(model_class="roberta_skep_large_en", task="aspect_sentiment_classify", use_cuda=use_cuda)
texts = ["I love the operating system and the preloaded software."]
aspects = ["operating system"]
result = my_senta.predict(texts, aspects)
print(result)
my_senta.init_model(model_class="roberta_skep_large_en", task="extraction", use_cuda=use_cuda)
texts = ["The JCC would be very pleased to welcome your organization as a corporate sponsor ."]
result = my_senta.predict(texts)
print(result)
```
Вы можете использовать исходный код для выполнения предварительного обучения и точной настройки задач. В папке config есть различные файлы, которые помогут вам воспроизвести результаты нашей статьи.
```shell
# скачать код
git clone https://github.com/baidu/Senta.git
# загрузить предварительно обученную модель skep
cd ./Senta/model_files
sh download_roberta_skep_large_en.sh # скачать модель roberta_skep_large_en. Для других предварительно обученных моделей skep вы можете найти их в этой папке.
cd -
# скачать набор данных задачи
cd ./Senta/data/
sh download_en_data.sh # скачать англоязычный набор данных, используемый в нашей статье. Китайский набор данных можно найти в сценарии загрузки в этой папке.
cd -
```
Senta поддерживает Python 3.6 или более позднюю версию. Для этого репозитория требуется PaddlePaddle 1.6.3, см. здесь инструкции по установке.
Установите зависимости Python
python -m pip install -r requirements.txt
Настройте переменные среды, такие как Python, CUDA, cuDNN, ... PaddlePaddle в файле env.sh
Подробности о переменных среды, связанных с PaddlePaddle, можно найти в документации PaddlePaddle по ссылке: https://www.paddlepaddle.org.cn/documentation/docs/en/1.6/flags_en.html.
Краткий обзор
sh ./script/run_pretrain_roberta_skep_large_en.sh # предобученная модель roberta_skep_large_en, которая используется в нашей статье
sh ./script/run_train.sh ./config/roberta_skep_large_en.SST-2.cls.json # дообучение на SST-2
sh ./script/run_infer.sh ./config/roberta_skep_large_en.SST-2.infer.json # предсказание
sh ./script/run_train.sh ./config/roberta_skep_large_en.absa_laptops.cls.json # дообучение на ABSA (ноутбуки)
sh ./script/run_infer.sh ./config/roberta_skep_large_en.absa_laptops.infer.json # предсказание
sh ./script/run_train.sh ./config/roberta_skep_large_en.MPQA.orl.json # дообучение на MPQA 2.0
sh ./script/run_infer.sh ./config/roberta_skep_large_en.MPQA.infer.json # предсказание
Если вы расширяете или используете эту работу, пожалуйста, укажите ссылку на статью:
@inproceedings{tian-etal-2020-skep,
title = "{SKEP}: Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis",
author = "Tian, Hao and
Gao, Can and
Xiao, Xinyan and
Liu, Hao and
He, Bolei and
Wu, Hua and
Wang, Haifeng and
wu, feng",
booktitle = "Proceedings of the 58th Annual Meeting of the Association for Computational Linguistics",
month = jul,
year = "2020",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2020.acl-main.374",
pages = "4067--4076",
abstract = "Recently, sentiment analysis has seen remarkable advance with the help of pre-training approaches. However, sentiment knowledge, such as sentiment words and aspect-sentiment pairs, is ignored in the process of pre-training, despite the fact that they are widely used in traditional sentiment analysis approaches. In this paper, we introduce Sentiment Knowledge Enhanced Pre-training (SKEP) in order to learn a unified sentiment representation for multiple sentiment analysis tasks. With the help of automatically-mined knowledge, SKEP conducts sentiment masking and constructs three sentiment knowledge prediction objectives, so as to embed sentiment information at the word, polarity and aspect level into pre-trained sentiment representation. In particular, the prediction of aspect-sentiment pairs is converted into multi-label classification, aiming to capture the dependency between words in a pair. Experiments on three kinds of sentiment tasks show that SKEP significantly outperforms strong pre-training baseline, and achieves new state-of-the-art results on most of the test datasets. We release our code at https://github.com/baidu/Senta."
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )