Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Tokenisering ved Bruk av Regulære Uttrykk | Grunnleggende Tekstforbehandling
Introduksjon til NLP

bookTokenisering ved Bruk av Regulære Uttrykk

Hvorfor regulære uttrykk?

Selv om funksjonene word_tokenize() og sent_tokenize() fra NLTK-biblioteket tilbyr praktiske måter å dele tekst inn i ord og setninger på, passer de ikke alltid til spesifikke behov innen tekstbehandling. Derfor skal vi utforske et alternativ: tokenisering ved bruk av regulære uttrykk (regex).

Note
Definisjon

Regulært uttrykk (regex) er en sekvens av tegn som definerer et søkemønster. Regulære uttrykk kan brukes til ulike oppgaver innen tekstbehandling, inkludert søk, erstatning og splitting av tekst basert på spesifikke mønstre.

I sammenheng med tokenisering gir regex mulighet til å definere egendefinerte mønstre som kan identifisere token, og gir dermed mer kontroll over tokeniseringsprosessen enn forhåndsdefinerte funksjoner.

Bruk av regexp_tokenize()

Heldigvis inkluderer NLTK-biblioteket funksjonen regexp_tokenize() i tokenize-modulen, som deler opp en streng i delstrenger ved hjelp av et regulært uttrykk. Denne funksjonen er spesielt nyttig når du må dele opp tekst basert på mønstre som ikke håndteres godt av standard-tokenizere.

De viktigste parameterne for regexp_tokenize() er de to første: text (strengen som skal deles opp) og pattern (regulært uttrykk-mø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 du ser, er prosessen lik bruk av funksjonen word_tokenize(), men resultatene kan variere avhengig av mønsteret. I vårt eksempel brukes mønsteret '\w+' for å matche sekvenser av én eller flere alfanumeriske tegn (bokstaver og tall) og understreker.

Dette gir en liste med ord uten skilletegn, noe som skiller seg fra word_tokenize(), hvor sistnevnte vanligvis inkluderer skilletegn som egne token.

Bruk av RegexpTokenizer

Et alternativt tilnærming for tilpasset tokenisering innebærer bruk av klassen RegexpTokenizer fra NLTKs tokenize-modul. Først opprettes en instans av RegexpTokenizer med ønsket regulære uttrykksmønster som argument. Når en instans med spesifisert mønster er opprettet, kan du sende inn teksten din 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 tilnærmingen gir samme resultat, og kan være bedre i tilfeller der du trenger én tokenizer for ulike tekster, siden det lar deg opprette tokenizer én gang og deretter bruke den på ulike tekstinnganger uten å måtte definere mønsteret på nytt hver gang.

La oss gå videre med et annet eksempel. Anta at vi kun ønsker sifre som tokens, da vil mønsteret vårt '\d+' søke etter ett eller flere sifre, som i eksempelet under:

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

Totalt sett gir regexp-tokenisering svært tilpasset tokenisering, noe som gjør det ideelt for å håndtere komplekse mønstre og spesifikke regler for tokenisering som ikke enkelt kan håndteres av standardmetoder som word_tokenize(). I vårt eksempel, når vi ønsket å bruke tall som tokens, ville ikke word_tokenize() være egnet for denne oppgaven.

question mark

Hvilket av følgende beskriver best hva regulære uttrykk-mønsteret '\w+' matcher når det brukes med regexp_tokenize() eller RegexpTokenizer?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 3.45

bookTokenisering ved Bruk av Regulære Uttrykk

Sveip for å vise menyen

Hvorfor regulære uttrykk?

Selv om funksjonene word_tokenize() og sent_tokenize() fra NLTK-biblioteket tilbyr praktiske måter å dele tekst inn i ord og setninger på, passer de ikke alltid til spesifikke behov innen tekstbehandling. Derfor skal vi utforske et alternativ: tokenisering ved bruk av regulære uttrykk (regex).

Note
Definisjon

Regulært uttrykk (regex) er en sekvens av tegn som definerer et søkemønster. Regulære uttrykk kan brukes til ulike oppgaver innen tekstbehandling, inkludert søk, erstatning og splitting av tekst basert på spesifikke mønstre.

I sammenheng med tokenisering gir regex mulighet til å definere egendefinerte mønstre som kan identifisere token, og gir dermed mer kontroll over tokeniseringsprosessen enn forhåndsdefinerte funksjoner.

Bruk av regexp_tokenize()

Heldigvis inkluderer NLTK-biblioteket funksjonen regexp_tokenize() i tokenize-modulen, som deler opp en streng i delstrenger ved hjelp av et regulært uttrykk. Denne funksjonen er spesielt nyttig når du må dele opp tekst basert på mønstre som ikke håndteres godt av standard-tokenizere.

De viktigste parameterne for regexp_tokenize() er de to første: text (strengen som skal deles opp) og pattern (regulært uttrykk-mø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 du ser, er prosessen lik bruk av funksjonen word_tokenize(), men resultatene kan variere avhengig av mønsteret. I vårt eksempel brukes mønsteret '\w+' for å matche sekvenser av én eller flere alfanumeriske tegn (bokstaver og tall) og understreker.

Dette gir en liste med ord uten skilletegn, noe som skiller seg fra word_tokenize(), hvor sistnevnte vanligvis inkluderer skilletegn som egne token.

Bruk av RegexpTokenizer

Et alternativt tilnærming for tilpasset tokenisering innebærer bruk av klassen RegexpTokenizer fra NLTKs tokenize-modul. Først opprettes en instans av RegexpTokenizer med ønsket regulære uttrykksmønster som argument. Når en instans med spesifisert mønster er opprettet, kan du sende inn teksten din 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 tilnærmingen gir samme resultat, og kan være bedre i tilfeller der du trenger én tokenizer for ulike tekster, siden det lar deg opprette tokenizer én gang og deretter bruke den på ulike tekstinnganger uten å måtte definere mønsteret på nytt hver gang.

La oss gå videre med et annet eksempel. Anta at vi kun ønsker sifre som tokens, da vil mønsteret vårt '\d+' søke etter ett eller flere sifre, som i eksempelet under:

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

Totalt sett gir regexp-tokenisering svært tilpasset tokenisering, noe som gjør det ideelt for å håndtere komplekse mønstre og spesifikke regler for tokenisering som ikke enkelt kan håndteres av standardmetoder som word_tokenize(). I vårt eksempel, når vi ønsket å bruke tall som tokens, ville ikke word_tokenize() være egnet for denne oppgaven.

question mark

Hvilket av følgende beskriver best hva regulære uttrykk-mønsteret '\w+' matcher når det brukes med regexp_tokenize() eller RegexpTokenizer?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 5
some-alt