# Turkish Tokenizer
[](https://badge.fury.io/py/turkish-tokenizer)
[](https://www.python.org/downloads/release/python-380/)
[](https://opensource.org/licenses/MIT)
Dilbilim kurallarını temel alarak, çok dilli metinleri işlemek ve anlam bütünlüğünü korumak için gelişmiş bir tokenizer altyapısı.
## Kurulum
### PyPI üzerinden kurulum (Önerilen)
```bash
pip install turkish-tokenizer
```
### Geliştirme için kurulum
```bash
git clone https://github.com/malibayram/turkish-tokenizer.git
cd turkish-tokenizer
pip install -e .
```
## Hızlı Başlangıç
### Temel Tokenizer Kullanımı
```python
from turkish_tokenizer import TurkishTokenizer
# Tokenizer'ı başlat
tokenizer = TurkishTokenizer()
# Metin tokenizasyonu
text = "Merhaba dünya! Nasılsınız?"
tokens = tokenizer.encode(text)
print("Token IDs:", tokens)
# Token'ları metne geri çevir
decoded_text = tokenizer.decode(tokens)
print("Decoded:", decoded_text)
```
### Gelişmiş Tokenizasyon
```python
from turkish_tokenizer import TurkishTokenizer
# Tokenizer'ı başlat
tokenizer = TurkishTokenizer()
# Tokenları string olarak al
text = "Kitapları masa üzerinde bıraktım."
tokens = tokenizer.tokenize(text)
print("Tokens:", tokens)
# Token tiplerini öğren
token_details, _ = tokenizer.tokenize_text(text)
for token in token_details:
print(f"Token: '{token['token']}', ID: {token['id']}, Type: {token['type']}")
```
## İlk Versiyon
- [x] Kelime köklerinin ses olayına uğramış olan hallerinin ses olayına uğramamış olan halleri ile aynı id ile temsil edilmesi
- [x] İlkHarfBüyük tokeni oluşturulması ve tüm tokenlerin ilk harfinin küçük harfe çevrilmesi
- [x] Çoğul tokeni oluşturulması ve ler - lar eklerinin silinmesi
- [x] Tamamen aynı olan ama sesleri farklı olan eklerin özel tokenler ile temsil edilmesi
- [x] Boşluk, satır sonu ve tab karakterlerinin özel tokenler ile temsil edilmesi
## Gelecek Özellikler
- [ ] Çok dilli destek
- [ ] Performans optimizasyonları
- [ ] Daha kapsamlı test senaryoları
- [ ] Web API desteği
- [ ] Docker entegrasyonu
## GitHub Actions Setup
This project uses GitHub Actions for automated testing and publishing to PyPI. To set up automated publishing:
### 1. Add PyPI API Token to GitHub Secrets
1. Go to your GitHub repository settings
2. Navigate to "Secrets and variables" → "Actions"
3. Add the following secrets:
- `PYPI_API_TOKEN`: Your PyPI API token (starts with `pypi-`)
- `TEST_PYPI_API_TOKEN`: Your TestPyPI API token (optional)
### 2. Publishing Workflow
The project will automatically publish to PyPI when:
- A new version tag is pushed (e.g., `v0.2.1`)
- The workflow is manually triggered from GitHub Actions
### 3. Testing Workflow
Tests run automatically on:
- Every push to `main` or `develop` branches
- Every pull request to `main` branch
---
## Projenin Amacı ve Kapsamı
Bu projenin amacı, metin analizi ve doğal dil işleme (NLP) süreçlerinde kullanılabilecek, dilbilgisel yapıları ve anlam bütünlüğünü dikkate alan bir tokenizer geliştirmektir. Proje, Türkçe dilbilgisi kurallarını referans alarak başlamış olsa da, evrensel dil kuralları doğrultusunda çok dilli bir yapıya sahip olacak şekilde genişletilecektir.
## Temel Özellikler
- Dilbilim kurallarına dayalı tokenizasyon
- Morfolojik analiz desteği
- Çok dilli destek altyapısı
- Genişletilebilir mimari
- Yüksek performanslı işleme
- Özel karakter ve boşluk işleme desteği
## Dosya Yapısı
Tokenizer üç temel sözlük dosyası kullanır:
- `kokler.json`: Kök kelimeler ve özel tokenler (0-20000 arası ID'ler)
- `ekler.json`: Ekler (20000-20256 arası ID'ler)
- `bpe_tokenler.json`: BPE token'ları
### Özel Tokenler
```json
{
"<uppercase>": 0, // Büyük harf işareti
"<unknown>": 1, // Bilinmeyen token
" ": 2, // Boşluk karakteri
"\n": 3, // Satır sonu
"\t": 4, // Tab karakteri
"<pad>": 5, // Padding token
"<eos>": 6 // End of sequence token
}
```
## Kullanım
### Python Implementasyonu
```python
from turkish_tokenizer import TurkishTokenizer
tokenizer = TurkishTokenizer()
text = "Kitabı ve defterleri getirn,\nYouTube\t"
result = tokenizer.tokenize(text)
print(result)
```
## Geliştirme ve Katkıda Bulunma
### Geliştirme Ortamı Kurulumu
1. Repository'yi klonlayın:
```bash
git clone <repository-url>
cd tokenizer
```
2. Python ortamını hazırlayın:
```bash
python -m venv venv
source venv/bin/activate # Unix/macOS
# veya
.\venv\Scripts\activate # Windows
```
### Geliştirme Süreci
1. Yeni bir branch oluşturun:
```bash
git checkout -b feature/yeni-ozellik
```
2. Testleri çalıştırın:
```bash
# Python testleri
python -m pytest tests/
# Rust testleri
cargo test
```
3. Kod stilini kontrol edin:
```bash
# Python
flake8 .
black .
```
4. Değişikliklerinizi commit edin:
```bash
git add .
git commit -m "feat: yeni özellik eklendi"
```
### Pull Request Süreci
1. Branch'inizi push edin:
```bash
git push origin feature/yeni-ozellik
```
2. GitHub üzerinden pull request açın
3. Code review sürecini takip edin
4. Gerekli düzeltmeleri yapın
5. PR'ınız onaylandığında main branch'e merge edilecektir
### Geliştirme Gereksinimleri
#### Python
- Python 3.8+
- pytest
- black
- flake8
## Lisans
MIT
---
**Not:** Proje aktif geliştirme aşamasındadır.
Raw data
{
"_id": null,
"home_page": "https://github.com/malibayram/turkish-tokenizer",
"name": "turkish-tokenizer",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "\"M. Ali Bayram\" <malibayram20@gmail.com>",
"keywords": "tokenizer, turkish, nlp, transformer, language-model",
"author": "M. Ali Bayram",
"author_email": "\"M. Ali Bayram\" <malibayram20@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/1b/ed/5148d01cea1b75a088a7705855d45b2ba3378e50ac82f146103223dbc112/turkish_tokenizer-0.2.13.tar.gz",
"platform": null,
"description": "# Turkish Tokenizer\n\n[](https://badge.fury.io/py/turkish-tokenizer)\n[](https://www.python.org/downloads/release/python-380/)\n[](https://opensource.org/licenses/MIT)\n\nDilbilim kurallar\u0131n\u0131 temel alarak, \u00e7ok dilli metinleri i\u015flemek ve anlam b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korumak i\u00e7in geli\u015fmi\u015f bir tokenizer altyap\u0131s\u0131.\n\n## Kurulum\n\n### PyPI \u00fczerinden kurulum (\u00d6nerilen)\n\n```bash\npip install turkish-tokenizer\n```\n\n### Geli\u015ftirme i\u00e7in kurulum\n\n```bash\ngit clone https://github.com/malibayram/turkish-tokenizer.git\ncd turkish-tokenizer\npip install -e .\n```\n\n## H\u0131zl\u0131 Ba\u015flang\u0131\u00e7\n\n### Temel Tokenizer Kullan\u0131m\u0131\n\n```python\nfrom turkish_tokenizer import TurkishTokenizer\n\n# Tokenizer'\u0131 ba\u015flat\ntokenizer = TurkishTokenizer()\n\n# Metin tokenizasyonu\ntext = \"Merhaba d\u00fcnya! Nas\u0131ls\u0131n\u0131z?\"\ntokens = tokenizer.encode(text)\nprint(\"Token IDs:\", tokens)\n\n# Token'lar\u0131 metne geri \u00e7evir\ndecoded_text = tokenizer.decode(tokens)\nprint(\"Decoded:\", decoded_text)\n```\n\n### Geli\u015fmi\u015f Tokenizasyon\n\n```python\nfrom turkish_tokenizer import TurkishTokenizer\n\n# Tokenizer'\u0131 ba\u015flat\ntokenizer = TurkishTokenizer()\n\n# Tokenlar\u0131 string olarak al\ntext = \"Kitaplar\u0131 masa \u00fczerinde b\u0131rakt\u0131m.\"\ntokens = tokenizer.tokenize(text)\nprint(\"Tokens:\", tokens)\n\n# Token tiplerini \u00f6\u011fren\ntoken_details, _ = tokenizer.tokenize_text(text)\nfor token in token_details:\n print(f\"Token: '{token['token']}', ID: {token['id']}, Type: {token['type']}\")\n```\n\n## \u0130lk Versiyon\n\n- [x] Kelime k\u00f6klerinin ses olay\u0131na u\u011fram\u0131\u015f olan hallerinin ses olay\u0131na u\u011framam\u0131\u015f olan halleri ile ayn\u0131 id ile temsil edilmesi\n- [x] \u0130lkHarfB\u00fcy\u00fck tokeni olu\u015fturulmas\u0131 ve t\u00fcm tokenlerin ilk harfinin k\u00fc\u00e7\u00fck harfe \u00e7evrilmesi\n- [x] \u00c7o\u011ful tokeni olu\u015fturulmas\u0131 ve ler - lar eklerinin silinmesi\n- [x] Tamamen ayn\u0131 olan ama sesleri farkl\u0131 olan eklerin \u00f6zel tokenler ile temsil edilmesi\n- [x] Bo\u015fluk, sat\u0131r sonu ve tab karakterlerinin \u00f6zel tokenler ile temsil edilmesi\n\n## Gelecek \u00d6zellikler\n\n- [ ] \u00c7ok dilli destek\n- [ ] Performans optimizasyonlar\u0131\n- [ ] Daha kapsaml\u0131 test senaryolar\u0131\n- [ ] Web API deste\u011fi\n- [ ] Docker entegrasyonu\n\n## GitHub Actions Setup\n\nThis project uses GitHub Actions for automated testing and publishing to PyPI. To set up automated publishing:\n\n### 1. Add PyPI API Token to GitHub Secrets\n\n1. Go to your GitHub repository settings\n2. Navigate to \"Secrets and variables\" \u2192 \"Actions\"\n3. Add the following secrets:\n - `PYPI_API_TOKEN`: Your PyPI API token (starts with `pypi-`)\n - `TEST_PYPI_API_TOKEN`: Your TestPyPI API token (optional)\n\n### 2. Publishing Workflow\n\nThe project will automatically publish to PyPI when:\n\n- A new version tag is pushed (e.g., `v0.2.1`)\n- The workflow is manually triggered from GitHub Actions\n\n### 3. Testing Workflow\n\nTests run automatically on:\n\n- Every push to `main` or `develop` branches\n- Every pull request to `main` branch\n\n---\n\n## Projenin Amac\u0131 ve Kapsam\u0131\n\nBu projenin amac\u0131, metin analizi ve do\u011fal dil i\u015fleme (NLP) s\u00fcre\u00e7lerinde kullan\u0131labilecek, dilbilgisel yap\u0131lar\u0131 ve anlam b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc dikkate alan bir tokenizer geli\u015ftirmektir. Proje, T\u00fcrk\u00e7e dilbilgisi kurallar\u0131n\u0131 referans alarak ba\u015flam\u0131\u015f olsa da, evrensel dil kurallar\u0131 do\u011frultusunda \u00e7ok dilli bir yap\u0131ya sahip olacak \u015fekilde geni\u015fletilecektir.\n\n## Temel \u00d6zellikler\n\n- Dilbilim kurallar\u0131na dayal\u0131 tokenizasyon\n- Morfolojik analiz deste\u011fi\n- \u00c7ok dilli destek altyap\u0131s\u0131\n- Geni\u015fletilebilir mimari\n- Y\u00fcksek performansl\u0131 i\u015fleme\n- \u00d6zel karakter ve bo\u015fluk i\u015fleme deste\u011fi\n\n## Dosya Yap\u0131s\u0131\n\nTokenizer \u00fc\u00e7 temel s\u00f6zl\u00fck dosyas\u0131 kullan\u0131r:\n\n- `kokler.json`: K\u00f6k kelimeler ve \u00f6zel tokenler (0-20000 aras\u0131 ID'ler)\n- `ekler.json`: Ekler (20000-20256 aras\u0131 ID'ler)\n- `bpe_tokenler.json`: BPE token'lar\u0131\n\n### \u00d6zel Tokenler\n\n```json\n{\n \"<uppercase>\": 0, // B\u00fcy\u00fck harf i\u015fareti\n \"<unknown>\": 1, // Bilinmeyen token\n \" \": 2, // Bo\u015fluk karakteri\n \"\\n\": 3, // Sat\u0131r sonu\n \"\\t\": 4, // Tab karakteri\n \"<pad>\": 5, // Padding token\n \"<eos>\": 6 // End of sequence token\n}\n```\n\n## Kullan\u0131m\n\n### Python Implementasyonu\n\n```python\nfrom turkish_tokenizer import TurkishTokenizer\n\ntokenizer = TurkishTokenizer()\n\ntext = \"Kitab\u0131 ve defterleri getirn,\\nYouTube\\t\"\nresult = tokenizer.tokenize(text)\nprint(result)\n```\n\n## Geli\u015ftirme ve Katk\u0131da Bulunma\n\n### Geli\u015ftirme Ortam\u0131 Kurulumu\n\n1. Repository'yi klonlay\u0131n:\n\n```bash\ngit clone <repository-url>\ncd tokenizer\n```\n\n2. Python ortam\u0131n\u0131 haz\u0131rlay\u0131n:\n\n```bash\npython -m venv venv\nsource venv/bin/activate # Unix/macOS\n# veya\n.\\venv\\Scripts\\activate # Windows\n```\n\n### Geli\u015ftirme S\u00fcreci\n\n1. Yeni bir branch olu\u015fturun:\n\n```bash\ngit checkout -b feature/yeni-ozellik\n```\n\n2. Testleri \u00e7al\u0131\u015ft\u0131r\u0131n:\n\n```bash\n# Python testleri\npython -m pytest tests/\n\n# Rust testleri\ncargo test\n```\n\n3. Kod stilini kontrol edin:\n\n```bash\n# Python\nflake8 .\nblack .\n```\n\n4. De\u011fi\u015fikliklerinizi commit edin:\n\n```bash\ngit add .\ngit commit -m \"feat: yeni \u00f6zellik eklendi\"\n```\n\n### Pull Request S\u00fcreci\n\n1. Branch'inizi push edin:\n\n```bash\ngit push origin feature/yeni-ozellik\n```\n\n2. GitHub \u00fczerinden pull request a\u00e7\u0131n\n3. Code review s\u00fcrecini takip edin\n4. Gerekli d\u00fczeltmeleri yap\u0131n\n5. PR'\u0131n\u0131z onayland\u0131\u011f\u0131nda main branch'e merge edilecektir\n\n### Geli\u015ftirme Gereksinimleri\n\n#### Python\n\n- Python 3.8+\n- pytest\n- black\n- flake8\n\n## Lisans\n\nMIT\n\n---\n\n**Not:** Proje aktif geli\u015ftirme a\u015famas\u0131ndad\u0131r.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Turkish tokenizer for Turkish language processing",
"version": "0.2.13",
"project_urls": {
"Documentation": "https://github.com/malibayram/turkish-tokenizer#readme",
"Homepage": "https://github.com/malibayram/turkish-tokenizer",
"Issues": "https://github.com/malibayram/turkish-tokenizer/issues",
"Repository": "https://github.com/malibayram/turkish-tokenizer"
},
"split_keywords": [
"tokenizer",
" turkish",
" nlp",
" transformer",
" language-model"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "04332e12531edaec2bc01943edef6e7d609d11d85120f7e1828115aee8cea0ae",
"md5": "682e9ce5b6af7023233b4e02d6214bd6",
"sha256": "530b959d41c0fb8c93a6f6d87dbed094e42cb7695d40e8fdfdbca10596bc0f52"
},
"downloads": -1,
"filename": "turkish_tokenizer-0.2.13-py3-none-any.whl",
"has_sig": false,
"md5_digest": "682e9ce5b6af7023233b4e02d6214bd6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 227372,
"upload_time": "2025-08-16T15:42:19",
"upload_time_iso_8601": "2025-08-16T15:42:19.900335Z",
"url": "https://files.pythonhosted.org/packages/04/33/2e12531edaec2bc01943edef6e7d609d11d85120f7e1828115aee8cea0ae/turkish_tokenizer-0.2.13-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1bed5148d01cea1b75a088a7705855d45b2ba3378e50ac82f146103223dbc112",
"md5": "ceba442e9e24d1a5a1a38f7b6378617f",
"sha256": "0a2ad32c0b72c9cc4736ccb26780df768932dbabaa0a1311a7946e67899b2e48"
},
"downloads": -1,
"filename": "turkish_tokenizer-0.2.13.tar.gz",
"has_sig": false,
"md5_digest": "ceba442e9e24d1a5a1a38f7b6378617f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 234595,
"upload_time": "2025-08-16T15:42:21",
"upload_time_iso_8601": "2025-08-16T15:42:21.701565Z",
"url": "https://files.pythonhosted.org/packages/1b/ed/5148d01cea1b75a088a7705855d45b2ba3378e50ac82f146103223dbc112/turkish_tokenizer-0.2.13.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-16 15:42:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "malibayram",
"github_project": "turkish-tokenizer",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "turkish-tokenizer"
}