sentencepiece

tarafından firecrawl

Dilden bağımsız, metni ham Unicode olarak işleyen tokenizer. BPE ve Unigram algoritmalarını destekler. Hızlı (saniyede 50k cümle), hafif (6MB bellek),…

npx skills add https://github.com/firecrawl/ai-research-skills --skill sentencepiece

SentencePiece - Language-Independent Tokenization

Unsupervised tokenizer that works on raw text without language-specific preprocessing.

When to use SentencePiece

Use SentencePiece when:

  • Building multilingual models (no language-specific rules)
  • Working with CJK languages (Chinese, Japanese, Korean)
  • Need reproducible tokenization (deterministic vocabulary)
  • Want to train on raw text (no pre-tokenization needed)
  • Require lightweight deployment (6MB memory, 50k sentences/sec)

Performance:

  • Speed: 50,000 sentences/sec
  • Memory: ~6MB for loaded model
  • Languages: All (language-independent)

Use alternatives instead:

  • HuggingFace Tokenizers: Faster training, more flexibility
  • tiktoken: OpenAI models (GPT-3.5/4)
  • BERT WordPiece: English-centric tasks

Quick start

Installation

# Python
pip install sentencepiece

# C++ (requires CMake)
git clone https://github.com/google/sentencepiece.git
cd sentencepiece
mkdir build && cd build
cmake .. && make -j $(nproc)
sudo make install

Train model

# Command-line (BPE with 8000 vocab)
spm_train --input=data.txt --model_prefix=m --vocab_size=8000 --model_type=bpe

# Python API
import sentencepiece as spm

spm.SentencePieceTrainer.train(
    input='data.txt',
    model_prefix='m',
    vocab_size=8000,
    model_type='bpe'
)

Training time: ~1-2 minutes for 100MB corpus

Encode and decode

import sentencepiece as spm

# Load model
sp = spm.SentencePieceProcessor(model_file='m.model')

# Encode to pieces
pieces = sp.encode('This is a test', out_type=str)
print(pieces)  # ['▁This', '▁is', '▁a', '▁test']

# Encode to IDs
ids = sp.encode('This is a test', out_type=int)
print(ids)  # [284, 47, 11, 1243]

# Decode
text = sp.decode(ids)
print(text)  # "This is a test"

Language-independent design

Whitespace as symbol (▁)

text = "Hello world"
pieces = sp.encode(text, out_type=str)
print(pieces)  # ['▁Hello', '▁world']

# Decode preserves spaces
decoded = sp.decode_pieces(pieces)
print(decoded)  # "Hello world"

Key principle: Treat text as raw Unicode, whitespace = ▁ (meta symbol)

Tokenization algorithms

BPE (Byte-Pair Encoding)

spm.SentencePieceTrainer.train(
    input='data.txt',
    model_prefix='bpe_model',
    vocab_size=16000,
    model_type='bpe'
)

Used by: mBART

Unigram (default)

spm.SentencePieceTrainer.train(
    input='data.txt',
    model_prefix='unigram_model',
    vocab_size=8000,
    model_type='unigram'
)

Used by: T5, ALBERT, XLNet

Training configuration

Essential parameters

spm.SentencePieceTrainer.train(
    input='corpus.txt',
    model_prefix='m',
    vocab_size=32000,
    model_type='unigram',
    character_coverage=0.9995,  # 1.0 for CJK
    user_defined_symbols=['[SEP]', '[CLS]'],
    unk_piece='<unk>',
    num_threads=16
)

Character coverage

Language TypeCoverageRationale
English0.9995Most common chars
CJK (Chinese)1.0All characters needed
Multilingual0.9995Balance

Encoding options

Subword regularization

# Sample different tokenizations
for _ in range(3):
    pieces = sp.encode('tokenization', out_type=str, enable_sampling=True, alpha=0.1)
    print(pieces)

# Output (different each time):
# ['▁token', 'ization']
# ['▁tok', 'en', 'ization']

Use case: Data augmentation for robustness.

Common patterns

T5-style training

spm.SentencePieceTrainer.train(
    input='c4_corpus.txt',
    model_prefix='t5',
    vocab_size=32000,
    model_type='unigram',
    user_defined_symbols=[f'<extra_id_{i}>' for i in range(100)],
    unk_id=2,
    eos_id=1,
    pad_id=0
)

Integration with transformers

from transformers import T5Tokenizer

