spaCy tokenization dapat dikatakan smart, karena dapat memisahkan text menjadi token yang sesuai dengan konteksnya.
Token berisi kata dari text(kalimat), tidak ada perubahan lemma (bentuk dasar dari sebuah kata) atau stem. Token adalah dasar dari Doc object. Kita dapat memahami arti dari text berdasarkan token dan hubungan antara token.
import spacy
nlp = spacy.load('en_core_web_sm')
mystring = '"We\'re traveling to D.I. Yogyakarta!"'
print(mystring)
# "We're traveling to D.I. Yogyakarta!"
doc = nlp(mystring)
for token in doc:
print(token.text, end=' | ')
#" | We | 're | traveling | to | D.I. | Yogyakarta | ! | " |
Pada contoh diatas, spaCy melakukan beberapa tahap saat melakukan tokenization,
- Memisahkan berdasarkan white space.
- Memeriksa exception, character khusus seperti ‘ pada we’re.
- Memeriksa prefix, character diawal kata, contoh: ” $
- Memeriksa suffix, character diakhir kata, contoh: km , ) ? !
- Memeriksa infix, character diantara kata, contoh: – / .
Berikut contoh dimana spaCy dengan pintar bisa memahami alamat email, alamat website dan kata yang terhubung dengan tanda – sebagai satu kesatuan.
doc2 = nlp(u"We're here to help! Send support-mail, email support@example.com or visit us at http://www.example.com!")
for t in doc2:
print(t)
We
're
here
to
help
!
Send
support
-
mail
,
email
support@example.com
or
visit
us
at
http://www.example.com
!
Hal Penting Seputar Tokens
Jumlah token, untuk mengetahui jumlah token, dapat menggunakan perintah len().
len(doc) # 9
Index dan slice, kita dapat mengakses doc object berdasar index atau mengambil irisan dari doc.
doc5 = nlp(u'Someday is not a day of the week.') # Retrieve the third token: doc5[2] # not # slicing doc5[2:5] # not a day # slicing dengan negatif index doc5[-4:] # of the week.
Token assignment, kita tidak dapat melakukan token assignment. spaCy akan mengembalikan error.
doc5[2] = 'test'
Akan mengembalikan error TypeError: ‘spacy.tokens.doc.Doc’ object does not support item assignment
Jika Anda ingin lebih memahami secara detail apa yang dilakukan oleh spaCy saat melakukan tokenization, silakan kunjungi di https://spacy.io/usage/linguistic-features#tokenization