نموذج حقيبة الكلمات في بايثون: دليل كامل

حقيبة الكلمات (BoW) هي تقنية في معالجة اللغة الطبيعية (NLP). وهي تستخدم على نطاق واسع لتحويل البيانات النصية إلى تنسيق يمكن للآلة قراءته، Specifically قيم عددية، دون مراعاة النحو وترتيب الكلمات. فهم حقيبة الكلمات مهم لأي شخص يعمل مع بيانات النصوص. توفر Python أدوات و مكتبات متعددة لتنفيذ حقيبة الكلمات بفعالية.

في هذا الدليل، سنغوص في BoW، نقدم مفاهيمه، نغطي استخداماته، ونقوم بتفصيل تنفيذ دقيق في Python. بحلول نهاية هذا الدليل، ستكون قادرًا على تطبيق نموذج حقيبة الكلمات على مشاكل العالم الحقيقي. إذا كنت جديدًا في NLP، قم بزيارة مسار مهارة معالجة اللغة الطبيعية في Python لمعرفة المزيد.

ما هي حقيبة الكلمات؟

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

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

نموذج حقيبة الكلمات يختلف عن نموذج حقيبة الكلمات المستمرة (CBOW) الذي يتعلم تمثيلات كلمات كثيفة باستخدام الكلمات المحيطة ل предсказة كلمة هدف، مما ي capturtes العلاقات الدلالية بين الكلمات. يتطلب CBOW تدريباً على مجموعة بيانات كبيرة ويroduce وectors منخفضة الأبعاد التي تكون قيمة في تطبيقات NLP المعقدة حيث يكون السياق الكمي مهمًا.

الجانب

BOW

CBOW

الغرض

عدد تكرارات كل كلمة

توقع الكلمة المستهدفة بناءً على السياق

نوع المخرج

متجه عالي الأبعاد، من疏

متجه منخفض الأبعاد، متماسك

النظر في السياق

لا (يتجاهل ترتيب الكلمات)

نعم (يستخدم الكلمات المحيطة)

التمثيل

متجه تكرار من疏

متجه متماسك يلتقط الدلالة

التعقيد

منخفض (لا يتطلب تدريبًا)

عالي (يتطلب تدريبًا على مجموعة بيانات كبيرة)

التطبيقات النموذجية

تصنيف النصوص، تحليل المشاعر

تمثيل الكلمات، المهام اللغوية التي تتطلب السياق

لماذا استخدام حقيبة الكلمات؟

حقيبة الكلمات مفيدة في العديد منمهام معالجة اللغة الطبيعية، بعض الأسباب لاستخدامها تشمل:

  • استخراج الميزات: يconvert بيانات النص غير المنظمة إلى بيانات منظمة، ويمكن استخدامها كمدخل لعدة خوارزميات تعلم الآلة.
  • البساطة والكفاءة: BoW بسيط حاسبيًا في التنفيذ، ويعمل بشكل جيد للنصوص الصغيرة إلى المتوسطة الحجم.
  • التشابه بين الوثائق: يمكن استخدامه لحساب التشابه بين وثائق النص باستخدام تقنيات مثل التشابهCosine.
  • تصنيف النصوص : عندما ي combined مع تقنيات مثل Naive Bayes، BoW فعال لtasks تصنيف النصوص مثل تصنيف البريد غير المرغوب فيه، و تحليل المشاعر.

لكن هناك أيضًا عيوب، مثل عدم مراعاة الدلالة، هيكل الكلمة، أو ترتيب الكلمات.

خطوات تنفيذ حقيبة الكلمات في Python

لإنشاء نموذج حقيبة الكلمات، نأخذ جميع الكلمات في النص ونعمل عمودًا بكل كلمة. الصفوف تمثل الجمل. إذا كانت كلمة معينةexist في الجملة، يتم تمثيلها بـ1، وإذا لم تكن الكلمة موجودة، يتم تمثيلها بـ0. كل كلمة في العمود تمثل ميزة واحدة.

في النهاية، نحصل على مصفوفة نادرة. المصفوفة النادرة هي مصفوفة تحتوي على الكثير من الأصفار.

معالجة البيانات

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

