هو تقسيم النص ال ي وحدات أصغر تسمي token رمز , معظم الأحوال تكون كلمة وفي بعض الأحيان تكون جملة
يعني تقسيم النص إلي جُمل والجُمل ال كلمات (إسم وفعل وحرف)
يلاحظ أن تحديد الكلمات يختلف من لغة لأخرى، مثلا في الإنجليزية التحديد بالمسافات، لكن في العربية أحيانا يتصل حروف بالكلمة مثل “مدنها” -> “مدنــ”، “ـها”
تجزئت النص إلي وحدات أصغر يسهل التعامل معها
مثال تطبيقي بإستخدام مدونة gutenberg الموضمنة في مكتبة NLTK
وتحديدا علي ملف " austen-emma.txt "
البداية مع استيرا word_tokenizeو sent_tokenize و مدونة gutenberg
from nltk.tokenize import word_tokenize, sent_tokenize
from nltk.corpus import gutenberg
gutenberg.fileids()
['austen-emma.txt',
'austen-persuasion.txt',
'austen-sense.txt',
'bible-kjv.txt',
'blake-poems.txt',
'bryant-stories.txt',
'burgess-busterbrown.txt',
'carroll-alice.txt',
'chesterton-ball.txt',
'chesterton-brown.txt',
'chesterton-thursday.txt',
'edgeworth-parents.txt',
'melville-moby_dick.txt',
'milton-paradise.txt',
'shakespeare-caesar.txt',
'shakespeare-hamlet.txt',
'shakespeare-macbeth.txt',
'whitman-leaves.txt']
r =gutenberg.raw(['austen-emma.txt'])
emma=r[50:477]
emma
"Emma Woodhouse, handsome, clever, and rich, with a comfortable home\nand happy disposition, seemed to unite some of the best blessings\nof existence; and had lived nearly twenty-one years in the world\nwith very little to distress or vex her.\n\nShe was the youngest of the two daughters of a most affectionate,\nindulgent father; and had, in consequence of her sister's marriage,\nbeen mistress of his house from a very early period."
تقسيم علي مستوي الجمل
s=sent_tokenize(emma)
len(s)
s[0]
تقسيم علي مستوي الكلمات
word_tokenize(s[0])
['Emma',
'Woodhouse',
',',
'handsome',
',',
'clever',
',',
'and',
'rich',
',',
'with',
'a',
'comfortable',
'home',
'and',
'happy',
'disposition',
',',
'seemed',
'to',
'unite',
'some',
'of',
'the',
'best',
'blessings',
'of',
'existence',
';',
'and',
'had',
'lived',
'nearly',
'twenty-one',
'years',
'in',
'the',
'world',
'with',
'very',
'little',
'to',
'distress',
'or',
'vex',
'her',
'.']
طريقة أخري باستخدام Regular expression
import re
def tokenize(text):
tokens=re.split('\W+',text)
return tokens
data['boday_text_x:tokenized']=data['boday_text_clean'].apply(lambda x:tokenize(x.lower() ) )
data.head()