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.unknown
python
8 months ago
2.3 kB
4
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