Ordklassmärkning
Svep för att visa menyn
Ordklassmärkning (POS-tagging) är processen att märka ett ord i en text (korpus) som tillhörande en viss ordklass (t.ex. substantiv eller verb), baserat på både dess definition och dess kontext — det vill säga dess relation till angränsande och relaterade ord i en fras, mening eller stycke.
Att använda fullständiga namn på ordklasser (t.ex. "verb" eller "substantiv") kan bli ganska omständligt, särskilt med stora korpusar. Därför används korta representationer, så kallade taggar, istället. Till exempel "VB" istället för verb. I praktiken kan dock olika POS-taggare använda något olika taggar och mer detaljerade taggar som "VBD" för verb i preteritum.
POS-tagging med NLTK
För att utföra ordklassmärkning med NLTK bör du importera funktionen pos_tag() direkt från nltk och tillämpa den på listan av strängar (token) genom att skicka 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)
Denna funktion returnerar en lista av tupler, där varje tuple innehåller ett token och dess tagg. Raden nltk.download('averaged_perceptron_tagger_eng') initierar nedladdningen av datasetet och modellerna som krävs för PerceptronTagger, vilket är standardtaggaren för ordklasstaggning i NLTK.
Denna taggare är baserad på averaged perceptron-modellen, en övervakad inlärningsalgoritm som är effektiv för storskalig textbearbetning, inklusive ordklasstaggning. PerceptronTagger väljs för sin balans mellan hastighet och noggrannhet, vilket gör den lämplig för många NLP-uppgifter som kräver ordklasstaggning. Den lär sig vikter för egenskaper baserat på träningsdata och använder dessa vikter för att förutsäga ordklasstaggning i osedd text.
För en bättre visuell representation kan vi konvertera resultatet till 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 använda pd.DataFrame(tagged_tokens, columns=['Token', 'POS tag']) utan att transponera DataFrame, så att varje rad representerar ett token-tag-par.
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