Tokenisering
Før vi faktisk går i gang med processen med tokenisering, skal vi først definere, hvad tokens er.
Tokens er uafhængige og minimale tekstkomponenter, der har en specifik syntaks og semantik.
Følgelig er tokenisering processen, hvor teksten opdeles i tokens. For eksempel består et tekstafsnit, et tekstdokument eller et tekstkorpus af flere komponenter, der kan opdeles i sætninger, fraser og ord. Faktisk omfatter de mest populære tokeniseringsmetoder sætnings- og ordtokenisering, som bruges til at opdele et tekstdokument (eller korpus) i sætninger og hver sætning i ord.
Et tekstkorpus (flertal: korpora) er et stort og struktureret sæt af tekster, der anvendes i lingvistisk og datalingvistisk forskning. Det er grundlæggende en omfattende samling af skriftligt eller mundtligt materiale, der fungerer som et repræsentativt udsnit af et bestemt sprog, dialekt eller emneområde.
Sætnings-tokenisering
Lad os begynde med sætnings-tokenisering. Heldigvis stiller nltk funktionen sent_tokenize() til rådighed i modulet tokenize. Det primære formål med denne funktion er at opdele en given tekst i en liste af sætninger.
sent_tokenize() benytter en forudtrænet model, typisk en maskinlæringsmodel, der er trænet på et stort tekstkorpus, til at identificere grænserne mellem sætninger. Den tager højde for forskellige signaler i teksten, såsom tegnsætning (f.eks. punktummer, udråbstegn, spørgsmålstegn), store bogstaver og andre sproglige mønstre, der typisk markerer afslutningen på én sætning og begyndelsen på en anden.
123456789# Importing the sent_tokenize() function from nltk.tokenize import sent_tokenize import nltk # Downloading the "Punkt" tokenizer models nltk.download('punkt_tab') text = "Hello world. This is an example of sentence tokenization. NLTK makes it easy!" # Sentence tokenization sentences = sent_tokenize(text) print(sentences)
Som du kan se, er der intet kompliceret her. Du skal blot give en streng med din tekst som et argument til sent_tokenize() for at opnå en liste over sætninger. Med hensyn til nltk.download('punkt_tab'), downloader denne kommando specifikt "Punkt"-tokenizer-modellerne. Ved at downloade Punkt-tokenizer-modellerne sikrer du, at NLTK har de nødvendige data til at udføre præcis sætnings- og ordtokenisering.
Tegnsætningstegnene i slutningen af hver sætning er inkluderet i sætningen.
Ordtokenisering
Ved ordtokenisering findes der flere almindelige metoder til at udføre dette; dog vil vi kun diskutere de to mest udbredte.
Den mest ligetil og enkleste metode er at bruge split()-funktionen fra string-klassen, som som standard bruger linjeskift, mellemrum og tabulatorer som skilletegn. Du kan dog også angive en vilkårlig streng som argument for at fungere som skilletegn.
123456text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
For at sikre, at tokens som 'This' og 'this' behandles ens, er det vigtigt at konvertere strengen til små bogstaver før tokenisering.
En mere fleksibel tilgang er dog at bruge funktionen word_tokenize() i modulet tokenize fra nltk-biblioteket. Denne funktion identificerer og adskiller ord baseret på mellemrum og tegnsætning, hvilket effektivt opdeler sætninger i deres enkelte ord. Ligesom sent_tokenize() kræver denne funktion et string-argument.
Lad os sammenligne denne tilgang med brugen af split()-metoden. Eksemplet nedenfor anvender word_tokenize():
12345678from nltk import word_tokenize import nltk nltk.download('punkt_tab') text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using word_tokenize() words = word_tokenize(text) print(words)
Lad os nu se, hvordan split()-metoden klarer sig med den samme tekst:
12345text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using split() words = text.split() print(words)
I vores eksempel identificerer word_tokenize(), i modsætning til split(), tegnsætning og specialtegn som separate tokens. Den adskiller korrekt dollartegnet fra tallet og genkender punktummer som selvstændige tokens. Denne nuancerede tokenisering er afgørende for mange NLP-opgaver, hvor den præcise opdeling af ord og tegnsætning kan have stor betydning for analysens nøjagtighed og indsigt.
Tak for dine kommentarer!
Spørg AI
Spørg AI
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
Tokenisering
Stryg for at vise menuen
Før vi faktisk går i gang med processen med tokenisering, skal vi først definere, hvad tokens er.
Tokens er uafhængige og minimale tekstkomponenter, der har en specifik syntaks og semantik.
Følgelig er tokenisering processen, hvor teksten opdeles i tokens. For eksempel består et tekstafsnit, et tekstdokument eller et tekstkorpus af flere komponenter, der kan opdeles i sætninger, fraser og ord. Faktisk omfatter de mest populære tokeniseringsmetoder sætnings- og ordtokenisering, som bruges til at opdele et tekstdokument (eller korpus) i sætninger og hver sætning i ord.
Et tekstkorpus (flertal: korpora) er et stort og struktureret sæt af tekster, der anvendes i lingvistisk og datalingvistisk forskning. Det er grundlæggende en omfattende samling af skriftligt eller mundtligt materiale, der fungerer som et repræsentativt udsnit af et bestemt sprog, dialekt eller emneområde.
Sætnings-tokenisering
Lad os begynde med sætnings-tokenisering. Heldigvis stiller nltk funktionen sent_tokenize() til rådighed i modulet tokenize. Det primære formål med denne funktion er at opdele en given tekst i en liste af sætninger.
sent_tokenize() benytter en forudtrænet model, typisk en maskinlæringsmodel, der er trænet på et stort tekstkorpus, til at identificere grænserne mellem sætninger. Den tager højde for forskellige signaler i teksten, såsom tegnsætning (f.eks. punktummer, udråbstegn, spørgsmålstegn), store bogstaver og andre sproglige mønstre, der typisk markerer afslutningen på én sætning og begyndelsen på en anden.
123456789# Importing the sent_tokenize() function from nltk.tokenize import sent_tokenize import nltk # Downloading the "Punkt" tokenizer models nltk.download('punkt_tab') text = "Hello world. This is an example of sentence tokenization. NLTK makes it easy!" # Sentence tokenization sentences = sent_tokenize(text) print(sentences)
Som du kan se, er der intet kompliceret her. Du skal blot give en streng med din tekst som et argument til sent_tokenize() for at opnå en liste over sætninger. Med hensyn til nltk.download('punkt_tab'), downloader denne kommando specifikt "Punkt"-tokenizer-modellerne. Ved at downloade Punkt-tokenizer-modellerne sikrer du, at NLTK har de nødvendige data til at udføre præcis sætnings- og ordtokenisering.
Tegnsætningstegnene i slutningen af hver sætning er inkluderet i sætningen.
Ordtokenisering
Ved ordtokenisering findes der flere almindelige metoder til at udføre dette; dog vil vi kun diskutere de to mest udbredte.
Den mest ligetil og enkleste metode er at bruge split()-funktionen fra string-klassen, som som standard bruger linjeskift, mellemrum og tabulatorer som skilletegn. Du kan dog også angive en vilkårlig streng som argument for at fungere som skilletegn.
123456text = "This is an example of word tokenization." # Convert the text to lowercase text = text.lower() # Word tokenization using split() words = text.split() print(words)
For at sikre, at tokens som 'This' og 'this' behandles ens, er det vigtigt at konvertere strengen til små bogstaver før tokenisering.
En mere fleksibel tilgang er dog at bruge funktionen word_tokenize() i modulet tokenize fra nltk-biblioteket. Denne funktion identificerer og adskiller ord baseret på mellemrum og tegnsætning, hvilket effektivt opdeler sætninger i deres enkelte ord. Ligesom sent_tokenize() kræver denne funktion et string-argument.
Lad os sammenligne denne tilgang med brugen af split()-metoden. Eksemplet nedenfor anvender word_tokenize():
12345678from nltk import word_tokenize import nltk nltk.download('punkt_tab') text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using word_tokenize() words = word_tokenize(text) print(words)
Lad os nu se, hvordan split()-metoden klarer sig med den samme tekst:
12345text = "Good muffins cost $3.88 in New York. Please buy me two of them. Thanks" text = text.lower() # Word tokenization using split() words = text.split() print(words)
I vores eksempel identificerer word_tokenize(), i modsætning til split(), tegnsætning og specialtegn som separate tokens. Den adskiller korrekt dollartegnet fra tallet og genkender punktummer som selvstændige tokens. Denne nuancerede tokenisering er afgørende for mange NLP-opgaver, hvor den præcise opdeling af ord og tegnsætning kan have stor betydning for analysens nøjagtighed og indsigt.
Tak for dine kommentarer!