语言:
- tr
缩略图:
标签:
- gpt2
- 土耳其语
- AI写作
- 微调
许可证: apache-2.0
数据集:
- 土耳其语维基百科
- 自定义书籍语料库
评估指标:
- 困惑度
- 准确率
示例:
- 文本: "从前有个有球但没有狗的孩子。在公园里"
上下文: ''
- 文本: "他久久地望向海滩。思绪中"
上下文: ''
- 文本: "很久以前,在银河系的一个遥远角落..."
上下文: ''
- 文本: "'今天我感觉很不舒服' 他说。面前"
上下文: ''
基于GPT2-Small的土耳其语AI写作模型
土耳其语人工智能作家
模型描述
此模型是gpt2-small-turkish微调版本的增强版。除了2020年10月28日的土耳其语维基百科文章转储外,该模型还训练了超过400部土耳其语经典小说和戏剧(包括陀思妥耶夫斯基、莎士比亚、大仲马的作品)。
基础工作基于Pierre Guillou的教程(页面链接:https://github.com/piegu/fastai-projects/blob/master/finetuning-English-GPT2-any-language-Portuguese-HuggingFace-fastaiv2.ipynb)。
注意,由于土耳其语与英语的差异大于葡萄牙语,因此训练了最后3层而非最后2层。
代码已转换为适用于Fastai 2.X版本,并使用Google Colab进行训练。
当前准确率36.3%,困惑度:44.75
演示(使用CPU推理)可在以下网址获取:http://www.metayazar.com
可用模型包括:
- [gpt2-small-tuned-tr] (https://huggingface.co/gorkemgoknar/gpt2-small-turkish)
- [gpt2-small-turkish-writer] (https://huggingface.co/gorkemgoknar/gpt2-turkish-writer)
预期用途与限制
使用方法
安装
from transformers import AutoTokenizer, AutoModelWithLMHead
import torch
tokenizer = AutoTokenizer.from_pretrained("gorkemgoknar/gpt2-turkish-writer")
model = AutoModelWithLMHead.from_pretrained("gorkemgoknar/gpt2-turkish-writer")
tokenizer.model_max_length=1024
model.eval()
生成单个词
text = "这篇文章由电脑写成。"
inputs = tokenizer(text, return_tensors="pt")
outputs = model(**inputs, labels=inputs["input_ids"])
loss, logits = outputs[:2]
predicted_index = torch.argmax(logits[0, -1, :]).item()
predicted_text = tokenizer.decode([predicted_index])
print('输入文本:', text)
print('预测文本:', predicted_text)
生成完整序列
text = "这篇文章由电脑写成。"
inputs = tokenizer(text, return_tensors="pt")
sample_outputs = model.generate(inputs.input_ids,
pad_token_id=50256,
do_sample=True,
max_length=50,
top_k=40,
num_return_sequences=1)
for i, sample_output in enumerate(sample_outputs):
print(">> 生成文本 {}\n\n{}".format(i+1, tokenizer.decode(sample_output.tolist())))
限制与偏差
该模型的训练数据来自土耳其语维基百科和书籍。我们知道其中包含大量来自互联网的未过滤内容,远非中立。此外,书籍的预处理较少,因此在某些情况下可以看到章节名称和页码。这是一项正在进行的工作。
训练数据
截至2020年10月28日的土耳其语维基百科文章转储
超过400部经典小说的土耳其语书籍数据集
训练过程
评估结果
周期 |
训练损失 |
验证损失 |
准确率 |
困惑度 |
时间 |
0 |
4.497828 |
4.549605 |
0.277328 |
94.595070 |
2:09:58 |
1 |
4.503929 |
4.519456 |
0.275071 |
91.785645 |
2:04:30 |
2 |
3.612716 |
3.921146 |
0.344802 |
50.458256 |
2:03:22 |
3 |
3.777645 |
4.072006 |
0.326130 |
58.674530 |
1:56:14 |
4 |
2.934462 |
3.801303 |
0.363719 |
44.759476 |
1:58:55 |
注:使用了1cycle规则训练,各周期时间不同。