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 med Python

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 opp tekst i ord og setninger på, passer de ikke alltid til spesifikke behov innen tekstbehandling. La oss derfor 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å bestemte 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 trenger å dele opp tekst basert på mønstre som ikke håndteres godt av standard-tokenizere.

De viktigste parameterne til 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 tokens.

Bruk av RegexpTokenizer

Et alternativt tilnærming for tilpasset tokenisering innebærer bruk av RegexpTokenizer-klassen fra NLTKs tokenize-modul. Først opprettes en instans av RegexpTokenizer med ønsket regulære uttrykk-mønster som argument. Når en instans med spesifisert mønster er opprettet, kan teksten sendes 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 hvor én tokenizer skal brukes på ulike tekster, siden det gjør det mulig å opprette tokenizeren én gang og deretter bruke den på forskjellige 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 tokeniseringsregler som ikke enkelt kan håndteres av standardmetoder som word_tokenize(). I vårt eksempel, når vi ønsket å bruke tall som tokens, ville word_tokenize() ikke 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

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

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 opp tekst i ord og setninger på, passer de ikke alltid til spesifikke behov innen tekstbehandling. La oss derfor 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å bestemte 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 trenger å dele opp tekst basert på mønstre som ikke håndteres godt av standard-tokenizere.

De viktigste parameterne til 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 tokens.

Bruk av RegexpTokenizer

Et alternativt tilnærming for tilpasset tokenisering innebærer bruk av RegexpTokenizer-klassen fra NLTKs tokenize-modul. Først opprettes en instans av RegexpTokenizer med ønsket regulære uttrykk-mønster som argument. Når en instans med spesifisert mønster er opprettet, kan teksten sendes 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 hvor én tokenizer skal brukes på ulike tekster, siden det gjør det mulig å opprette tokenizeren én gang og deretter bruke den på forskjellige 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 tokeniseringsregler som ikke enkelt kan håndteres av standardmetoder som word_tokenize(). I vårt eksempel, når vi ønsket å bruke tall som tokens, ville word_tokenize() ikke 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