Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Tokenisatie | Grondbeginselen van Tekstvoorbewerking
Introductie tot NLP

bookTokenisatie

Voordat we daadwerkelijk ingaan op het proces van tokenisatie, moeten we eerst definiëren wat tokens zijn.

Note
Definitie

Tokens zijn onafhankelijke en minimale tekstcomponenten met een specifieke syntaxis en semantiek.

Daarom is tokenisatie het proces waarbij tekst wordt opgesplitst in tokens. Bijvoorbeeld, een tekstparagraaf, een tekstdocument of een tekstcorpus bestaat uit verschillende componenten die kunnen worden onderverdeeld in zinnen, woordgroepen en woorden. De meest gebruikte tokenisatiemethoden zijn zin- en woordtokenisatie, waarmee een tekstdocument (of corpus) wordt opgedeeld in zinnen en elke zin in woorden.

Note
Definitie

Een tekstkorpus (meervoud: corpora) is een grote en gestructureerde verzameling teksten die wordt gebruikt in taalkundig en computationeel taalkundig onderzoek. In wezen is het een uitgebreide collectie geschreven of gesproken materiaal die dient als een representatieve steekproef van een bepaalde taal, dialect of vakgebied.

Zinstokenisatie

Laten we beginnen met zinstokenisatie. Gelukkig biedt nltk de functie sent_tokenize() in de module tokenize. Het primaire doel van deze functie is het splitsen van een gegeven tekst in een lijst van zinnen.

sent_tokenize() maakt gebruik van een voorgetraind model, meestal een machine learning-model dat is getraind op een groot tekstcorpus, om de grenzen tussen zinnen te identificeren. Het houdt rekening met verschillende aanwijzingen in de tekst, zoals interpunctietekens (bijv. punten, uitroeptekens, vraagtekens), hoofdletters en andere taalkundige patronen die doorgaans het einde van de ene zin en het begin van een andere markeren.

123456789
# Importing the sent_tokenize() function from nltk.tokenize import sent_tokenize import nltk # Downloading the "Punkt" tokenizer models nltk.download('punkt_tab') text = "Hello world. This is an example of sentence tokenization. NLTK makes it easy!" # Sentence tokenization sentences = sent_tokenize(text) print(sentences)
copy

Zoals je kunt zien, is er niets ingewikkelds aan. Je hoeft eenvoudigweg een string met je tekst als argument van sent_tokenize() mee te geven om een lijst van zinnen te verkrijgen. Wat betreft nltk.download('punkt_tab'), deze opdracht downloadt specifiek de "Punkt" tokenizer modellen. Door de Punkt-tokenizer modellen te downloaden, zorg je ervoor dat NLTK over de benodigde data beschikt om nauwkeurige zin- en woordtokenisatie uit te voeren.

Note
Opmerking

De leestekens aan het einde van elke zin zijn inbegrepen in de zin.

Woordtokenisatie

Bij woordtokenisatie zijn er verschillende gangbare methoden om dit uit te voeren; echter, we bespreken alleen de twee meest voorkomende.

De meest directe en eenvoudigste methode is het gebruik van de split() functie van de string klasse, die standaard regeleinden, spaties en tabs als scheidingstekens gebruikt. Je kunt echter ook een willekeurige string als argument meegeven om als scheidingsteken te dienen.

123456
text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
copy
Note
Opmerking

Om ervoor te zorgen dat tokens zoals 'This' en 'this' als hetzelfde worden behandeld, is het belangrijk om de string vóór tokenisatie om te zetten naar kleine letters.

Een flexibelere benadering is echter het gebruik van de functie word_tokenize() in de module tokenize van de nltk-bibliotheek. Deze functie identificeert en scheidt woorden op basis van spaties en leestekens, waardoor zinnen effectief worden opgesplitst in hun afzonderlijke woorden. Net als sent_tokenize() vereist deze functie een string als argument.

Laten we deze aanpak vergelijken met het gebruik van de methode split(). Het onderstaande voorbeeld gebruikt word_tokenize():

12345678
from nltk import word_tokenize import nltk nltk.download('punkt_tab') text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using word_tokenize() words = word_tokenize(text) print(words)
copy

Laten we nu bekijken hoe de methode split() presteert met dezelfde tekst:

12345
text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using split() words = text.split() print(words)
copy

In ons voorbeeld identificeert word_tokenize(), in tegenstelling tot split(), interpunctie en speciale tekens nauwkeurig als afzonderlijke tokens. Het scheidt het dollarteken correct van het getal en herkent punten als op zichzelf staande tokens. Deze genuanceerde tokenisatie is essentieel voor veel NLP-taken, waarbij de precieze afbakening van woorden en interpunctie de nauwkeurigheid en inzichten van de analyse aanzienlijk kan beïnvloeden.

question mark

Gegeven de zin "It wasn't me, I swear!", wat is het resultaat van het toepassen van de split()-methode hierop?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 3

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Awesome!

