/ Модель

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

Контекст
514 токенов
Параметры
152 млн
Лицензия
MIT
Архитектура
roberta · dense
Опубликована
2 мар 2022

twitter-roberta-base-dec2021

Заполнение пропусковТекст → текст3 профессии

Англоязычная RoBERTa-base, обученная на твитах до декабря 2021 года, для предсказания пропущенных токенов и получения представлений текста Twitter.

348скачиваний за 30 дней0лайковвеса обновлены10 окт 2022

Бенчмарки

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

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

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

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

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

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

cardiffnlp/twitter-roberta-base-dec2021 — языковая модель RoBERTa-base, обученная на 123,86 млн твитов, опубликованных до конца декабря 2021 года. Она разработана Cardiff NLP и предназначена для работы с текстом Twitter; архитектура — RoBERTa для предсказания замаскированных токенов, размер по метаданным — 151,8 млн параметров, контекст — до 514 токенов. Модель принимает английский текст и может заполнять пропуски в тексте, а также использоваться для получения представлений твитов.

Для предобработки авторы рекомендуют заменять имена пользователей на «@user», а ссылки — на «http». Репозиторий содержит веса PyTorch и распространяется по лицензии MIT. Обучение на твитах до декабря 2021 года означает, что модель отражает язык и знания этого временного периода; она не предназначена для генерации развернутых ответов или актуальных сведений.

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

  • подстановка пропущенного слова в тексте твита
  • сравнение вероятностей вариантов продолжения твита
  • получение представлений английских твитов для последующего анализа
  • анализ лексики и формулировок Twitter до конца 2021 года

Ограничения

Модель обучена на твитах только до конца декабря 2021 года, поэтому может хуже работать с более поздней лексикой и событиями. Для предобработки авторы рекомендуют заменять имена пользователей на «@user», а ссылки — на «http».

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

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

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

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

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

Открыть на Hugging Face

Twitter December 2021 (RoBERTa-base, 124M)

This is a RoBERTa-base model trained on 123.86M tweets until the end of December 2021. More details and performance scores are available in the TimeLMs paper.

Below, we provide some usage examples using the standard Transformers interface. For another interface more suited to comparing predictions and perplexity scores between models trained at different temporal intervals, check the TimeLMs repository.

For other models trained until different periods, check this table.

Preprocess Text

Replace usernames and links for placeholders: "@user" and "http". If you're interested in retaining verified users which were also retained during training, you may keep the users listed here.

def preprocess(text):
    preprocessed_text = []
    for t in text.split():
        if len(t) > 1:
            t = '@user' if t[0] == '@' and t.count('@') == 1 else t
            t = 'http' if t.startswith('http') else t
        preprocessed_text.append(t)
    return ' '.join(preprocessed_text)

Example Masked Language Model

from transformers import pipeline, AutoTokenizer

MODEL = "cardiffnlp/twitter-roberta-base-dec2021"
fill_mask = pipeline("fill-mask", model=MODEL, tokenizer=MODEL)
tokenizer = AutoTokenizer.from_pretrained(MODEL)

def pprint(candidates, n):
    for i in range(n):
        token = tokenizer.decode(candidates[i]['token'])
        score = candidates[i]['score']
        print("%d) %.5f %s" % (i+1, score, token))

texts = [
    "So glad I'm <mask> vaccinated.",
    "I keep forgetting to bring a <mask>.",
    "Looking forward to watching <mask> Game tonight!",
]

for text in texts:
    t = preprocess(text)
    print(f"{'-'*30}\n{t}")
    candidates = fill_mask(t)
    pprint(candidates, 5)

Output:

------------------------------
So glad I'm <mask> vaccinated.
1) 0.33211  fully
2) 0.26205  not
3) 0.22305  getting
4) 0.03790  still
5) 0.01817  all
------------------------------
I keep forgetting to bring a <mask>.
1) 0.04808  mask
2) 0.04628  book
3) 0.03597  lighter
4) 0.03391  pen
5) 0.02982  knife
------------------------------
Looking forward to watching <mask> Game tonight!
1) 0.34191  Squid
2) 0.23768  the
3) 0.15699  The
4) 0.02766  End
5) 0.01233  this

Example Tweet Embeddings

from transformers import AutoTokenizer, AutoModel, TFAutoModel
import numpy as np
from scipy.spatial.distance import cosine
from collections import Counter

def get_embedding(text):  # naive approach for demonstration
  text = preprocess(text)
  encoded_input = tokenizer(text, return_tensors='pt')
  features = model(**encoded_input)
  features = features[0].detach().cpu().numpy() 
  return np.mean(features[0], axis=0) 


MODEL = "cardiffnlp/twitter-roberta-base-dec2021"
tokenizer = AutoTokenizer.from_pretrained(MODEL)
model = AutoModel.from_pretrained(MODEL)

query = "The book was awesome"
tweets = ["I just ordered fried chicken 🐣", 
          "The movie was great",
          "What time is the next game?",
          "Just finished reading 'Embeddings in NLP'"]

sims = Counter()
for tweet in tweets:
    sim = 1 - cosine(get_embedding(query), get_embedding(tweet))
    sims[tweet] = sim

print('Most similar to: ', query)
print(f"{'-'*30}")
for idx, (tweet, sim) in enumerate(sims.most_common()):
    print("%d) %.5f %s" % (idx+1, sim, tweet))

Output:

Most similar to:  The book was awesome
------------------------------
1) 0.99004 The movie was great
2) 0.96320 Just finished reading 'Embeddings in NLP'
3) 0.95858 I just ordered fried chicken 🐣
4) 0.95356 What time is the next game?

Example Feature Extraction

from transformers import AutoTokenizer, AutoModel, TFAutoModel
import numpy as np

MODEL = "cardiffnlp/twitter-roberta-base-dec2021"
tokenizer = AutoTokenizer.from_pretrained(MODEL)

text = "Good night 😊"
text = preprocess(text)

# Pytorch
model = AutoModel.from_pretrained(MODEL)
encoded_input = tokenizer(text, return_tensors='pt')
features = model(**encoded_input)
features = features[0].detach().cpu().numpy() 
features_mean = np.mean(features[0], axis=0) 
#features_max = np.max(features[0], axis=0)

# # Tensorflow
# model = TFAutoModel.from_pretrained(MODEL)
# encoded_input = tokenizer(text, return_tensors='tf')
# features = model(encoded_input)
# features = features[0].numpy()
# features_mean = np.mean(features[0], axis=0) 
# #features_max = np.max(features[0], axis=0)

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
RobertaForMaskedLM
Ревизия весов
679c131

0 моделей