Python’s NLTK library bevat een robuuste tokenizer voor zinnen en een POS tagger. Python heeft een native tokenizer, de .split()
functie, die je een scheidingsteken kunt meegeven en het zal de string waarop de functie wordt aangeroepen splitsen op dat scheidingsteken. De NLTK tokenizer is robuuster. Het tokeniseert een zin in woorden en interpunctie. Gegeven de volgende code:
Hij zal de zin Can you please buy me an Arizona Ice Tea? It's .99."
als volgt tokeniseren:
Merk op dat de tokenizer 's
, '$'
, 0.99
, en .
als afzonderlijke tokens behandelt. Dit is belangrijk omdat samentrekkingen hun eigen semantische betekenis hebben en ook hun eigen deel van spraak, wat ons brengt bij het volgende onderdeel van de NLTK bibliotheek, de POS tagger. De POS tagger in de NLTK bibliotheek geeft specifieke tags voor bepaalde woorden. De lijst van POS tags is als volgt, met voorbeelden van waar elke POS voor staat.
- CC coördinerend voegwoord
- CD kardinaal cijfer
- DT determiner
- EX existentieel er (zoals: “er is” … zie het als “er bestaat”)
- FW vreemd woord
- IN voorzetsel/ondergeschikt voegwoord
- JJ bijvoeglijk naamwoord ‘groot’
- JJR bijvoeglijk naamwoord, vergelijkend ‘groter’
- JJS bijvoeglijk naamwoord, superlatief ‘grootste’
- LS lijstmarkeerder 1)
- MD modaal zou kunnen, zal
- NN zelfstandig naamwoord, enkelvoud ‘bureau’
- NNS zelfstandig naamwoord meervoud ‘bureaus’
- NNP eigennaamwoord, enkelvoud ‘Harrison’
- NNPS eigennaamwoord, meervoud ‘Amerikanen’
- PDT predeterminer ‘alle kinderen’
- POS bezittelijk uitgang ouder’s
- PRP persoonlijk voornaamwoord ik, hij, zij
- PRP$ bezittelijk voornaamwoord mijn, zijn, haar
- RB bijwoord zeer, zwijgend,
- RBR bijwoord, vergelijkend beter
- RBS bijwoord, superlatief beste
- RP deeltje opgeven
- TO, om ‘naar’ de winkel te gaan.
- UH tussenwerpsel, errrrrrm
- VB werkwoord, grondvorm nemen
- VBD werkwoord, verleden tijd nemen
- VBG werkwoord, gerundium/tegenwoordig deelwoord nemen
- VBN werkwoord, voltooid deelwoord nemen
- VBP werkwoord, zing. tegenwoordige, niet-3d nemen
- VBZ werkwoord, 3de persoon zing. heden neemt
- WDT wh-determiner which
- WP wh-pronoun wie, wat
- WP$ bezittelijk wh-pronoun wiens
- WRB wh-abb waar, wanneer
Zoals u kunt zien op regel 5 van de bovenstaande code, moet de .pos_tag()
functie een getoken zin doorgegeven krijgen om te taggen. Het taggen wordt gedaan door middel van een getraind model in de NLTK bibliotheek. De meegeleverde POS tagger is niet perfect, maar het levert vrij nauwkeurige resultaten op. Gebruikmakend van dezelfde zin als hierboven is de output:
Delen van spraak tagging kan belangrijk zijn voor syntactische en semantische analyse. Dus, voor iets als de zin hierboven heeft het woord can
verschillende semantische betekenissen. Een daarvan is een modaal voor vraagstelling, een andere is een container om voedsel of vloeistof in te bewaren, en weer een andere is een werkwoord dat de mogelijkheid om iets te doen aanduidt. Door een woord als dit een specifieke betekenis te geven, kan het programma het op de juiste manier behandelen, zowel in semantische als in syntactische analyses.