التوكينيزيشن هو عملية تحويل نص إلى وحدات أصغر، عادةً الكلمات.يمكنك تنفيذ التوكينيزيشن باستخدام NLTK

الكلمات الدالة هي كلمات شائعة في الإنجليزية، مثل “the” و “that” و “a”، التي لا تساهم في تحديد نبرة الجملة.

import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize # قم بتنزيل الكلمات الم>Title nltk.download("punkt") nltk.download("stopwords") # جملة示例 sentence = "This is an example showing how to remove stop words from a sentence." # قم بتحليل الجملة إلى كلمات words = word_tokenize(sentence) # احصل على قائمة الكلمات الم>Title stop_words = set(stopwords.words("english")) # أزل الكلمات الم>Title filtered_sentence = [word for word in words if word.lower() not in stop_words] # أعد جمع الكلمات في جملة filtered_sentence = " ".join(filtered_sentence) print(filtered_sentence)

النتيجة:

example showing remove stop words sentence.

إنشاء معجم

المعجم هو مجموعة من الكلمات الفريدة التي توجد في مجموعة من النصوص. بناء المعجم يتضمن جمع جميع الكلمات الفريدة من المجموعة والعدد لظهورها. هذا المعجم مفيد لمهام معالجة اللغة الطبيعية المختلفة مثل نماذج اللغة، تمثيل الكلمات، وتصنيف النصوص.

الرمز أدناه يإنشأ توزيع تواتر بسيط للكلمات في المجموعة، وهو مفيد لمهام معالجة اللغة الطبيعية الأساسية مثل بناء معجم أو فهم محتوى النص:

  • المتغير Corpus يحتوي على بعض أمثلة الجمل. في التطبيقات الحقيقية، سيحتوي على نصوص أكبر وأكثر تنوعًا.
  • vocab = defaultdict(int) يسهل عملية عد تكرار الكلمات، عن طريق�始化 أي كلمة جديدة بحساب 0 تلقائيًا، مما يسمح بالزيادة المباشرة دون الحاجة للتحقق.
  • يتم تقسيم الجملة إلى كلمات عن طريق تحويلها إلى أحرف صغيرة واستخراج الكلمات باستخدام التعبيرات العادية.\b\w+\b يحدد الكلمات التي تحتوي على حروف وأرقام فقط، ويتجاهل الأ punctuation والرموز الأخرى.
  • يتم تحديث عدد كل كلمة في القاموس vocab.
  • يتم ترتيب القاموس بناءً على التكرار بترتيب تنازلي، مما يجعل من السهل رؤية الكلمات الأكثر شيوعًا في الأعلى، ويتم عرضه للإشارة.
import re # استيراد وحدة Regular Expressions لمساعدة معالجة النصوص from collections import ( defaultdict, ) # استيراد defaultdict لسهولة التعامل مع عدادات تكرار الكلمات # مجموعة بيانات نصية مثالية - مجموعة صغيرة من الجمل لتحليلها corpus = [ "Tokenization is the process of breaking text into words.", "Vocabulary is the collection of unique words.", "The process of tokenizing is essential in NLP.", ] # تهيئة defaultdict بالقيم الصفرية كافتراضي لتخزين تكرار الكلمات # defaultdict(int) يهيء كل مفتاح جديد بالقيمة الصفرية الافتراضية vocab = defaultdict(int) # تكرار عبر كل جملة في المجموعة النصية لتجزئة وتوحيد النص for sentence in corpus: # تحويل الجملة إلى حرف صغير لضمان الاتساق في العد (مثلاً 'Tokenization' و 'tokenization' يعتبران نفس الكلمة) # استخدام التعبيرات_REG لتحديد الكلمات المكونة من حروف وأرقام فقط words = re.findall(r"\b\w+\b", sentence.lower()) # لكل كلمة تم العثور عليها، زيادة عددها في قاموس المفردات for word in words: vocab[word] += 1 # تحويل defaultdict المفردات إلى قاموس عادي لسهولة التعامل والترتيب # ترتيب القاموس بناءً على تكرار الكلمات بترتيب تنازلي وتحويله إلى قاموس جديد sorted_vocab = dict(sorted(vocab.items(), key=lambda x: x[1], reverse=True)) # عرض القاموس المرتب مع كل كلمة وعدد تكرارها print("Vocabulary with Frequencies:", sorted_vocab)

