Text Chunking and Tokenization with NLTK

This Python snippet demonstrates how to chunk a long text into smaller segments of a specified size using the NLTK library. It also includes a function to tokenize each chunk, making it useful for natural language processing tasks. The example text discusses biopreparaty and their applications.
 avatar
unknown
python
14 days ago
2.3 kB
2
Indexable
import nltk
from transformers import GPT2Tokenizer
import textwrap

nltk.download('punkt')

def chunk_text(text, chunk_size=200):
    """Dzieli tekst na fragmenty o określonej wielkości."""
    tokens = nltk.word_tokenize(text)
    chunks = []
    for i in range(0, len(tokens), chunk_size):
        chunk = ' '.join(tokens[i:i + chunk_size])
        chunks.append(chunk)
    return chunks

def tokenize_chunk(chunk):
    """Tokenizuje fragment tekstu."""
    return nltk.word_tokenize(chunk)

# Długi tekst (przykładowy)
long_text = """
Biopreparaty to preparaty mikrobiologiczne, które zawierają żywe lub martwe mikroorganizmy, lub ich metabolity. 
Są stosowane w rolnictwie, ogrodnictwie i ochronie środowiska. 
Ich głównym celem jest poprawa jakości gleby, ochrona roślin przed chorobami i szkodnikami oraz zwiększenie plonów. 
Biopreparaty mogą być stosowane w formie oprysków, zaprawiania nasion lub dodawania do gleby. 
Ich skuteczność zależy od wielu czynników, takich jak rodzaj mikroorganizmów, warunki glebowe i klimatyczne. 
Przykłady biopreparatów to preparaty bakteryjne, grzybowe i wirusowe. 
Stosowanie biopreparatów jest zgodne z zasadami rolnictwa ekologicznego i zrównoważonego rozwoju. 
Ważne jest, aby stosować biopreparaty zgodnie z zaleceniami producenta.
"""

# Chunking tekstu
chunks = chunk_text(long_text, chunk_size=50)

print("Wynik Chunkingu:")
for i, chunk in enumerate(chunks):
    print(f"Chunk {i+1}:\n{textwrap.fill(chunk, width=80)}\n{'-'*20}")

# Tokenizacja fragmentów
tokenized_chunks = [tokenize_chunk(chunk) for chunk in chunks]

print("\nWynik Tokenizacji (przykład pierwszego chunka):")
print(tokenized_chunks[0])

# Przykładowe zapytanie do modelu GPT (wymaga dostępu do modelu i API)
# tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
# model = ... (wczytanie modelu)

# prompt = "Jakie są główne cele stosowania biopreparatów?"
# for chunk in chunks:
#     input_ids = tokenizer.encode(prompt + " " + chunk, return_tensors="pt")
#     output = model.generate(input_ids, max_length=150)
#     decoded_output = tokenizer.decode(output[0], skip_special_tokens=True)
#     print(f"Odpowiedź na podstawie chunka:\n{decoded_output}\n{'-'*20}")
Editor is loading...
Leave a Comment