Biblioteka NLTK Pythona zawiera solidny tokenizer zdań i tagger POS. Python posiada natywny tokenizer, funkcję .split()
, której można przekazać separator, a ona podzieli łańcuch, na którym funkcja jest wywołana, na ten separator. Tokenizator NLTK jest bardziej rozbudowany. Tokenizuje on zdanie na słowa i znaki interpunkcyjne. Biorąc pod uwagę następujący kod:
będzie on tokenizował zdanie Can you please buy me an Arizona Ice Tea? It's .99."
w następujący sposób:
Zauważ, że tokenizer traktuje 's
, '$'
, 0.99
i .
jako oddzielne tokeny. Jest to ważne, ponieważ kontrakcje mają swoje własne znaczenie semantyczne, jak również mają swoją własną część mowy, co prowadzi nas do następnej części biblioteki NLTK – tagera POS. Tagger POS w bibliotece NLTK tworzy specyficzne znaczniki dla określonych słów. Lista znaczników POS jest następująca, z przykładami tego, co każdy POS oznacza.
- CC spójnik koordynacyjny
- CD cyfra kardynalna
- DT determinator
- EX egzystencjalny there (jak: „there is” … myśl o tym jak o „istnieje”)
- FW wyraz obcy
- IN przyimek/ spójnik podrzędny
- JJ przymiotnik 'duży’
- JJR przymiotnik, porównawczy 'większy’
- JS przymiotnik,
- LS znacznik listy 1)
- MD modalne could, will
- NN rzeczownik, liczba pojedyncza 'desk’
- NNS rzeczownik liczba mnoga 'desks’
- NNP rzeczownik właściwy, liczba pojedyncza 'Harrison’
- NNNPS rzeczownik właściwy, liczba mnoga 'Amerykanie’
- PDT predykator 'wszystkie dzieci’
- POS końcówka dzierżawcza parent’s
- PRP zaimek osobowy I, he, she
- PRP$ zaimek dzierżawczy my, his, hers
- RB przysłówek bardzo, cicho,
- RBR przysłówek, porównawczo lepszy
- RBS przysłówek, ponadprzeciętnie najlepszy
- RP cząstka give up
- TO, to go 'to’ the store.
- UH wtrącenie, errrrrrm
- VB czasownik, forma podstawowa take
- VBD czasownik, czas przeszły took
- VBG czasownik, gerund/present participle taking
- VBN czasownik, past participle taken
- VBP czasownik, sing. present, non-3d take
- VBZ czasownik, 3. osoba sing. present takes
- WDT wh-determiner which
- WP wh-pronoun who, what
- WP$ possessive wh-pronoun whose
- WRB wh-abverb where, when
Jak widać w linii 5 powyższego kodu, funkcja .pos_tag()
funkcja musi otrzymać tokenizowane zdanie do otagowania. Tagowanie odbywa się za pomocą modelu wytrenowanego w bibliotece NLTK. Dołączony POS tagger nie jest idealny, ale daje całkiem dokładne wyniki. Używając tego samego zdania co powyżej, wynik jest następujący:
Oznaczanie części mowy może być ważne dla analizy syntaktycznej i semantycznej. Tak więc, dla czegoś takiego jak zdanie powyżej, słowo can
ma kilka znaczeń semantycznych. Jednym z nich jest modal do tworzenia pytań, innym pojemnik do przechowywania jedzenia lub płynów, a jeszcze innym czasownik oznaczający zdolność do zrobienia czegoś. Nadanie słowu takiemu jak to określonego znaczenia pozwala programowi na potraktowanie go we właściwy sposób zarówno w analizie semantycznej, jak i syntaktycznej.