الإخراج:

Vocabulary with Frequencies: {'is': 3, 'the': 3, 'of': 3, 'process': 2, 'words': 2, 'tokenization': 1, 'breaking': 1, 'text': 1, 'into': 1, 'vocabulary': 1, 'collection': 1, 'unique': 1, 'tokenizing': 1, 'essential': 1, 'in': 1, 'nlp': 1}

بناء قاموس يدوي يمكن أن يكون استهلاكًا للوقت، خاصةً للمراجع الكبيرة. ي自動ية عملية هذا العمل ويسمح لمزيد من مرونة معالجة النصوص كما سنرى لاحقًا.

تنفيذ حقيبة الكلمات باستخدام بايثون (من الصفر)

لنبدأ بتنفيذ بسيط لحقيبة الكلمات من الصفر فيبايثون. هذا سيساعدك على فهم لبنات البناء والآلية التي تعمل بها تحت الغطاء.

التطبيق اليدوي

الخطوة الأولى: معالجة بيانات النص

سنبدأ بتحديد دالة بسيطة لمعالجة النص، تشمل التTokenizer، تحويل النص إلى حروف صغيرة، وإزالة العلامات النحوية.

from collections import defaultdict import string # بيانات نصية م样品: جمل corpus = [ "Python is amazing and fun.", "Python is not just fun but also powerful.", "Learning Python is fun!", ] # دالة لمعالجة النص def preprocess(text): # تحويل إلى حروف صغيرة text = text.lower() # إزالة العلامات النحوية text = text.translate(str.maketrans("", "", string.punctuation)) # تقسيم النص إلى كلمات tokens = text.split() return tokens # تطبيق معالجة على النص الم样品 processed_corpus = [preprocess(sentence) for sentence in corpus] print(processed_corpus)

الناتج:

[['python', 'is', 'amazing', 'and', 'fun'], ['python', 'is', 'not', 'just', 'fun', 'but', 'also', 'powerful'], ['learning', 'python', 'is', 'fun']]

الخطوة الثانية: بناء المفردات

الآن، نحتاج إلى فحص جميع الوثائق وبناء قائمة كاملة من الكلمات الفريدة، وهي مفرداتنا.

تهيئة مجموعة فارغة للقاموس vocabulary = set() بناء القاموس for sentence in processed_corpus: vocabulary.update(sentence) تحويل القائمة إلى مرتبة vocabulary = sorted(list(vocabulary)) print("Vocabulary:", vocabulary)

الخطوة 3: حساب تكرار الكلمات وتحويلها إلى وекторы

سنقوم الآن بحساب تكرار كل كلمة في القاموس لكل وثيقة في المجموعة المعالجة.

def create_bow_vector(sentence, vocab): vector = [0] * len(vocab) تهيئة وktor من الأصفار for word in sentence: if word in vocab: idx = vocab.index(word) عثور على索引 الكلمة في القاموس vector[idx] += 1 زيادة العدد في ذلك-lndكس return vector

في هذه المرحلة، ستحصل على تمثيل حقيبة الكلمات لكل وثيقة في مجموعةك.

إنشاء وktor BoW لكل جملة في المجموعة المعالجة bow_vectors = [create_bow_vector(sentence, vocabulary) for sentence in processed_corpus] print("Bag of Words Vectors:") for vector in bow_vectors: print(vector)

الإخراج:

Bag of Words Vectors: [0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1] [1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1] [0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1]

استخدام Scikit-learn’s CountVectorizer

بناء نموذج حقيبة الكلمات يدويًا جيد للتعلم، ولكن لل تطبيقات الإنتاجية، سترغب في استخدام مكتبات كفؤة ومحسنة مثل Scikit-learn.

الدالة بايثون التي نستخدمها لتحليل الكلمات هيCountVectorizer، التي يتم استيرادها من sklearn.feature_extraction.text. إحدى الميزات في CountVectorizer هي max_features، والتي تمثل الحد الأقصىعدد الكلمات التي ترغب في أن تكون في نموذج حقيبة الكلمات. في هذه الحالة، نستخدم None، مما يعني أن جميع الميزات ستُستخدم. 

