datasets:
- ElKulako/stocktwits-crypto
language:
- en
tags:
- 加密货币
- 加密资产
- BERT
- 情感分类
- 自然语言处理
- 比特币
- 以太坊
- 柴犬币
- 社交媒体
- 情感分析
- 加密货币情感分析
license: mit
学术引用请参考论文: https://ieeexplore.ieee.org/document/10223689
CryptoBERT
CryptoBERT是一个预训练的自然语言处理模型,专门用于分析加密货币相关社交媒体帖文的语言和情感。该模型基于vinai/bertweet-base语言模型,在加密货币领域进行了进一步训练,使用了超过320万条独特的加密货币相关社交媒体帖文作为语料库。
(详细研究论文将随后发布。)
分类训练
模型训练采用以下标签体系:"看跌": 0, "中性": 1, "看涨": 2
CryptoBERT的情感分类头在200万条标注的StockTwits帖文上进行了微调,数据采样自ElKulako/stocktwits-crypto数据集,并进行了平衡处理。
模型训练时设置的最大序列长度为128。技术上虽然可以处理最多514个token的序列,但不建议超过128的长度。
分类示例
from transformers import TextClassificationPipeline, AutoModelForSequenceClassification, AutoTokenizer
model_name = "ElKulako/cryptobert"
tokenizer = AutoTokenizer.from_pretrained(model_name, use_fast=True)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels = 3)
pipe = TextClassificationPipeline(model=model, tokenizer=tokenizer, max_length=64, truncation=True, padding = 'max_length')
post_1 = "明天见,迫不及待想看看艾达币早上的价格会是多少。😎🐂🤠💯😴,比特币看起来不错,冲过45k吧。"
post_2 = "好了各位,这是一场触底竞赛!祝今天好运,记住没有输家(除了那些投资没人真正使用的货币的人)各就各位...准备好了吗?开始!!"
post_3 = "我永远不会卖出。就算整个市场触底。如果需要,我会一直持有这个垃圾直到我死的那天。"
df_posts = [post_1, post_2, post_3]
preds = pipe(df_posts)
print(preds)
[{'label': 'Bullish', 'score': 0.8734585642814636}, {'label': 'Bearish', 'score': 0.9889495372772217}, {'label': 'Bullish', 'score': 0.6595883965492249}]
训练语料
CryptoBERT的训练使用了320万条关于各类加密货币的社交媒体帖文。仅考虑长度超过4个单词的非重复帖文。语料来源包括以下社区:
(1) StockTwits - 关于交易量前100加密货币的187.5万条帖文。数据收集时间为2021年11月1日至2022年6月16日。ElKulako/stocktwits-crypto
(2) Telegram - 来自前5大电报群的66.4万条消息:币安、Bittrex、火币全球站、库币、OKEx。数据时间范围为2020年11月16日至2021年1月30日。数据由Anton提供。
(3) Reddit - 来自各类加密货币投资讨论版的17.2万条评论,收集时间为2021年5月至2022年5月
(4) Twitter - 带有XBT、Bitcoin或BTC标签的49.6万条推文。收集时间为2018年5月。数据由Paul提供。