Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Tokenisering Ved Hjælp Af Regulære Udtryk | Grundlæggende Tekstforbehandling
Introduktion til NLP

bookTokenisering Ved Hjælp Af Regulære Udtryk

Hvorfor regulære udtryk?

Selvom funktionerne word_tokenize() og sent_tokenize() fra NLTK-biblioteket tilbyder praktiske metoder til at opdele tekst i ord og sætninger, er de ikke altid tilpasset specifikke behov inden for tekstbehandling. Derfor undersøger vi et alternativ: tokenisering ved hjælp af regulære udtryk (regex).

Note
Definition

Regulært udtryk (regex) er en sekvens af tegn, der definerer et søgemønster. Regulære udtryk kan anvendes til forskellige tekstbehandlingsopgaver, herunder søgning, erstatning og opdeling af tekst baseret på specifikke mønstre.

I forbindelse med tokenisering gør regex det muligt at definere tilpassede mønstre, der kan identificere tokens og giver dermed mere kontrol over tokeniseringsprocessen end foruddefinerede funktioner.

Brug af regexp_tokenize()

Heldigvis indeholder NLTK-biblioteket funktionen regexp_tokenize() i modulet tokenize, som opdeler en streng i understrenge ved hjælp af et regulært udtryk. Denne funktion er særligt nyttig, når tekst skal opdeles baseret på mønstre, der ikke håndteres optimalt af de standardiserede tokenizers.

De vigtigste parametre for regexp_tokenize() er de to første: text (strengen, der skal opdeles) og pattern (regulært udtryksmønster).

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

Som det ses, ligner processen brugen af funktionen word_tokenize(), men resultaterne kan variere afhængigt af mønsteret. I dette eksempel anvendes mønsteret '\w+' til at matche sekvenser af en eller flere alfanumeriske tegn (bogstaver og tal) samt understregninger.

Dette resulterer i en liste af ord uden tegnsætning, hvilket adskiller sig fra word_tokenize(), da denne typisk inkluderer tegnsætning som separate tokens.

Brug af RegexpTokenizer

En alternativ metode til brugerdefineret tokenisering indebærer brug af RegexpTokenizer-klassen fra NLTK's tokenize-modul. Først oprettes en instans af RegexpTokenizer med det ønskede regulære udtryk som argument. Når en instans med det specificerede mønster er oprettet, kan teksten gives som argument til dens tokenize()-metode.

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

Denne metode giver samme resultat, og den kan være mere fordelagtig i situationer, hvor der er behov for én tokenizer til forskellige tekster, da det gør det muligt at oprette tokenizer én gang og derefter anvende den på forskellige tekstinput uden at skulle definere mønsteret igen hver gang.

Lad os fortsætte med et andet eksempel. Antag, at kun cifre skal være vores tokens, så vil mønsteret '\d+' søge efter et eller flere cifre, som vist i eksemplet nedenfor:

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

Overordnet set muliggør regexp-tokenisering meget tilpasset tokenisering, hvilket gør det ideelt til håndtering af komplekse mønstre og specifikke tokeniseringsregler, som ikke let kan håndteres af standardmetoder som word_tokenize(). I vores eksempel, hvor vi ønskede at bruge tal som tokens, ville word_tokenize() ikke være egnet til denne opgave.

question mark

Hvilken af følgende beskriver bedst, hvad regulære udtryksmønstret '\w+' matcher, når det bruges med regexp_tokenize() eller RegexpTokenizer?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 3.45

bookTokenisering Ved Hjælp Af Regulære Udtryk

Stryg for at vise menuen

Hvorfor regulære udtryk?

Selvom funktionerne word_tokenize() og sent_tokenize() fra NLTK-biblioteket tilbyder praktiske metoder til at opdele tekst i ord og sætninger, er de ikke altid tilpasset specifikke behov inden for tekstbehandling. Derfor undersøger vi et alternativ: tokenisering ved hjælp af regulære udtryk (regex).

Note
Definition

Regulært udtryk (regex) er en sekvens af tegn, der definerer et søgemønster. Regulære udtryk kan anvendes til forskellige tekstbehandlingsopgaver, herunder søgning, erstatning og opdeling af tekst baseret på specifikke mønstre.

I forbindelse med tokenisering gør regex det muligt at definere tilpassede mønstre, der kan identificere tokens og giver dermed mere kontrol over tokeniseringsprocessen end foruddefinerede funktioner.

Brug af regexp_tokenize()

Heldigvis indeholder NLTK-biblioteket funktionen regexp_tokenize() i modulet tokenize, som opdeler en streng i understrenge ved hjælp af et regulært udtryk. Denne funktion er særligt nyttig, når tekst skal opdeles baseret på mønstre, der ikke håndteres optimalt af de standardiserede tokenizers.

De vigtigste parametre for regexp_tokenize() er de to første: text (strengen, der skal opdeles) og pattern (regulært udtryksmønster).

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

Som det ses, ligner processen brugen af funktionen word_tokenize(), men resultaterne kan variere afhængigt af mønsteret. I dette eksempel anvendes mønsteret '\w+' til at matche sekvenser af en eller flere alfanumeriske tegn (bogstaver og tal) samt understregninger.

Dette resulterer i en liste af ord uden tegnsætning, hvilket adskiller sig fra word_tokenize(), da denne typisk inkluderer tegnsætning som separate tokens.

Brug af RegexpTokenizer

En alternativ metode til brugerdefineret tokenisering indebærer brug af RegexpTokenizer-klassen fra NLTK's tokenize-modul. Først oprettes en instans af RegexpTokenizer med det ønskede regulære udtryk som argument. Når en instans med det specificerede mønster er oprettet, kan teksten gives som argument til dens tokenize()-metode.

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

Denne metode giver samme resultat, og den kan være mere fordelagtig i situationer, hvor der er behov for én tokenizer til forskellige tekster, da det gør det muligt at oprette tokenizer én gang og derefter anvende den på forskellige tekstinput uden at skulle definere mønsteret igen hver gang.

Lad os fortsætte med et andet eksempel. Antag, at kun cifre skal være vores tokens, så vil mønsteret '\d+' søge efter et eller flere cifre, som vist i eksemplet nedenfor:

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

Overordnet set muliggør regexp-tokenisering meget tilpasset tokenisering, hvilket gør det ideelt til håndtering af komplekse mønstre og specifikke tokeniseringsregler, som ikke let kan håndteres af standardmetoder som word_tokenize(). I vores eksempel, hvor vi ønskede at bruge tal som tokens, ville word_tokenize() ikke være egnet til denne opgave.

question mark

Hvilken af følgende beskriver bedst, hvad regulære udtryksmønstret '\w+' matcher, når det bruges med regexp_tokenize() eller RegexpTokenizer?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 5
some-alt