/ Модель

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

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

twitter-roberta-base-2019-90m

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

Англоязычная RoBERTa, обученная на 90 млн твитов до конца 2019 года, для заполнения пропусков и анализа текста Twitter.

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

Бенчмарки

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

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

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

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

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

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

CardiffNLP Twitter RoBERTa-base — англоязычная модель семейства RoBERTa, обученная на 90 млн твитов, опубликованных до конца 2019 года. Она предназначена прежде всего для предсказания пропущенных токенов в тексте и анализа языка Twitter; карточка также показывает пример получения эмбеддингов твитов. Модель содержит 151,8 млн параметров, использует архитектуру RobertaForMaskedLM и принимает последовательности длиной до 514 токенов.

Модель подходит для восстановления замаскированных слов и извлечения представлений твитов. Для предобработки авторы рекомендуют заменять имена пользователей на @user, а ссылки — на http. Веса доступны в формате PyTorch по лицензии MIT. Поскольку обучение ограничено твитами до конца 2019 года, модель может хуже отражать более поздний язык и лексику платформы; её доменная специализация также ограничивает перенос на тексты других типов.

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

  • предсказание пропущенных слов в твитах
  • получение эмбеддингов для твитов
  • анализ англоязычных сообщений Twitter
  • сравнение языковых предсказаний моделей, обученных на данных разных периодов

Ограничения

Обучающие данные охватывают твиты только до конца 2019 года, поэтому лексика и языковые особенности более поздних периодов могут отражаться хуже. Модель специализирована на Twitter и может хуже переноситься на тексты других жанров.

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

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

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

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

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

Открыть на Hugging Face

Twitter 2021 90M (RoBERTa-base)

This is a RoBERTa-base model trained on 90M tweets until the end of 2019. 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-2019-90m"
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.28870  getting
2) 0.28611  not
3) 0.15485  fully
4) 0.07357  self
5) 0.01812  being
------------------------------
I keep forgetting to bring a <mask>.
1) 0.12194  book
2) 0.04396  pillow
3) 0.04202  bag
4) 0.03038  wallet
5) 0.02729  charger
------------------------------
Looking forward to watching <mask> Game tonight!
1) 0.65505  End
2) 0.19230  The
3) 0.03856  the
4) 0.01223  end
5) 0.00978  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-2019-90m"
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.99078 The movie was great
2) 0.96701 Just finished reading 'Embeddings in NLP'
3) 0.96037 I just ordered fried chicken 🐣
4) 0.95919 What time is the next game?

Example Feature Extraction

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

MODEL = "cardiffnlp/twitter-roberta-base-2019-90m"
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
Ревизия весов
cf7ba82

0 моделей