Tokenisatie 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 ze mogelijk niet altijd geschikt voor specifieke tekstverwerkingseisen. Daarom verkennen we een alternatieve benadering: tokenisatie met behulp van reguliere expressies (regex).
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 meer controle over het tokenisatieproces ontstaat dan met 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).
123456from 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)
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() doordat deze laatste doorgaans leestekens als aparte 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.
12345678from 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)
Deze methode levert dezelfde resultaten op en kan beter zijn in situaties waarin je één tokenizer voor verschillende teksten nodig hebt, omdat je de tokenizer slechts één keer hoeft aan te maken en vervolgens op verschillende tekstinvoeren kunt toepassen 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 ons patroon '\d+' zoeken naar één of meer cijfers, zoals in het onderstaande voorbeeld:
1234567from 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)
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 te beheren zijn met standaardmethoden zoals word_tokenize(). In ons voorbeeld, toen we getallen als tokens wilden gebruiken, was word_tokenize() hiervoor niet geschikt.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.