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

bookTokenisatie met Reguliere Expressies

Waarom reguliere expressies?

Hoewel de functies word_tokenize() en sent_tokenize() uit de NLTK-bibliotheek handige methoden bieden om tekst op te splitsen in woorden en zinnen, zijn deze niet altijd geschikt voor specifieke tekstverwerkingseisen. Daarom verkennen we een alternatieve benadering: tokenisatie met behulp van reguliere expressies (regex).

Note
Definitie

Reguliere expressie (regex) is een reeks tekens die een zoekpatroon definieert. Reguliere expressies kunnen worden gebruikt voor verschillende tekstverwerkingstaken, waaronder zoeken, vervangen en splitsen van tekst op basis van specifieke patronen.

In de context van tokenisatie maakt regex het mogelijk om aangepaste patronen te definiëren die tokens kunnen identificeren, waardoor er meer controle is over het tokenisatieproces dan bij vooraf gebouwde functies.

Gebruik van regexp_tokenize()

Gelukkig bevat de NLTK-bibliotheek de functie regexp_tokenize() in de tokenize-module, waarmee een string in subreeksen wordt getokeniseerd met behulp van een reguliere expressie. Deze functie is bijzonder nuttig wanneer tekst getokeniseerd moet worden op basis van patronen die niet goed worden verwerkt door de standaardtokenizers.

De belangrijkste parameters van regexp_tokenize() zijn de eerste twee parameters: text (de te tokeniseren string) en pattern (reguliere expressie patroon).

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Zoals te zien is, lijkt het proces op het gebruik van de functie word_tokenize(), maar de resultaten kunnen variëren afhankelijk van het patroon. In ons voorbeeld wordt het patroon '\w+' gebruikt om reeksen van één of meer alfanumerieke tekens (letters en cijfers) en underscores te matchen.

Dit resulteert in een lijst van woorden zonder leestekens, wat verschilt van word_tokenize(), aangezien deze laatste doorgaans leestekens als afzonderlijke tokens opneemt.

Gebruik van RegexpTokenizer

Een alternatieve benadering voor aangepaste tokenisatie maakt gebruik van de RegexpTokenizer-klasse uit de tokenize-module van NLTK. Maak eerst een instantie van RegexpTokenizer aan met het gewenste reguliere expressiepatroon als argument. Zodra een instantie met het opgegeven patroon is aangemaakt, kun je je tekst als argument doorgeven aan de tokenize()-methode.

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Deze methode levert dezelfde resultaten op en kan beter zijn in situaties waarin één tokenizer voor verschillende teksten nodig is, omdat het mogelijk is de tokenizer één keer aan te maken en vervolgens toe te passen op diverse tekstinvoer zonder het patroon telkens opnieuw te definiëren.

Laten we verdergaan met een ander voorbeeld. Stel dat we alleen cijfers als tokens willen, dan zal het patroon '\d+' zoeken naar één of meer cijfers, zoals in het onderstaande voorbeeld:

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my $100 back right now or $20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Over het algemeen maakt regexp-tokenisatie zeer aangepaste tokenisatie mogelijk, waardoor het ideaal is voor het verwerken van complexe patronen en specifieke tokenisatieregels die niet eenvoudig beheerd kunnen worden met standaardmethoden zoals word_tokenize(). In ons voorbeeld, wanneer we getallen als tokens wilden gebruiken, zou word_tokenize() hiervoor niet geschikt zijn.

question mark

Welke van de volgende beschrijvingen geeft het beste weer wat het reguliere expressiepatroon '\w+' matcht wanneer het wordt gebruikt met regexp_tokenize() of RegexpTokenizer?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

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

Suggested prompts:

Can you explain how to write custom regex patterns for different tokenization needs?

What are some common use cases where regexp_tokenize() is preferred over word_tokenize()?

Can you show more examples of tokenization with different regex patterns?

Awesome!

Completion rate improved to 3.45

bookTokenisatie met Reguliere Expressies

Veeg om het menu te tonen

Waarom reguliere expressies?

