BERTweet 项目简介
BERTweet 是首个专门为英文推文预训练的大规模公开语言模型。该模型基于 RoBERTa 的预训练方法进行训练,使用了包含8.5亿条英文推文的大型语料库(约80GB,包含160亿个单词)。其中,包含从2012年1月至2019年8月间流出的约8.45亿条推文,以及与 COVID-19 疫情相关的500万条推文。
主要成果
BERTweet 在多项自然语言处理任务中展示了其卓越的性能,如词性标注、命名实体识别、情感分析及讽刺检测等。这些成果在相关领域的研究中具有重要意义,充分体现了预训练语言模型在推文数据处理中的潜力。
使用 BERTweet 与 Transformers
安装
要使用 BERTweet 可以通过以下步骤安装 Transformers 库:
- 使用 pip 安装:
pip install transformers
- 也可以从源码安装
- 为了使用更快的分词器,用户可以从特定分支克隆代码并安装
此外,还需要安装 tokenizers:pip3 install tokenizers
预训练模型
BERTweet 提供了多种不同参数规模和预训练数据的模型:
vinai/bertweet-base
,参训了8.5亿条有大小写区分的推文vinai/bertweet-covid19-base-cased
和vinai/bertweet-covid19-base-uncased
,进一步在2300万条 COVID-19 相关推文上进行训练vinai/bertweet-large
,具有更大参数规模和更长的推文处理长度
示例用法
以下是一个简单的示例,展示如何使用 BERTweet 进行推文的特征提取:
import torch
from transformers import AutoModel, AutoTokenizer
bertweet = AutoModel.from_pretrained("vinai/bertweet-large")
tokenizer = AutoTokenizer.from_pretrained("vinai/bertweet-large")
line = "DHEC confirms HTTPURL via @USER :crying_face:"
input_ids = torch.tensor([tokenizer.encode(line)])
with torch.no_grad():
features = bertweet(input_ids)
规范化原始输入推文
在应用 Byte-Pair Encoding (BPE) 算法之前,BERTweet 通过 TweetTokenizer 和 emoji 包规范化推文,将用户账号和网址/链接分别转换为特殊标记 @USER
和 HTTPURL
。因此,在使用 BERTweet 处理原始推文时,建议进行相同的预处理。
可以通过安装 nltk 和特定版本的 emoji 包来实现:
pip3 install nltk emoji==0.6.0
规范化示例代码:
from TweetNormalizer import normalizeTweet
line = normalizeTweet("DHEC confirms https://postandcourier.com/... via @postandcourier 😢")
input_ids = torch.tensor([tokenizer.encode(line)])
使用 BERTweet 与 fairseq
用户可以参阅更多关于如何与 fairseq 库结合使用的详细信息。
许可证
BERTweet 项目采用 MIT 许可证授权,允许用户自由使用、复制和修改该软件。