نحتاج عند التعامل مع البيانات النصية الخام الى معالجتها وتنظيفها وذلك بهدف وضعها في شكل مناسب حيث يمكن تحليلها باستخدام طرق التحليل المحتلفة. في هذا المقال سوف نناقش ذلك باستخدم المثال التالي:
In:
text="@ffd هذا الفندق غالي جداً ☹ ، يكلفُ حوالي 700$ لكل ليلة https://www.google.com/..."
وبعد ذلك يمكن تلخيص خطوات معالجة البيانات النصية كما يلي:
1. حذف الروابط وذلك كما يلي:
In: import re text = re.sub(r'http\S+','',text) text Out: '@ffd هذا الفندق غالي جداً ☹ ، يكلفُ حوالي 700$ لكل ليلة '
2. حذف المعرف (اسم المستخدم)، وذلك باستخدام الكود:
In: text = re.sub(r'@\w+','',text) text Out: ' هذا الفندق غالي جداً ☹ ، يكلفُ حوالي 700$ لكل ليلة '
3. حذف علامات الترقيم والرموز، حيث يمكن حذف علامات ورموز محددة كما يلي:
In: text = re.sub(r'[!"\$%&\'()*+,\-.\/:;=#@?\[\\\]^_`{|}~،ًُ]','',text) text Out: ' هذا الفندق غالي جدا ☹ يكلف حوالي 700 لكل ليلة '
او جميع الرموز كما يلي:
In: text = re.sub(r'[^\w\s]','',text) text Out: ' هذا الفندق غالي جدا يكلف حوالي 700 لكل ليلة '
4. حذف الأرقام، وذلك من خلال الكود التالي:
In: text = re.sub(r'[\d+]+.?[\d+]+','', text) text Out: ' هذا الفندق غالي جدا يكلف حوالي لكل ليلة '
5. حذف المسافات الزائدة بين الكلمات وذلك كما يلي:
In: text = re.sub(r'\s+',' ',text) text Out: ' هذا الفندق غالي جدا يكلف حوالي لكل ليلة '
6. حذف الكلمات المستبعدة (stop words) باستخدام الكود:
In: from nltk.corpus import stopwords stop_words = stopwords.words('arabic') text_list =[word for word in text.split() if word not in stop_words] text= ' '.join(text_list) text Out: 'الفندق غالي جدا يكلف حوالي لكل ليلة'
او حذف اي كلمات أخرى كما يلي:
In: extra_stop_words = 'لكل','ليلة','يكلف','حوالي' text_list =[word for word in text.split() if word not in extra_stop_words] text= ' '.join(text_list) text Out: 'الفندق غالي جدا'
7. ترميز (tokenizing) البيانات كما يلي:
In: text = nltk.word_tokenize(text) text Out: ['الفندق', 'غالي', 'جدا']