/ Модель

Характеристики

Контекст
512 токенов
Параметры
129 млн
Лицензия
Apache 2.0
Архитектура
bert · dense
Опубликована
15 мар 2024

Chinese-Sentiment-Analysis-Fund-Direction

Классификация текстаТекст → label3 профессии

Китайскоязычный BERT-классификатор определяет положительную, отрицательную или нейтральную тональность текстов о фондах.

29скачиваний за 30 дней10лайковвеса обновлены15 мар 2024

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Модель sanshizhang/Chinese-Sentiment-Analysis-Fund-Direction — китайскоязычный классификатор тональности текстов о фондах, разработанный автором репозитория. Это плотная архитектура BERT с головой BertForSequenceClassification, примерно 129,5 млн параметров и контекстом до 512 токенов; веса представлены в формате PyTorch. Модель относит текст к одному из трёх классов: отрицательный, положительный или нейтральный.

Модель предназначена для анализа тональности китайских текстов, связанных с фондами, например для разметки отзывов и сообщений инвесторов или мониторинга настроений. В README указана точность 0,938 на валидационной выборке из 15 118 примеров. Автор отмечает, что отрицательные тексты обрабатывались специалистами, а качество распознавания нейтральных текстов может быть ниже ожидаемого.

Модель построена на основе BERT и дообучена для классификации последовательностей; конкретная базовая модель в карточке не названа. Лицензия — Apache-2.0. Результаты оценки относятся к указанной в README выборке и не гарантируют такого же качества на других источниках или типах финансовых текстов.

Сценарии применения

  • Определение тональности отзывов о фондах на китайском языке
  • Разметка сообщений инвесторов по положительному, отрицательному и нейтральному настрою
  • Мониторинг настроений в обсуждениях фондов
  • Фильтрация негативных отзывов о финансовых продуктах

Ограничения

Автор предупреждает, что нейтральные тексты могут классифицироваться неточно; оценка качества приведена только для валидационной выборки. Контекст ограничен 512 токенами.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

验证集准确度: 0.9382193411826961 验证集分类报告: precision recall f1-score support

    negative       0.93      0.95      0.94      3785
    positive       0.95      0.96      0.95      6919
     neutral       0.93      0.89      0.91      4414

    accuracy                           0.94     15118
   macro avg       0.94      0.93      0.93     15118
weighted avg       0.94      0.94      0.94     15118

大概使用了10w+的数据做了一个基金方面的中文情感分析模型,暂时测试下来还可以,负面方面的文本是有专人处理过的,中性的可能不准确。

返回值解释:

0: 'negative', 1: 'positive', 2: 'neutral'

测试代码如下:

import sys
import re
import torch
from transformers import BertTokenizer, BertForSequenceClassification
from torch.nn.functional import softmax

#设定使用CPU或CUDA
device = 'cuda' if torch.cuda.is_available() else 'cpu'

#载入预先保存的模型和分词器
model = BertForSequenceClassification.from_pretrained('sanshizhang/Chinese-Sentiment-Analysis-Fund-Direction')
tokenizer = BertTokenizer.from_pretrained('sanshizhang/Chinese-Sentiment-Analysis-Fund-Direction')

#确保模型在正确的设备上
model = model.to(device)
model.eval()  # 把模型设置为评估模式

#函数定义:进行预测并返回预测概率
def predict_sentiment(text):
    # 编码文本数据
    encoding = tokenizer.encode_plus(
        text,
        max_length=512,
        add_special_tokens=True,
        return_token_type_ids=False,
        padding='max_length',  # 修改此处
        return_attention_mask=True,
        return_tensors='pt',
        truncation=True
    )
    
    
    # 取出输入对应的编码
    input_ids = encoding['input_ids'].to(device)
    attention_mask = encoding['attention_mask'].to(device)
    
    # 不计算梯度
    with torch.no_grad():
    # 产生情感预测的logits
    outputs = model(input_ids=input_ids, attention_mask=attention_mask)
    
    # 使用softmax将logits转换为概率
    probs = softmax(outputs.logits, dim=1)

    # 返回概率和预测的类别
    return probs, torch.argmax(probs, dim=1).cpu().numpy()[0]

#从命令行参数获取文本,合并并清理特殊字符
arguments = sys.argv[1:]  # 忽略脚本名称
text = ' '.join(arguments)  # 合并为单一字符串
text = re.sub(r"[^\u4e00-\u9fff\d.a-zA-Z%+\-。!?,、;:()【】《》“”‘’]", '', text)  # 去除特殊字符

#print(f"传过来的文本是: {text}")
#进行预测
probabilities, prediction = predict_sentiment(text)

sentiment_labels = {0: 'negative', 1: 'positive', 2: 'neutral'}

#打印出预测的情感及其概率
predicted_sentiment = sentiment_labels[prediction]
print(f"Predicted sentiment: {predicted_sentiment},Probability:{probabilities[0][prediction].item()}")
#print(f"Probability: {probabilities[0][prediction].item()}")

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · text-classification

Можно запустить

Подбираем GPU…

Класс архитектуры
BertForSequenceClassification
Ревизия весов
d6bd910

0 моделей