🚀 基於GPT2-Small的土耳其語AI寫作器
本項目是一個基於GPT2-Small的土耳其語AI寫作器,通過對模型進行微調,使其能夠生成高質量的土耳其語文本。它在維基百科土耳其語文章和大量經典小說、戲劇語料上進行訓練,具有一定的文本生成能力。
✨ 主要特性
- 基於GPT2-Small模型進行微調,增強了土耳其語的文本生成能力。
- 使用了超過400本土耳其語經典小說和戲劇進行訓練,包括陀思妥耶夫斯基、莎士比亞、大仲馬等作家的作品。
- 訓練代碼適配Fastai 2.X,並在Google Colab上進行訓練。
- 提供了模型的使用示例,包括安裝、單字生成和完整序列生成。
📦 安裝指南
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()
💻 使用示例
基礎用法
生成1個單詞
text = "Bu yazıyı bilgisayar yazdı."
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('input text:', text)
print('predicted text:', predicted_text)
高級用法
生成完整序列
text = "Bu yazıyı bilgisayar yazdı."
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(">> Generated text {}\n\n{}".format(i+1, tokenizer.decode(sample_output.tolist())))
📚 詳細文檔
模型描述
此模型是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
模型可在以下鏈接獲取:
預期用途和侷限性
侷限性和偏差
該模型使用的訓練數據來自土耳其維基百科和書籍。我們知道這些數據包含了大量來自互聯網的未經過濾的內容,遠非中立。此外,由於對書籍的預處理工作不多,在某些情況下可能會看到章節名稱和頁碼。這是一個正在進行的工作。
訓練數據
- 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規則進行訓練,且各輪次的訓練時間不同。
📄 許可證
本項目採用Apache-2.0許可證。