اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

إنها أداة رائعة توفرها مكتبة scikit-Learn في Python. يتم استخدامها لتحويل نص معين إلى متجه على أساس تكرار (عدد) كل كلمة تحدث في النص بأكمله.
للاستيراد الكلاس:

sklearn.feature_extraction.text.CountVectorizer

fit_transform(data) التابع هذا يقوم بعمل ال fitting (إنشاء الترميز) ثم يقوم بعملية ال transform (أي التحويل إلى الترميز الجديد ويكون على أساس الترميز الذي تم من المرحلة fitting)
نستخدم التابع toarray لعرض الداتا بعد الترميز كما في المثال الشامل التالي:

from sklearn.feature_extraction.text import CountVectorizer
data = [
           'Argentena vs Urguaey.',
           'Argentena vs Chile.',
           'Argentena vs Brazil.',
           'Brazil vs Chile',
         ]

# نقوم بتشكيل غرض من هذا الكلاس
vec = CountVectorizer()
# نقوم بعملية التحويل
X = vec.fit_transform(data)
# التابع التالي يرد الكلمات التي وجدها
print(vec.get_feature_names())
# ['argentena', 'brazil', 'chile', 'urguaey', 'vs']
# لطباعة النص بع الترميز
print(X.toarray())
'''
output:
[[1 0 0 1 1]
 [1 0 1 0 1]
 [1 1 0 0 1]
 [0 1 1 0 1]]
'''

 

  • 0
نشر

طريقة CountVectorizer هي إحدى الطرق التي تستخدم لتحويل البيانات النصية لأرقام لنتمكن من عملية تدريب النموذج، وهي أيضاً تعرف ب One-Hot Encoding إذ أنها تضع في كل مكان ظهور الكلمة في الجملة الرقم 1 و إن لم تظهر تحفظه ب0. تقوم هذه الطريقة بتمثيل الكلمات في شكل أرقام تشير إلى موقع الكلمة و بالتالي ينتج عنها مصفوفة الأرقام، هذه العملية تتم عن طريق إتباع الخطوات التالية:

1- تحويل الكلمات للحروف الصغيرة Lowercase

2- إستخدام utf-8 في التكويد

3- تقسيم البيانات إلى وحدات نصية أصغر tokenization

4- التعامل مع كل كلمة على حدة بإعتبارها token منفصل

5- تجاهل الكلمات المكونة من حرف واحد مثل الروابط (ك،و،ب)

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

vec = CountVectorizer(data,stop_words=["all","in","the","is","and"])
X = vec.fit_transform(data)

لابد أنك لاحظت نقصان حجم المصفوفة بعد تطبيق الطريقة أعلاه، وذلك ناتج لحذف كلمات التوقف، أما إن أردت معرفة الكلمات المحذوفة مباشرة يمكنك تطبيق هذا السطر البرمجي:

vec.stop_words

الطريقة الثانية هي بإستخدام قائمة كلمات التحقق الموجودة في مكتبة sklearn (غير محبذة)، و الطريقة الأخيرة هي بتحديد قيمة صغرى minimum document frequency (min_df) أو كبرى maximum document frequency (max_df) لعدد مرات ظهور أو نسبة ظهور الكلمات في البيانات النصية، لاحظ للمثال التالي:

vec = CountVectorizer(data, min_df=2)
X = vec.fit_transform(data)

و إذا كنت ترغب في نموذج ذو جودة أعلى يمكنك أيضاً أن تقوم بإنشاء طريقتك الخاصة في تقسيم النصوص إلى مجموعات أصغر tokens قبل تدريب النموذج، هذا بالإضافة لأي عمليات أخرى مثل إرجاع الكلمات لأصولها مثلا teaching, teacher لهما نفس الأصل و هو الفعل teach. كل هذه العمليات سابقة لتدريب نموذج التصنيف و تفيد في تركيز المعلومات و إنقاص حجم المصفوفة، بالإضافة لزيادة سرعة النموذج و نقص في مساحة الذاكرة.

 

 

 

 

 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...