Completion rate improved to 3.45

bookTokenisatie

Veeg om het menu te tonen

Voordat we daadwerkelijk ingaan op het proces van tokenisatie, moeten we eerst definiëren wat tokens zijn.

Note
Definitie

Tokens zijn onafhankelijke en minimale tekstcomponenten met een specifieke syntaxis en semantiek.

Daarom is tokenisatie het proces waarbij tekst wordt opgesplitst in tokens. Bijvoorbeeld, een tekstparagraaf, een tekstdocument of een tekstcorpus bestaat uit verschillende componenten die kunnen worden onderverdeeld in zinnen, woordgroepen en woorden. De meest gebruikte tokenisatiemethoden zijn zin- en woordtokenisatie, waarmee een tekstdocument (of corpus) wordt opgedeeld in zinnen en elke zin in woorden.

Note
Definitie

Een tekstkorpus (meervoud: corpora) is een grote en gestructureerde verzameling teksten die wordt gebruikt in taalkundig en computationeel taalkundig onderzoek. In wezen is het een uitgebreide collectie geschreven of gesproken materiaal die dient als een representatieve steekproef van een bepaalde taal, dialect of vakgebied.

Zinstokenisatie

Laten we beginnen met zinstokenisatie. Gelukkig biedt nltk de functie sent_tokenize() in de module tokenize. Het primaire doel van deze functie is het splitsen van een gegeven tekst in een lijst van zinnen.

sent_tokenize() maakt gebruik van een voorgetraind model, meestal een machine learning-model dat is getraind op een groot tekstcorpus, om de grenzen tussen zinnen te identificeren. Het houdt rekening met verschillende aanwijzingen in de tekst, zoals interpunctietekens (bijv. punten, uitroeptekens, vraagtekens), hoofdletters en andere taalkundige patronen die doorgaans het einde van de ene zin en het begin van een andere markeren.

123456789
# Importing the sent_tokenize() function from nltk.tokenize import sent_tokenize import nltk # Downloading the "Punkt" tokenizer models nltk.download('punkt_tab') text = "Hello world. This is an example of sentence tokenization. NLTK makes it easy!" # Sentence tokenization sentences = sent_tokenize(text) print(sentences)
copy

Zoals je kunt zien, is er niets ingewikkelds aan. Je hoeft eenvoudigweg een string met je tekst als argument van sent_tokenize() mee te geven om een lijst van zinnen te verkrijgen. Wat betreft nltk.download('punkt_tab'), deze opdracht downloadt specifiek de "Punkt" tokenizer modellen. Door de Punkt-tokenizer modellen te downloaden, zorg je ervoor dat NLTK over de benodigde data beschikt om nauwkeurige zin- en woordtokenisatie uit te voeren.

Note
Opmerking

De leestekens aan het einde van elke zin zijn inbegrepen in de zin.

Woordtokenisatie

Bij woordtokenisatie zijn er verschillende gangbare methoden om dit uit te voeren; echter, we bespreken alleen de twee meest voorkomende.

De meest directe en eenvoudigste methode is het gebruik van de split() functie van de string klasse, die standaard regeleinden, spaties en tabs als scheidingstekens gebruikt. Je kunt echter ook een willekeurige string als argument meegeven om als scheidingsteken te dienen.

123456
text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
copy
Note
Opmerking

Om ervoor te zorgen dat tokens zoals 'This' en 'this' als hetzelfde worden behandeld, is het belangrijk om de string vóór tokenisatie om te zetten naar kleine letters.

Een flexibelere benadering is echter het gebruik van de functie word_tokenize() in de module tokenize van de nltk-bibliotheek. Deze functie identificeert en scheidt woorden op basis van spaties en leestekens, waardoor zinnen effectief worden opgesplitst in hun afzonderlijke woorden. Net als sent_tokenize() vereist deze functie een string als argument.

Laten we deze aanpak vergelijken met het gebruik van de methode split(). Het onderstaande voorbeeld gebruikt word_tokenize():

12345678
from nltk import word_tokenize import nltk nltk.download('punkt_tab') text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using word_tokenize() words = word_tokenize(text) print(words)
copy

Laten we nu bekijken hoe de methode split() presteert met dezelfde tekst:

12345
text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using split() words = text.split() print(words)
copy

In ons voorbeeld identificeert word_tokenize(), in tegenstelling tot split(), interpunctie en speciale tekens nauwkeurig als afzonderlijke tokens. Het scheidt het dollarteken correct van het getal en herkent punten als op zichzelf staande tokens. Deze genuanceerde tokenisatie is essentieel voor veel NLP-taken, waarbij de precieze afbakening van woorden en interpunctie de nauwkeurigheid en inzichten van de analyse aanzienlijk kan beïnvloeden.

question mark

Gegeven de zin "It wasn't me, I swear!", wat is het resultaat van het toepassen van de split()-methode hierop?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 3
some-alt