库名称: transformers
语言:
SyllaBERTa: 基于音节的古希腊语RoBERTa模型
SyllaBERTa是一款实验性基于Transformer的掩码语言模型(MLM),专为处理古希腊语文本设计,采用音节级分词。
该模型特别适用于处理涉及韵律、格律和押韵的任务。
模型概要
属性 |
值 |
基础架构 |
RoBERTa(自定义配置) |
词汇量 |
42,042个音节标记 |
隐藏层维度 |
768 |
层数 |
12 |
注意力头数 |
12 |
中间层维度 |
3,072 |
最大序列长度 |
514 |
预训练目标 |
掩码语言建模(MLM) |
优化器 |
AdamW |
损失函数 |
交叉熵(15%标记掩码概率) |
分词器是PreTrainedTokenizer
的自定义子类,基于音节而非单词或字符运作。
其功能包括:
- 为每个音节分配ID
- 支持双元音合并及希腊语正字法现象
- 使用空格分隔的音节标记
分词示例:
输入:
Κατέβην χθὲς εἰς Πειραιᾶ
标记:
['κα', 'τέ', 'βην', 'χθὲ', 'σεἰσ', 'πει', 'ραι', 'ᾶ']
注意单词在音节层面已融合。
使用示例
from transformers import AutoTokenizer, AutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained("Ericu950/SyllaBERTa", trust_remote_code=True)
model = AutoModelForMaskedLM.from_pretrained("Ericu950/SyllaBERTa", trust_remote_code=True)
text = "Κατέβην χθὲς εἰς Πειραιᾶ μετὰ Γλαύκωνος τοῦ Ἀρίστωνος"
tokens = tokenizer.tokenize(text)
print(tokens)
import random
tokens[random.randint(0, len(tokens)-1)] = tokenizer.mask_token
masked_text = tokenizer.convert_tokens_to_string(tokens)
inputs = tokenizer(masked_text, return_tensors="pt", padding=True, truncation=True)
inputs.pop("token_type_ids", None)
with torch.no_grad():
outputs = model(**inputs)
logits = outputs.logits
mask_token_index = (inputs['input_ids'] == tokenizer.mask_token_id).nonzero(as_tuple=True)[1]
top_tokens = logits[0, mask_token_index].topk(5, dim=-1).indices.squeeze(0)
predicted = tokenizer.convert_ids_to_tokens(top_tokens.tolist())
print("Top predictions:", predicted)
预期输出:
原始标记: ['κα', 'τέ', 'βην', 'χθὲ', 'σεἰσ', 'πει', 'ραι', 'ᾶ', 'με', 'τὰγ', 'λαύ', 'κω', 'νοσ', 'τοῦ', 'ἀ', 'ρίσ', 'τω', 'νοσ']
第6位置掩码
掩码文本: κα τέ βην χθὲ σεἰσ πει [MASK] ᾶ με τὰγ λαύ κω νοσ τοῦ ἀ ρίσ τω νοσ
掩码标记前5预测:
ραι (得分: 23.12)
ρα (得分: 14.69)
ραισ (得分: 12.63)
σαι (得分: 12.43)
ρη (得分: 12.26)
许可协议
MIT许可证。
作者
本作品是Eric Cullhed(乌普萨拉大学)与Albin Thörn Cleland(隆德大学)的持续研究成果。
致谢
计算资源由瑞典国家超级计算学术基础设施(NAISS)提供,部分资金来自瑞典研究理事会(资助协议号2022-06725)。