1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/baidu-Senta

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.en.md

Senta

Senta — это библиотека на Python для решения множества задач анализа тональности. Она поддерживает выполнение таких задач, как классификация тональности предложений, классификация тональности аспектов и маркировка ролей мнений. Большая часть кода в этом репозитории используется для реализации SKEP: Sentiment Knowledge Enhanced Pre-training for Sentiment Analysis (Усиленное предварительное обучение с использованием знаний о тональности для анализа тональности). В статье показано, как интегрировать знания о тональности в предварительно обученные модели для изучения унифицированного представления тональности для множества задач анализа тональности.

Как использовать

Pip

Вы можете напрямую использовать пакет Python для прогнозирования задач анализа тональности, загрузив предварительно обученную модель SKEP.

Установка

  1. Senta поддерживает Python 3.6 или более позднюю версию. Для этого репозитория требуется PaddlePaddle 1.6.3, см. здесь инструкции по установке.

  2. Установите 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 - 
```

Установка

  1. Senta поддерживает Python 3.6 или более позднюю версию. Для этого репозитория требуется PaddlePaddle 1.6.3, см. здесь инструкции по установке.

  2. Установите зависимости Python

    python -m pip install -r requirements.txt
  3. Настройте переменные среды, такие как Python, CUDA, cuDNN, ... PaddlePaddle в файле env.sh

Подробности о переменных среды, связанных с PaddlePaddle, можно найти в документации PaddlePaddle по ссылке: https://www.paddlepaddle.org.cn/documentation/docs/en/1.6/flags_en.html.

Краткий обзор

  1. Обучение
sh ./script/run_pretrain_roberta_skep_large_en.sh # предобученная модель roberta_skep_large_en, которая используется в нашей статье
  1. Дообучение и предсказание
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 # предсказание
  1. Старая версия Senta доступна по ссылке: https://github.com/baidu/Senta/tree/v1, которая включает модели BoW, CNN и BiLSTM для китайской классификации предложений на уровне тональности.

Цитирование

Если вы расширяете или используете эту работу, пожалуйста, укажите ссылку на статью:

@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 )

Вы можете оставить комментарий после Вход в систему

Введение

Система анализа эмоций с открытым исходным кодом от Baidu. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/baidu-Senta.git
git@api.gitlife.ru:oschina-mirror/baidu-Senta.git
oschina-mirror
baidu-Senta
baidu-Senta
master