موقع د. عزيز الجعيد
  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

علم البيانات والذكاء الاصطناعي

  • الرئـيـسـية

  • الأقسام

    • علم البيانات والذكاء الإصطناعي

    • ذكاء الأعمال

    • لغة البرمجة بايثون

    • مقالات متنوعـة

    • لغة البرمجة آر R

    • الإحــــــصــــــاء

    • البيانات المفتوحة

  • عـنــي

  • تواصل معي

استخراج الخصائص من النصوص باستخدام بايثون Python

05/02/2021 | لغة البرمجة بايثون | شارك بتعليقك

معظم خوارزميات تعلم الالة لا يمكنها التعامل مع البيانات النصية. لذا يحب تحويل البيانات النصية الي بيانات رقمية وهو ما يعرف باستخراج الخصائص من النصوص (Feature extraction from text) حيث يتم تحويل النص الى مصفوفة من البيانات الرقمية. في هذا المقال سوف نستخدم دالتين من مكتبة scikit-learn وهي:

  • CountVectorizer
  • TfidfVectorizer

في البداية سوف نفرض أن لدينا البيانات التالية:

In:
text = ["الفندق جميل", 
        "عند وصولي الى الفندق لم اجد الغرفة مرتبة",
        "كان الفندق رائع وكذلك الغرفة نظيفة"]

اولاً: CountVectorizer

في البداية يتم عمل قاموس بكل كلمات الموجودة في البيانات النصية. بحيث لا تكون الكلمات متكررة ولو تكررت بعض الكلمات اكثر من مرة في البيانات تكون موجودة مرة واحدة في القاموس. يتم التعبير عن كل صف في البيانات بـ vector بحيث تكون جميع قيمة اصفار ما عدا الكلمات الموجودة في الصف تاخذ قيمة رقمية تمثل عدد مرات تكرارها. ويمكن أن يتم ذلك من خلال الخطوات التالية:

1. بناء قاموس الكلمات كما يلي:

In:
from sklearn.feature_extraction.text import CountVectorizer  
vectorizer = CountVectorizer() 
vectorizer.fit(text)
print(sorted(vectorizer.vocabulary_.items()))
Out:
[('اجد', 0), ('الغرفة', 1), ('الفندق', 2), ('الى', 3), ('جميل', 4), ('رائع', 5), ('عند', 6), ('كان', 7), ('لم', 8), ('مرتبة', 9), ('نظيفة', 10), ('وصولي', 11), ('وكذلك', 12)]

2. بناء المصفوفة الرقمية

In:
vector = vectorizer.transform(text) 
print(vector.toarray())
Out:
[[0 0 1 0 1 0 0 0 0 0 0 0 0]
 [1 1 1 1 0 0 1 0 1 1 0 1 0]
 [0 1 1 0 0 1 0 1 0 0 1 0 1]]

ثانياً: TfidfVectorizer

تقوم هذه الدلة بتحويل النص الى مصوفة رقمية تحوي أوزان (weights) باستخدام TFIDF وهو مقياس رقمي يعكس مدى أهمية كلمة لصف في البيانات من خلال اعطائها وزن يحسب من خلال الصيغة التالية:

\[TFIDF=TF(w,r)\times IDF(w)\]

حيث أن: $TF(w,r)$: عدد مرات تكرار الكلمة $w$ في الصف $r$.

كذلك:

\[IDF(w)=\log\left(\frac{1+n}{1+DF(w)}\right )+1\]

حيث أن: $DF(w)$: عدد الصفوف التي تحوي الكلمة $w$ و $n$ عدد الصفوف في البيانات. ويمكن أن يتم ذلك من خلال الخطوات التالية:

1. بناء قاموس الكلمات كما يلي:

In:
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer() 
vectorizer.fit(text) 
print(sorted(vectorizer.vocabulary_.items()))
Out:
[('اجد', 0), ('الغرفة', 1), ('الفندق', 2), ('الى', 3), ('جميل', 4), ('رائع', 5), ('عند', 6), ('كان', 7), ('لم', 8), ('مرتبة', 9), ('نظيفة', 10), ('وصولي', 11), ('وكذلك', 12)]

2. بناء مصفوفة الأوزان

In:
vector = vectorizer.transform(text) 
print(vector.toarray())
Out:
[[0.         0.         0.50854232 0.         0.861037   0.
  0.         0.         0.         0.         0.         0.
  0.        ]
 [0.37994462 0.28895767 0.22440141 0.37994462 0.         0.
  0.37994462 0.         0.37994462 0.37994462 0.         0.37994462
  0.        ]
 [0.         0.34261996 0.26607496 0.         0.         0.45050407
  0.         0.45050407 0.         0.         0.45050407 0.
  0.45050407]]

 

جميع الحقوق الفكرية لهذا المقال محفوظة © موقع د. عزيز، يمنع إعادة نشره في موقع آخر

مقالات ذات صلة:

  • مقدمة في البايثون Python

    بايثون هي لغة برمجة متعددة الأغراض، تعمل على عدد من المنصات مثل ويندوز (Windows) و ماك (Mac OS X) و لينوكس (Linux).... مقدمة في البايثون Python
    اقرأ المزيد
  • قراءة ملفات البيانات في بايثون Python

    في هذا المقال سوف نستعرض كيف يمكن قراءة ملفات البيانات بأنواعها المختلفة باستخدام لغة البرمجة بايثون. في البداية نحتاج... قراءة ملفات البيانات في بايثون Python
    اقرأ المزيد
  • دوال القائمة (list) في بايثون Python

    تعتبر القائمة (list) احد انواع هياكل البيانات شائعة الاستخدام في في لغة البرمجة بايثون والتي يمكن أن تحوي انواع مختلفة... دوال القائمة (list) في بايثون Python
    اقرأ المزيد

شارك بتعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


The reCAPTCHA verification period has expired. Please reload the page.

د. عزيز عوض الله الجعيد
دكتوراه في الإحصاء، عالم بيانات، مبرمج، مهتم في التحليل المتقدم، والبيانات الضخمة والذكاء الاصطناعي، لمزيد من المعلومات أضغط هنا

  • YouTube
جميع الحقوق محفوظة © موقع د. عزيز