# T5 uses SentencePiece internally
tokenizer = T5Tokenizer.from_pretrained('t5-base')
inputs = tokenizer('translate English to French: Hello', return_tensors='pt')

Performance benchmarks

Training speed

CorpusBPE (16k)Unigram (8k)
100 MB1-2 min3-4 min
1 GB10-15 min30-40 min

Tokenization speed

  • SentencePiece: 50,000 sentences/sec
  • HF Tokenizers: 200,000 sentences/sec (4× faster)

Supported models

T5 family: t5-base, t5-large (32k vocab, Unigram) ALBERT: albert-base-v2 (30k vocab, Unigram) XLNet: xlnet-base-cased (32k vocab, Unigram) mBART: facebook/mbart-large-50 (250k vocab, BPE)

References

Resources

firecrawl tarafından daha fazla skill

oracle
firecrawl
oracle CLI kullanımı için en iyi uygulamalar (istemci + dosya paketleme, motorlar, oturumlar ve dosya ekleme desenleri).
official
firecrawl-monitor
firecrawl
Bir web sitesindeki içerik değiştiğinde algılayın ve webhook veya e-posta ile bildirim alın — cron işleri, kazıyıcılar veya diff betikleri gerekmez. Kullanıcı bir sayfadaki değişiklikleri takip etmek, rakip fiyatlandırmasını izlemek, yeni iş ilanları veya blog yazıları için uyarı almak, dokümantasyon/değişiklik günlüğü/durum sayfalarını izlemek istediğinde veya "izle", "takip et", "gözetle", "X değiştiğinde beni uyar", "X değişirse bildir", "bana ping at", "şu olduğunda e-posta gönder" veya "webhook gönder" dediğinde bu beceriyi kullanın.
officialweb-scrapingresearch
firecrawl-deep-research
firecrawl
Firecrawl ile çok kaynaklı derin araştırma yapın. Kullanıcı bir konuyu araştırmak, perspektifleri karşılaştırmak, kaynaklı bir brifing hazırlamak, teknik veya pazar sorusunu incelemek ya da birçok kaynaktan web kanıtlarını sentezlemek istediğinde kullanın.
officialresearchweb-scraping
firecrawl-research-papers
firecrawl
Firecrawl ile araştırma makaleleri, teknik raporlar, PDF'ler ve akademik kaynakları bulun ve sentezleyin. Kullanıcının literatür taraması, makale özeti, araştırma haritası veya PDF'ler ile akademik/endüstriyel yayınlardan kaynaklı sentez istediğinde kullanın.
officialresearchweb-scraping
firecrawl-market-research
firecrawl
Firecrawl ile pazar, finansal, kazanç, sektör ve şirket metriklerini çıkarın. Kullanıcı pazar araştırması, sektör trendleri, halka açık şirket verileri, finansal karşılaştırmalar, kazanç araştırması veya yapılandırılmış pazar raporları istediğinde kullanın.
officialresearchweb-scraping
firecrawl-website-design-clone
firecrawl
Herhangi bir web sitesinin tasarım sistemini, Firecrawl tarama kanıtlarını kullanarak ajan uyumlu bir DESIGN.md dosyasına çıkarın. Kullanıcının bir web sitesinden renkler, yazı tipleri, boşluklar, bileşenler, düzen desenleri veya marka/arayüz rehberliği istediği ve yapay zeka ajanlarının yeni web siteleri oluşturması, bir görünümü klonlaması veya bu tasarımdan ilham alarak sayfalar inşa etmesi için kullanın.
officialdesignweb-scraping
firecrawl-knowledge-base
firecrawl
Firecrawl ile web içeriğinden bir bilgi tabanı oluşturun. Yerel referans dokümanları, RAG uyumlu parçalar, ince ayar veri kümeleri, dokümantasyon yansımaları, konu derlemleri veya web kaynaklarından düzenlenmiş LLM uyumlu işaretleme metinleri için kullanın.
officialweb-scrapingresearch
firecrawl-lead-research
firecrawl
Firecrawl ile toplantı öncesi potansiyel müşteri istihbarat özetleri oluşturun. Kullanıcının bir satış görüşmesi, ortaklık toplantısı, yatırımcı konuşması veya müşteri görüşmesi öncesinde şirket araştırması, kişi araştırması, güncel haberler, konuşma noktaları, sorunlu noktalar veya iletişim hazırlığına ihtiyaç duyduğu durumlarda kullanın.
officialresearchweb-scraping