ٹوکن اسپیسنگ

زبانی ماڈلز میں ٹوکن کی حدود ہوتی ہیں۔ آپ کو ٹوکن کی حدود سے باہر نہیں جانا چاہئے۔ اس لئے جب متن کو ٹکڑوں میں تقسیم کیا جائے، بہتر ہوتا ہے کہ ٹوکنوں کی تعداد کا حساب کیا جائے۔ یہاں مختلف ٹوکن پروسیسرز (ٹوکنائزر) دستیاب ہیں۔ متن کی تعداد گننے کے لئے، زبانی ماڈل میں استعمال ہونے والے ٹوکن پروسیسر کا ہی استعمال کرنا چاہئے۔

اس باب میں ہم دیکھیں گے کہ لینگ چین کس طرح مختلف ٹوکن ٹوکنائزرز کا استعمال کرتا ہے تاکہ متن مواد کو ٹوکنوں کی بنیاد پر تقسیم کیا جا سکے۔

ٹک ٹوکن

ٹک ٹوکن ایک تیز BPE ٹوکنائزر ہے جو اوپن ای ای سے شائع کیا گیا ہے۔

ہم اسے استعمال کرکے استعمال ہونے والے ٹوکنوں کی تعداد کا اندازہ لگا سکتے ہیں۔ اوپن ای ای ماڈلز کے لئے یہ زیادہ درست ہو سکتا ہے۔

  1. متن کو کیسے تقسیم کیا جاتا ہے: ان پٹ حروف کے مطابق۔
  2. چنک کیسے ناپا جاتا ہے: ٹک ٹوکن ٹوکنائزر کا استعمال کرکے۔
%pip install --upgrade --quiet langchain-text-splitters tiktoken
with open("../../../state_of_the_union.txt") as f:
    state_of_the_union = f.read()
	
from langchain_text_splitters import CharacterTextSplitter
text_splitter = CharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=100, chunk_overlap=0
)
texts = text_splitter.split_text(state_of_the_union)
print(texts[0])
میڈم اسپیکر، میڈم وائس پریزیڈنٹ، ہماری فرسٹ لیڈی اور سیکنڈ جنٹل مین۔ کانگریس کے رکن اور کابینہ۔ سپریم کورٹ کے جسٹسز۔ میرے ساتھی امریکی۔  
    
    پچھلے سال COVID-19 نے ہمیں الگ رکھا رکھا تھا۔ یہ سال ہم پھر سے اکٹھے ہیں۔ 
    
    آج رات ہم دیموکریٹس، ریپبلکنز اور انڈیپینڈنٹس کے طور پر ملتے ہیں۔ لیکن سب سے زیادہ امریکیوں کے طور پر۔ 
    
    ایک دوسرے کے لئے اور امریکی عوام اور آئین کے لئے ذمہ دارانہ۔

ہم ٹک ٹوکن سپلیٹر کو بھی سیدھے لوڈ کرسکتے ہیں۔

from langchain_text_splitters import TokenTextSplitter

text_splitter = TokenTextSplitter(chunk_size=10, chunk_overlap=0)

texts = text_splitter.split_text(state_of_the_union)
print(texts[0])

spaCy

spaCy ایک پایتھان اور سائیتھان میں لکھی گئی ایڈوانسڈ نیچرل لینگویج پراسیسنگ کی لائبریری ہے۔

NLTK کا استعمال کرنے کا ایک اور اہتمال ہے spaCy ٹوکنائزر کا استعمال کرنا۔

  1. متن کو کیسے تقسیم کیا جاتا ہے: spaCy ٹوکنائزر کا استعمال کرکے۔
  2. چنک کیسے ناپا جاتا ہے: حروف کی تعداد کو گن کر۔
with open("../../../state_of_the_union.txt") as f:
    state_of_the_union = f.read()
from langchain_text_splitters import SpacyTextSplitter

text_splitter = SpacyTextSplitter(chunk_size=1000)
texts = text_splitter.split_text(state_of_the_union)
print(texts[0])

سینٹنس ٹرانسفارمرز

SentenceTransformersTokenTextSplitter خاص طور پر سینٹنس ٹرانسفارمر ماڈل کے لئے ڈیزائن کردہ ایک ٹیکسٹ سپلیٹر ہے۔ اس کی پہلی سیاق و سباق چاہتہ ماڈل کے لئے مناسب ٹوکن ونڈو سائز کے بلاکوں میں متن کو تقسیم کرنا ہوتا ہے۔

from langchain_text_splitters import SentenceTransformersTokenTextSplitter
splitter = SentenceTransformersTokenTextSplitter(chunk_overlap=0)
text = "Lorem "
count_start_and_stop_tokens = 2
text_token_count = splitter.count_tokens(text=text) - count_start_and_stop_tokens
print(text_token_count)
2
token_multiplier = splitter.maximum_tokens_per_chunk // text_token_count + 1

text_to_split = text * token_multiplier

print(f"tokens in text to split: {splitter.count_tokens(text=text_to_split)}")
tokens in text to split: 514
text_chunks = splitter.split_text(text=text_to_split)

print(text_chunks[1])
lorem

این ایل ٹی کے

طبیعی زبان ٹولکٹ, مختصرا این ایل ٹی کے کہلا تشکیل شدہ کتابخانے اور پروگرام ہے جو سمبولک اور اعدادی طبیعی زبان کی پروسیسنگ (ان ایل پی) کے لئے پائیتھان پروگرامنگ زبان پائتھان کا استعمال کرتے ہیں، احمد برائے انگریزی۔

متن کو "\ n \ n" کے بنیاد پر چھانٹنے کی بجائے ہم [NLTK ٹوکینائزر] (https://www.nltk.org/api/nltk.tokenize.html) کے بنیاد پر چھانٹنے کا نیا طریقہ استعمال کرسکتے ہیں۔

  1. ٹیکسٹ چھانٹنے کا طریقہ: NLTK ٹوکینائزر کا استعمال کرکے۔
  2. ٹکڑے کا سائز ناپنے کا طریقہ: حروف کی تعداد سے ناپا جاتا ہے۔
with open("../../../state_of_the_union.txt") as f:
    state_of_the_union = f.read()
from langchain_text_splitters import NLTKTextSplitter

text_splitter = NLTKTextSplitter(chunk_size=1000)
texts = text_splitter.split_text(state_of_the_union)
print(texts[0])

ہگنگ فیس ٹوکنائزر

ہگنگ فیس کے پاس بہت سارے ٹوکنائزر ہیں۔

ہم GPT2TokenizerFast استعمال کرتے ہیں ہگنگ فیس ٹوکنائزر سے ٹیکسٹ میں توکنوں کی تعداد کا حساب لگانے کے لئے۔

  1. ٹیکسٹ کا ٹکڑوں میں تقسیم: ان پٹ کردہ حروف کے بنیاد پر تقسیم کی گئی ہے۔
  2. ٹکڑے کی مقدار کا حساب کرنے کا طریقہ: ہگنگ فیس ٹوکنائزر کی توکنوں کی تعداد سے ناپا جاتا ہے۔
from transformers import GPT2TokenizerFast

tokenizer = GPT2TokenizerFast.from_pretrained("gpt2")
with open("../../../state_of_the_union.txt") as f:
    state_of_the_union = f.read()

from langchain_text_splitters import CharacterTextSplitter
text_splitter = CharacterTextSplitter.from_huggingface_tokenizer(
    tokenizer, chunk_size=100, chunk_overlap=0
)
texts = text_splitter.split_text(state_of_the_union)
print(texts[0])