Skip to main content

Turkish tokenizer for Turkish language processing

Project description

Turkish Tokenizer

PyPI version Python 3.8+ License: 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)

pip install turkish-tokenizer

Geliştirme için kurulum

git clone https://github.com/malibayram/tokenizer.git
cd tokenizer
pip install -e .

Hızlı Başlangıç

Temel Tokenizer Kullanımı

from tr_tokenizer_gemma import TRTokenizer

# Tokenizer'ı başlat
tokenizer = TRTokenizer()

# 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

from tr_tokenizer_gemma import TRTokenizer

# Tokenizer'ı başlat
tokenizer = TRTokenizer()

# 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

  • Kelime köklerinin ses olayına uğramış olan hallerinin ses olayına uğramamış olan halleri ile aynı id ile temsil edilmesi
  • İlkHarfBüyük tokeni oluşturulması ve tüm tokenlerin ilk harfinin küçük harfe çevrilmesi
  • Çoğul tokeni oluşturulması ve ler - lar eklerinin silinmesi
  • Tamamen aynı olan ama sesleri farklı olan eklerin özel tokenler ile temsil edilmesi
  • 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

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_v05.json: Kök kelimeler ve özel tokenler (0-20000 arası ID'ler)
  • ekler_v05.json: Ekler (22268-22767 arası ID'ler)
  • bpe_v05.json: BPE token'ları

Özel Tokenler

{
  "<uppercase>": 0, // Büyük harf işareti
  "<space>": 1, // Boşluk karakteri
  "<newline>": 2, // Satır sonu
  "<tab>": 3, // Tab karakteri
  "<unknown>": 4 // Bilinmeyen token
}

Kullanım

Python Implementasyonu

from turkish_tokenizer import tokenize

text = "Kitabı ve defterleri getirn,\nYouTube\t"
result = tokenize(text)
print(result)

Rust Implementasyonu

use turkish_tokenizer::TurkishTokenizer;

fn main() {
    let mut tokenizer = TurkishTokenizer::new().unwrap();
    let text = "Kitabı ve defterleri getirn,\nYouTube\t";
    let result = tokenizer.tokenize(text).unwrap();
    println!("{}", serde_json::to_string_pretty(&result).unwrap());
}

Implementasyon Özellikleri

Python Versiyonu

  1. Temel Özellikler:

    • Basit ve anlaşılır kod yapısı
    • Kolay entegrasyon
    • Hızlı prototipleme için uygun
    • Dinamik tip sistemi
  2. Performans Özellikleri:

    • Sıralı işleme
    • Bellek dostu veri yapıları
    • Yorumlanmış dil avantajları

Rust Versiyonu

  1. Temel Özellikler:

    • Güvenli bellek yönetimi
    • Statik tip sistemi
    • Thread-safe veri yapıları
    • Sıfır maliyetli soyutlamalar
  2. Performans Özellikleri:

    • Paralel işleme desteği (Rayon)
    • Verimli UTF-8 karakter işleme
    • Düşük seviye optimizasyonlar
    • Önbellekleme mekanizmaları
  3. Teknik Detaylar:

    • Arc ile thread-safe paylaşımlı veri
    • Regex ile gelişmiş kelime bölümleme
    • Lazy static ile verimli statik kaynaklar
    • Zero-copy string işlemleri

Geliştirme ve Katkıda Bulunma

Geliştirme Ortamı Kurulumu

  1. Repository'yi klonlayın:
git clone <repository-url>
cd tokenizer
  1. Python ortamını hazırlayın:
python -m venv venv
source venv/bin/activate  # Unix/macOS
# veya
.\venv\Scripts\activate  # Windows
  1. Rust toolchain'i kurun:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# veya
rustup update

Geliştirme Süreci

  1. Yeni bir branch oluşturun:
git checkout -b feature/yeni-ozellik
  1. Testleri çalıştırın:
# Python testleri
python -m pytest tests/

# Rust testleri
cargo test
  1. Kod stilini kontrol edin:
# Python
flake8 .
black .

# Rust
cargo fmt
cargo clippy
  1. Değişikliklerinizi commit edin:
git add .
git commit -m "feat: yeni özellik eklendi"

Pull Request Süreci

  1. Branch'inizi push edin:
git push origin feature/yeni-ozellik
  1. GitHub üzerinden pull request açın
  2. Code review sürecini takip edin
  3. Gerekli düzeltmeleri yapın
  4. PR'ınız onaylandığında main branch'e merge edilecektir

Geliştirme Gereksinimleri

Python

  • Python 3.6+
  • pytest
  • black
  • flake8
  • JSON desteği
  • UTF-8 karakter desteği

Rust

  • Rust 1.50+
  • Cargo paket yöneticisi
  • rustfmt
  • clippy
  • Bağımlılıklar:
    • serde (JSON işleme)
    • rayon (paralel işleme)
    • regex (kelime bölümleme)
    • lazy_static (statik kaynaklar)

Lisans

MIT


Not: Proje aktif geliştirme aşamasındadır. Detaylı dokümantasyon için Wiki sayfasını ziyaret edebilirsiniz.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

turkish_tokenizer-0.1.5.tar.gz (238.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

turkish_tokenizer-0.1.5-py3-none-any.whl (233.7 kB view details)

Uploaded Python 3

File details

Details for the file turkish_tokenizer-0.1.5.tar.gz.

File metadata

  • Download URL: turkish_tokenizer-0.1.5.tar.gz
  • Upload date:
  • Size: 238.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for turkish_tokenizer-0.1.5.tar.gz
Algorithm Hash digest
SHA256 41ebcd3cb45410108364b390b83102b5bdddf10a51f851825bfaa625173aeb60
MD5 cf049d8631297b2d3bd1c38f4664563c
BLAKE2b-256 44968de4c429c744a54ee9997592d49e9157d84d892cf81e235a5f53314a2a95

See more details on using hashes here.

File details

Details for the file turkish_tokenizer-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for turkish_tokenizer-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d5e42b84d07dbfce5928c2c01855c5e4378190241ca039f15ef7774b7970cdbe
MD5 abdce31ab99d3fae0413be5c1ae7f9ef
BLAKE2b-256 eff55673c314a87a9df35022f4985657915aee6e63bcab976594fc22c8c5a75e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page