Tokenisering 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).
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).
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)
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().
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)
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:
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)
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.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
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
Tokenisering 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).
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).
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)
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().
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)
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:
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)
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.
Tack för dina kommentarer!