टोकन स्प्लिटिंग

भाषा मॉडल्स के टोकन सीमा होती है। आपको टोकन सीमा से अधिक नहीं जाना चाहिए। इसलिए, जब टेक्स्ट को टुकड़ों में विभाजित किया जाता है, तो सर्वश्रेष्ठ है कि टोकनों की संख्या की गणना की जाए। कई टोकन प्रोसेसर (टोकनाइजर) उपलब्ध हैं। टेक्स्ट में टोकनों की संख्या को अंदर तकरीबन , Sahi टोकन प्रोसेसर का उपयोग किया जाना चाहिए जैसा कि भाषा मॉडल में किया जाता है।

इस अध्याय में यह बताया गया है कि LangChain कैसे विभिन्न टोकन टोकनाइजर्स का उपयोग टोकनों के आधार पर टेक्स्ट सामग्री को विभाजित करता है।

टिकटोकन

टिकटोकन ओपनएआई द्वारा जारी फास्ट BPE टोकनाइजर है।

हम इसका उपयोग करके उपयोग की गई टोकनों की संख्या का अनुमान लगा सकते हैं। यह openAI मॉडल्स के लिए अधिक सटीक हो सकता है।

  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])
Madam Speaker, Madam Vice President, हमारी पहली महिला और दूसरी जेंटलमैन। कांग्रेस के सदस्य और मंत्रिमंडल। सर्वोच्च न्यायालय के न्यायाधीश। मेरे साथी अमेरिकन।  

    पिछले साल 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])

SentenceTransformers

SentenceTransformersTokenTextSplitter वाक्य-परिवर्तक मॉडल के लिए विशेष रूप से डिज़ाइन किया गया एक टेक्स्ट स्प्लिटर है। इसका डिफ़ॉल्ट व्यवहार टेक्स्ट को उपयुक्त सेंटेंस-ट्रांसफ़ॉर्मर मॉडल के लिए टोकन विंडो साइज के ब्लॉक में विभाजित करना है।

from langchain_text_splitters import SentenceTransformersTokenTextSplitter
splitter = SentenceTransformersTokenTextSplitter(chunk_overlap=0)
text = "लोरेम "
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"विभाजित करने वाले टेक्स्ट में टोकन: {splitter.count_tokens(text=text_to_split)}")
विभाजित करने वाले टेक्स्ट में टोकन: 514
text_chunks = splitter.split_text(text=text_to_split)

print(text_chunks[1])
लोरेम

एनएलटीके

एनटीके, जो आमतौर पर एनएलटीके के रूप में जाना जाता है, यह पायथन प्रोग्रामिंग भाषा में लिखे गए सैंबोलिक और सांख्यिकीय प्राकृतिक भाषा प्रसंस्करण (एनएलपी) के लिए पुस्तकालय और कार्यक्रम है, जो अंग्रेजी के लिए उपयोग होते हैं।

"\n\n" के आधार पर पाठ को बस स्प्लिट करने की बजाय, हम एनएलटीके टोकनाइज़र के आधार पर स्प्लिट करने के लिए एनएलटीके का उपयोग कर सकते हैं।

  1. पाठ विभाजन मेथड: एनएलटीके टोकनाइज़र का उपयोग करते हुए।
  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])