بعد إنشاء مثيل من CountVectorizer، استخدم الطريقة .fit_transform() لإنشاء نموذج حقيبة الكلمات. ثم استخدم .toarray() لتحويل نموذج حقيبة الكلمات إلى المصفوفات النumpy التي يمكن تزويدها لنموذج التعلم الآلي.

بمجرد التركيب، قام CountVectorizer ببناء قاموس indices للميزات. قيمة الفهرس لكلمة في المفردات مرتبطة ب ترددها في كل المجموعة التدريبية.

from sklearn.feature_extraction.text import CountVectorizer المجموعة الأصلية corpus = [ "Python is amazing and fun.", "Python is not just fun but also powerful.", "Learning Python is fun!", ] إنشاءobject CountVectorizer vectorizer = CountVectorizer() الت适ياء وتحويل المجموعة X = vectorizer.fit_transform(corpus) طباعة المفردات التي تم إنشاؤها print("Vocabulary:", vectorizer.get_feature_names_out()) طباعة مصفوفة Bag-of-Words print("BoW Representation:") print(X.toarray())

الناتج:

markdownVocabulary: ['also' 'amazing' 'and' 'but' 'fun' 'is' 'just' 'learning' 'not' 'powerful' 'python'] BoW Representation: [[0 1 1 0 1 1 0 0 0 0 1] [1 0 0 1 1 1 1 0 1 1 1] [0 0 0 0 1 1 0 1 0 0 1]]

مثال: تطبيق Bag of Words

لنفترض الآن تطبيق نموذج BoW على مجموعة نصية صغيرة تتكون من مراجعات لثلاثة أفلام لشرح العملية بأكملها. 

سنستخدم CountVectorizer من Scikit-learn لتطبيق نموذج BoW على هذه المجموعة النصية الصغيرة.

هذه هي الخطوات التي سنأخذها:

  • CountVectorizer يقوم بتفكيك النص، وإزالة العلامات النحوية، وتحويل الكلمات إلى صيغة صغيرة تلقائيًا.
  • .fit_transform(corpus) يحول النص إلى مصفوفة الوثيقة-المفردة، حيث تمثل كل صف وثيقة وكل عمود كلمة من المفردات.
  • X_dense هي المصفوفة الكثيفة التي تمثل تكرار كل كلمة في كل وثيقة.
from sklearn.feature_extraction.text import CountVectorizer # مجموعة عينة من مراجعات الأفلام corpus = [ "I loved the movie, it was fantastic!", "The movie was okay, but not great.", "I hated the movie, it was terrible.", ] #�始化 CountVectorizer vectorizer = CountVectorizer() # يلائم ويحوّل النص إلى مصفوفة الوثيقة-المفردة X = vectorizer.fit_transform(corpus) # يحوّل مصفوفة الوثيقة-المفردة إلى تنسيق كثيف (اختياري للعرض المرئي) X_dense = X.toarray() # الحصول على المفردات (نقل الكلمات إلى مراكز الفهرس) vocab = vectorizer.get_feature_names_out() # طباعة المفردات ومصفوفة الوثيقة-المفردة print("Vocabulary:", vocab) print("Document-Term Matrix:\n", X_dense)

المخرج:

Vocabulary: ['but' 'fantastic' 'great' 'hated' 'it' 'loved' 'movie' 'not' 'okay' 'terrible' 'the' 'was'] Document-Term Matrix: [[0 1 0 0 1 1 1 0 0 0 1 1] # المراجعة الأولى: "لقد أحببت الفيلم، كان رائعاً!" [1 0 1 0 1 0 1 1 1 0 1 1] # المراجعة الثانية: "الفيلم كان جيداً، لكنه ليس رائعاً." [0 0 0 1 1 0 1 0 0 1 1 1]] # المراجعة الثالثة: "كرهت الفيلم، كان سيئاً."

هنا كيف يمكننا تفسير الناتج المذكور:

  • كل كلمة فريدة في المجموع الشامل يتم تعيين索引 لها، ويتم ترتيب الكلمات بحسب الترتيب الأبجدي. على سبيل المثال، “لكن” هو عند-lndex 0، “رائع” هو عند-lndex 1، “فيلم” هو عند-lndex 6، وهكذا.
  • كل صف في مصفوفة الوثائق يمثل مراجعة أفلام، وكل عمود ي odpاس كلمة من المفردات. القيم في المصفوفة تمثل تردد كل كلمة في ذلك الوثيقة المعينة.
    • مراجعة الأولى: [0 1 0 0 1 1 1 0 0 0 1 1] يشير إلى أن:
      • الكلمة “رائع” تظهر مرة واحدة (1 عند-lndex 1)،
      • الكلمة “أحببت” تظهر مرة واحدة (1 عند-lndex 5)،
      • الكلمة “فيلم” تظهر مرة واحدة (1 عند-lndex 6)،
      • الكلمة “كان” تظهر مرة واحدة (1 عند-lndex 4)،
      • وهكذا.

يمكن تفسير مصفوفة BoW كالتالي:

  • كل وثيقة هي مصفوفة من الأرقام تمثل عدد الكلمات. أبعاد المصفوفة تساوي حجم المفردات. في هذه الحالة، المفردات تحتوي على 12 كلمة، لذا يتم تحويل كل مراجعة إلى مصفوفة 12维.
  • معظم الكلمات في كل صف هي صفر لأن ليس كل وثيقة تحتوي على كل كلمة من المفردات. لذا، نماذج BoW غالباً ما تكون نادرة، أي تحتوي على العديد من الأصفار.

مزايا وقيود نموذج حقيبة الكلمات

دعونا الآن نغطي بعض المزايا والقيود لنموذج حقيبة الكلمات.

المزايا

  1. سهل التطبيق والتفسير: نموذج حقيبة الكلمات هو أحد أسهل تقنيات تمثيل النصوص، مما يجعله مثاليًا للمبتدئين. بسيطته تتيح تنفيذه بسرعة دون الحاجة إلى معالجة مسبقة معقدة أو نماذج متخصصة.
  2. سهل الاستخدام في مهام تصنيف النصوص: يتناسب نموذج حقيبة الكلمات جيدًا للمهام الأساسية مثل تصنيف النصوص، تحليل المشاعر، وكشف البريد غير المرغوب فيه. هذه المهام غالبًا لا تتطلب نماذج لغة معقدة، لذا يكون تمثيل BOW كافيًا وفعالًا.

القيود

  1. حجم المفردات يؤثر على稀疏ية التمثيلات: كلما زاد حجم المفردات، زادت稀疏ية التمثيل وأصبحت أكثر维数ية. يمكن أن يجعل هذا من الصعب على النماذج التعلم بفعالية ويتطلب ضبط دقيق لحجم المفردات لتجنب التكاليف الحسابية المفرطة.
  2. يroduce matrices spares qui sont coûteuses en termes de calcul: Étant donné que chaque document est représenté par la fréquence de chaque mot dans un vocabulaire potentiellement large, les matrices obtenues sont souvent principalement composées de zéros, ce qui peut être inefficace à stocker et à traiter dans les pipelines d’apprentissage automatique. Les matrices creuses consomment une mémoire significative et nécessitent souvent des outils et des bibliothèques spécialisés pour un stockage et un calcul efficaces, en particulier avec de grands ensembles de données.
  3. يفقد معناه وسياقه: يتجاهل BOW ترتيب الكلمات وبنية الجملة، مما يؤدي إلى فقدان العلاقات النحوية والمعنى. تقتصر هذه القيود على جعلها أقل适宜ه للمهام التي تتطلب سياقًا، اللمح، وترتيب الكلمات، مثل الترجمة أو اكتشاف المشاعر في جمل معقدة.

يمكن استخدام الاستراتيجيات التالية لتقليل حجم المفردات في حقيبة الكلمات:

  • تجاهل الحالة.
  • إزالة العلامات النحوية.
  • إزالة الكلمات الشائعة، مثل “the” و”a”.
  • التأكد من أن جميع الكلمات مكتوبة بشكل صحيح.
  • استخدام تقنيات الاستخراج لتقليل الكلمات إلى شكلها الجذري.

الخطوات التالية: ما بعد حقيبة الكلمات

حدود نموذج حقيبة الكلمات هو أنه يعامل جميع الكلمات بالتساوي. لسوء الحظ، قد يؤدي هذا إلى مشاكل حيث يتم منح بعض الكلمات أهمية أكبر ببساطة لأنها تظهر بشكل متكرر.

TF-IDF (تردد المفردات inversely Document Frequency) هو حلاً لهذه المشكلة، حيث ي調整 وزن الكلمات بناءً على ترددها عبر جميع الوثائق.

TF-IDF: توسع لـ حقيبة الكلمات

تردد المفردات (TF) يمثل تردد المفردة في الوثيقة. تردد inversely الوثيقة (IDF) يقلل تأثير الكلمات الشائعة عبر عدة وثائق. يتم حساب درجة TF-IDF عن طريق ضرب القيمتين.

تعتبر وثيقة تحتوي على 200 كلمة، حيث يظهر فيها كلمة الحب 5 مرات. فإن معامل التكرار (TF) لكلمة الحب هو (5 / 200) = 0.025.假设我们有1000000 وثيقة ويظهر فيها كلمة الحب في ألف من هذه الوثائق، فإن معامل التردد inversely (IDF) يُحسب كـ log(1000000 / 1000) = 3. وزن TF-IDF هو منتج هذه الكميات: 0.025 * 3 = 0.075.

في مكتبة Scikit-learn، يمكن حساب هذا بسهولة باستخدام فئة TfidfVectorizer.

from sklearn.feature_extraction.text import TfidfVectorizer #_corpus عينة corpus = [ "Python is amazing and fun.", "Python is not just fun but also powerful.", "Learning Python is fun!", ] # إنشاء ناظم التكرار TF-IDF tfidf_vectorizer = TfidfVectorizer() # تناسب وتحويل النص X_tfidf = tfidf_vectorizer.fit_transform(corpus) # عرض المفردات print("Vocabulary:", tfidf_vectorizer.get_feature_names_out()) # عرض مصفوفة TF-IDF print("TF-IDF Representation:") print(X_tfidf.toarray())

المخرج:

Vocabulary: ['also' 'amazing' 'and' 'but' 'fun' 'is' 'just' 'learning' 'not' 'powerful' 'python'] TF-IDF Representation: [[0. 0.57292883 0.57292883 0. 0.338381 0.338381 0. 0. 0. 0. 0.338381 ] [0.40667606 0. 0. 0.40667606 0.24018943 0.24018943 0.40667606 0. 0.40667606 0.40667606 0.24018943] [0. 0. 0. 0. 0.41285857 0.41285857 0. 0.69903033 0. 0. 0.41285857]]

تمنحك مصفوفة TF-IDF المطبقة في الأعلى مقياسًا موزونًا بدلاً من الترددات الخام.

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

من هنا، يمكنك تجربة حقيبة الكلمات في مشاريعك، بما في ذلك كشف البريد غير المرغوب فيه، تحليل المشاعر، تجمع الوثائق، وأكثر من ذلك.

إذا كنت تريد تحسينًا إضافيًا بجانب حقيبة الكلمات، يمكنك استكشاف طرق مثل word2vec و glove، أو نماذج التعلم العميق مثل bert.

المحتويات النهائية

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

  • ما هو نموذج حقيبة الكلمات (BoW)؟
  • فوائد نموذج حقيبة الكلمات في بناء نماذج التعلم الآلي.
  • كيفية تنفيذ نموذج حقيبة الكلمات في بايثون.
  • Advantages and limitations of Bag of Words.
  • النظرية وال动机 وراء نموذج حقيبة الكلمات.
  • مقدمة لـ TF-IDF كتحسين لنموذج حقيبة الكلمات التقليدي.

تعرّف على مسار مهارات معالجة اللغة الطبيعية في بايثون، للغوص العميق في معالجة اللغة الطبيعية.

Source:
https://www.datacamp.com/tutorial/python-bag-of-words-model