Hoewel de functies word_tokenize() en sent_tokenize() uit de NLTK-bibliotheek handige methoden bieden om tekst op te splitsen in woorden en zinnen, zijn deze niet altijd geschikt voor specifieke tekstverwerkingseisen. Daarom verkennen we een alternatieve benadering: tokenisatie met behulp van reguliere expressies (regex).

Note
Definitie

Reguliere expressie (regex) is een reeks tekens die een zoekpatroon definieert. Reguliere expressies kunnen worden gebruikt voor verschillende tekstverwerkingstaken, waaronder zoeken, vervangen en splitsen van tekst op basis van specifieke patronen.

In de context van tokenisatie maakt regex het mogelijk om aangepaste patronen te definiëren die tokens kunnen identificeren, waardoor er meer controle is over het tokenisatieproces dan bij vooraf gebouwde functies.

Gebruik van regexp_tokenize()

Gelukkig bevat de NLTK-bibliotheek de functie regexp_tokenize() in de tokenize-module, waarmee een string in subreeksen wordt getokeniseerd met behulp van een reguliere expressie. Deze functie is bijzonder nuttig wanneer tekst getokeniseerd moet worden op basis van patronen die niet goed worden verwerkt door de standaardtokenizers.

De belangrijkste parameters van regexp_tokenize() zijn de eerste twee parameters: text (de te tokeniseren string) en pattern (reguliere expressie patroon).

123456
from nltk.tokenize import regexp_tokenize text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = regexp_tokenize(text, r'\w+') print(tokens)
copy

Zoals te zien is, lijkt het proces op het gebruik van de functie word_tokenize(), maar de resultaten kunnen variëren afhankelijk van het patroon. In ons voorbeeld wordt het patroon '\w+' gebruikt om reeksen van één of meer alfanumerieke tekens (letters en cijfers) en underscores te matchen.

Dit resulteert in een lijst van woorden zonder leestekens, wat verschilt van word_tokenize(), aangezien deze laatste doorgaans leestekens als afzonderlijke tokens opneemt.

Gebruik van RegexpTokenizer

Een alternatieve benadering voor aangepaste tokenisatie maakt gebruik van de RegexpTokenizer-klasse uit de tokenize-module van NLTK. Maak eerst een instantie van RegexpTokenizer aan met het gewenste reguliere expressiepatroon als argument. Zodra een instantie met het opgegeven patroon is aangemaakt, kun je je tekst als argument doorgeven aan de tokenize()-methode.

12345678
from nltk.tokenize import RegexpTokenizer # Define a tokenizer with a regular expression tokenizer = RegexpTokenizer(r'\w+') text = "Let's try, regex tokenization. Does it work? Yes, it does!" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Deze methode levert dezelfde resultaten op en kan beter zijn in situaties waarin één tokenizer voor verschillende teksten nodig is, omdat het mogelijk is de tokenizer één keer aan te maken en vervolgens toe te passen op diverse tekstinvoer zonder het patroon telkens opnieuw te definiëren.

Laten we verdergaan met een ander voorbeeld. Stel dat we alleen cijfers als tokens willen, dan zal het patroon '\d+' zoeken naar één of meer cijfers, zoals in het onderstaande voorbeeld:

1234567
from nltk.tokenize import RegexpTokenizer tokenizer = RegexpTokenizer(r'\d+') text = "Give my $100 back right now or $20 each month" text = text.lower() # Tokenize a sentence tokens = tokenizer.tokenize(text) print(tokens)
copy

Over het algemeen maakt regexp-tokenisatie zeer aangepaste tokenisatie mogelijk, waardoor het ideaal is voor het verwerken van complexe patronen en specifieke tokenisatieregels die niet eenvoudig beheerd kunnen worden met standaardmethoden zoals word_tokenize(). In ons voorbeeld, wanneer we getallen als tokens wilden gebruiken, zou word_tokenize() hiervoor niet geschikt zijn.

question mark

Welke van de volgende beschrijvingen geeft het beste weer wat het reguliere expressiepatroon '\w+' matcht wanneer het wordt gebruikt met regexp_tokenize() of RegexpTokenizer?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 5
some-alt