Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Tokenisering med Reguljära Uttryck | Grunderna i Textförbehandling
Introduktion till NLP

bookTokenisering med Reguljära Uttryck

Varför reguljära uttryck?

Även om funktionerna word_tokenize() och sent_tokenize() från NLTK-biblioteket erbjuder bekväma sätt att dela upp text i ord och meningar, passar de inte alltid alla specifika behov inom textbehandling. Därför undersöker vi ett alternativt tillvägagångssätt: tokenisering med reguljära uttryck (regex).

Note
Definition

Reguljärt uttryck (regex) är en sekvens av tecken som definierar ett sökmönster. Reguljära uttryck kan användas för olika textbehandlingsuppgifter, inklusive att söka, ersätta och dela upp text baserat på specifika mönster.

I samband med tokenisering möjliggör regex att definiera anpassade mönster som kan identifiera token, vilket ger mer kontroll över tokeniseringsprocessen än fördefinierade funktioner.

Användning av regexp_tokenize()

Lyckligtvis innehåller NLTK-biblioteket funktionen regexp_tokenize() i modulen tokenize, som delar upp en sträng i delsträngar med hjälp av ett reguljärt uttryck. Denna funktion är särskilt användbar när du behöver tokenisera text baserat på mönster som inte hanteras väl av standardtokenizers.

De viktigaste parametrarna för regexp_tokenize() är dess två första: text (strängen som ska tokeniseras) och pattern (reguljärt uttrycksmö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 kan se är processen liknande användningen av funktionen word_tokenize(), men resultaten kan variera beroende på mönstret. I vårt exempel används mönstret '\w+' för att matcha sekvenser av en eller flera alfanumeriska tecken (bokstäver och siffror) samt understreck.

Detta resulterar i en lista med ord utan skiljetecken, vilket skiljer sig från word_tokenize() genom att den senare vanligtvis inkluderar skiljetecken som separata token.

Använda RegexpTokenizer

Ett alternativt tillvägagångssätt för anpassad tokenisering innebär att använda klassen RegexpTokenizer från NLTK:s modul tokenize. Skapa först en instans av RegexpTokenizer med önskat reguljärt uttrycksmönster som argument. När en instans med angivet mönster har skapats kan du skicka in din text som ett argument till dess metod tokenize().

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

Detta tillvägagångssätt ger samma resultat och kan vara bättre i situationer där du behöver en tokenizer för olika texter, eftersom det gör det möjligt att skapa tokenizern en gång och sedan använda den på olika textinmatningar utan att behöva definiera om mönstret varje gång.

Vi går vidare med ett annat exempel. Antag att vi endast vill att siffror ska vara våra tokens, då kommer vårt mönster '\d+' att söka efter en eller flera siffror, som i exemplet nedan:

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

Sammanfattningsvis möjliggör regexp-tokenisering mycket anpassad tokenisering, vilket gör den idealisk för att hantera komplexa mönster och specifika tokeniseringsregler som inte enkelt hanteras av standardmetoder som word_tokenize(). I vårt exempel, när vi ville använda siffror som token, skulle word_tokenize() inte vara lämplig för denna uppgift.

question mark

Vilket av följande beskriver bäst vad reguljära uttrycksmönstret '\w+' matchar när det används med regexp_tokenize() eller RegexpTokenizer?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

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 med Reguljära Uttryck

Svep för att visa menyn

Varför reguljära uttryck?

Även om funktionerna word_tokenize() och sent_tokenize() från NLTK-biblioteket erbjuder bekväma sätt att dela upp text i ord och meningar, passar de inte alltid alla specifika behov inom textbehandling. Därför undersöker vi ett alternativt tillvägagångssätt: tokenisering med reguljära uttryck (regex).

Note
Definition

Reguljärt uttryck (regex) är en sekvens av tecken som definierar ett sökmönster. Reguljära uttryck kan användas för olika textbehandlingsuppgifter, inklusive att söka, ersätta och dela upp text baserat på specifika mönster.

I samband med tokenisering möjliggör regex att definiera anpassade mönster som kan identifiera token, vilket ger mer kontroll över tokeniseringsprocessen än fördefinierade funktioner.

Användning av regexp_tokenize()

Lyckligtvis innehåller NLTK-biblioteket funktionen regexp_tokenize() i modulen tokenize, som delar upp en sträng i delsträngar med hjälp av ett reguljärt uttryck. Denna funktion är särskilt användbar när du behöver tokenisera text baserat på mönster som inte hanteras väl av standardtokenizers.

De viktigaste parametrarna för regexp_tokenize() är dess två första: text (strängen som ska tokeniseras) och pattern (reguljärt uttrycksmö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 kan se är processen liknande användningen av funktionen word_tokenize(), men resultaten kan variera beroende på mönstret. I vårt exempel används mönstret '\w+' för att matcha sekvenser av en eller flera alfanumeriska tecken (bokstäver och siffror) samt understreck.

Detta resulterar i en lista med ord utan skiljetecken, vilket skiljer sig från word_tokenize() genom att den senare vanligtvis inkluderar skiljetecken som separata token.

Använda RegexpTokenizer

Ett alternativt tillvägagångssätt för anpassad tokenisering innebär att använda klassen RegexpTokenizer från NLTK:s modul tokenize. Skapa först en instans av RegexpTokenizer med önskat reguljärt uttrycksmönster som argument. När en instans med angivet mönster har skapats kan du skicka in din text som ett argument till dess metod tokenize().

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

Detta tillvägagångssätt ger samma resultat och kan vara bättre i situationer där du behöver en tokenizer för olika texter, eftersom det gör det möjligt att skapa tokenizern en gång och sedan använda den på olika textinmatningar utan att behöva definiera om mönstret varje gång.

Vi går vidare med ett annat exempel. Antag att vi endast vill att siffror ska vara våra tokens, då kommer vårt mönster '\d+' att söka efter en eller flera siffror, som i exemplet nedan:

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

Sammanfattningsvis möjliggör regexp-tokenisering mycket anpassad tokenisering, vilket gör den idealisk för att hantera komplexa mönster och specifika tokeniseringsregler som inte enkelt hanteras av standardmetoder som word_tokenize(). I vårt exempel, när vi ville använda siffror som token, skulle word_tokenize() inte vara lämplig för denna uppgift.

question mark

Vilket av följande beskriver bäst vad reguljära uttrycksmönstret '\w+' matchar när det används med regexp_tokenize() eller RegexpTokenizer?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 5
some-alt