Ordklassemærkning
Stryg for at vise menuen
Forståelse af POS-tagging
Vi har nævnt, at part-of-speech-tagging er gavnligt for lemmatisering, hvilket er dens primære rolle i tekstforbehandling, så lad os gennemgå denne proces mere detaljeret.
Part of speech (POS) tagging er processen, hvor et ord i en tekst (korpus) markeres som tilhørende en bestemt ordklasse (f.eks. substantiv eller verbum), baseret på både dets definition og dets kontekst — dvs. dets forhold til tilstødende og beslægtede ord i en sætning, frase eller et afsnit.
Brugen af fulde ordklassebetegnelser (f.eks. "verbum" eller "substantiv") kan blive ret omstændeligt, især med store korpus. Derfor anvendes korte repræsentationer, kendt som tags, i stedet. For eksempel "VB" i stedet for verbum. I praksis kan forskellige POS-taggere dog anvende 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 tuples, hvor hver tuple indeholder et token og dets tag. Linjen nltk.download('averaged_perceptron_tagger_eng') starter download af datasættet og de modeller, 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 kunne 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