Ordklassemærkning
Stryg for at vise menuen
Part-of-speech (POS) tagging er processen med at markere et ord i en tekst (korpus) som svarende til en bestemt ordklasse (f.eks. substantiv eller verbum), baseret på både dets definition og dets kontekst — dvs. dets forhold til tilstødende og relaterede ord i en sætning, frase eller et afsnit.
Brug af fulde ordklassebetegnelser (f.eks. "verbum" eller "substantiv") kan blive ret besværligt, især med store korpus. Derfor anvendes korte repræsentationer, kendt som tags. For eksempel, "VB" i stedet for verbum. I praksis kan forskellige POS-taggers dog bruge lidt forskellige tags og mere detaljerede tags som "VBD" for verber i datid.
POS-tagging med NLTK
For at udføre part-of-speech tagging med NLTK skal du importere funktionen pos_tag() direkte fra nltk og anvende den på listen af strenge (tokens) ved at sende den som argument.
123456789101112from nltk.tokenize import word_tokenize from nltk import pos_tag import nltk nltk.download('punkt_tab') # Download the model needed for NLTK's POS tagging nltk.download('averaged_perceptron_tagger_eng') text = "One of the key NLP tasks is part of speech tagging" text = text.lower() tokens = word_tokenize(text) # Perform POS tagging tagged_tokens = pos_tag(tokens) print(tagged_tokens)
Denne funktion returnerer en liste af tupler, hvor hver tuple indeholder et token og dets mærkat. Linjen nltk.download('averaged_perceptron_tagger_eng') igangsætter download af datasættet og modellerne, der er nødvendige for PerceptronTagger, som er den standard POS-tagger, der anvendes af NLTK.
Denne tagger er baseret på averaged perceptron-modellen, en superviseret læringsalgoritme, der er effektiv til storskalabehandling af tekst, herunder POS-tagging. PerceptronTagger vælges for sin balance mellem hastighed og nøjagtighed, hvilket gør den velegnet til en bred vifte af NLP-opgaver, der kræver POS-tagging. Den lærer vægte for funktioner baseret på de træningsdata, den får, og bruger disse vægte til at forudsige POS-tags i ukendt tekst.
For bedre visuel repræsentation kan vi konvertere resultatet til en pandas DataFrame:
1234567891011121314from nltk.tokenize import word_tokenize from nltk import pos_tag import nltk import pandas as pd nltk.download('punkt_tab') # Download the model needed for NLTK's POS tagging nltk.download('averaged_perceptron_tagger_eng') text = "One of the key NLP tasks is part of speech tagging" text = text.lower() tokens = word_tokenize(text) # Perform POS tagging tagged_tokens = pos_tag(tokens) # Convert to DataFrame print(pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']).T)
Alternativt kan vi bruge pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']) uden at transponere DataFrame, så hver række repræsenterer et token-tag-par.
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