ما هي Gensim ولماذا تحتاجها
Gensim (Generate Similar) هي مكتبة Python عالية المستوى لتحويل النصوص إلى متجهات، والنمذجة الموضوعية، وتدريب التمثيلات الموزعة للكلمات. تم تطويرها للعمل بكفاءة مع كميات ضخمة من البيانات النصية دون الحاجة لتحميلها بالكامل في الذاكرة. تشتهر المكتبة بدعمها لنماذج Word2Vec وFastText وLDA (تخصيص ديريشليت الكامن).
تتميز Gensim عن غيرها من المكتبات بتركيزها على العمل مع البيانات النصية غير المهيكلة وقدرتها على معالجة مجموعات المستندات التي لا تتسع للذاكرة العشوائية. مما يجعلها أداة مثالية لتحليل المجموعات النصية الكبيرة مثل أرشيفات الأخبار والمقالات العلمية أو وسائل التواصل الاجتماعي.
الإمكانيات الرئيسية لمكتبة Gensim
التمثيلات المتجهة للكلمات
توفر Gensim دعماً كاملاً لإنشاء والعمل مع التمثيلات المتجهة للكلمات، بما في ذلك Word2Vec وFastText وDoc2Vec. تسمح هذه النماذج بتحويل النص إلى متجهات رقمية مع الحفاظ على العلاقات الدلالية بين الكلمات.
النمذجة الموضوعية
تتضمن المكتبة عدة خوارزميات للنمذجة الموضوعية:
- LDA (تخصيص ديريشليت الكامن) — للكشف عن الموضوعات المخفية في مجموعة المستندات
- LSI (الفهرسة الدلالية الكامنة) — لتقليل الأبعاد واكتشاف المفاهيم الكامنة
- HDP (عملية ديريشليت الهرمية) — لتحديد عدد الموضوعات تلقائياً
العمل مع المجموعات النصية
تضمن Gensim عملاً فعالاً مع المجموعات النصية الكبيرة من خلال المعالجة التدفقية، مما يسمح بتحليل البيانات التي تتجاوز حجم الذاكرة العشوائية.
حساب التشابه
توفر المكتبة مقاييس متنوعة لحساب التشابه بين المستندات والكلمات والموضوعات، بما في ذلك تشابه جيب التمام ومقاييس دلالية أخرى.
التثبيت والإعداد الأساسي
تثبيت المكتبة
يتم تثبيت Gensim بالطريقة القياسية عبر pip:
pip install gensim
قد تحتاج بعض النماذج إلى تثبيت تبعيات إضافية:
pip install gensim[complete]
استيراد الوحدات الأساسية
import gensim
from gensim.models import Word2Vec, FastText, LdaModel, Doc2Vec
from gensim.corpora.dictionary import Dictionary
from gensim.corpora import MmCorpus
from gensim.similarities import Similarity
from gensim.utils import simple_preprocess
إعداد البيانات النصية
التقسيم إلى كلمات والمعالجة المسبقة
تتطلب Gensim مستندات مقسمة إلى كلمات على شكل قائمة من القوائم. المعالجة المسبقة الصحيحة للبيانات ضرورية لجودة النتائج:
import re
from gensim.utils import simple_preprocess
def preprocess_text(text):
"""معالجة النص المسبقة لـ Gensim"""
# إزالة الرموز الخاصة
text = re.sub(r'[^a-zA-Zа-яА-Я\s]', '', text)
# التقسيم إلى كلمات وتحويل إلى أحرف صغيرة
tokens = simple_preprocess(text, deacc=True)
return tokens
documents = [
"Gensim هي مكتبة مفيدة لمهام معالجة اللغة الطبيعية.",
"تدعم النمذجة الموضوعية وتمثيلات الكلمات المتجهة.",
"نماذج مثل Word2Vec وFastText مطبقة فيها."
]
# المعالجة المسبقة للمستندات
texts = [preprocess_text(doc) for doc in documents]
إنشاء القاموس والمجموعة النصية
# إنشاء القاموس
dictionary = Dictionary(texts)
# تصفية القيم المتطرفة
dictionary.filter_extremes(no_below=2, no_above=0.5, keep_n=100000)
# إنشاء المجموعة النصية (تمثيل كيس الكلمات)
corpus = [dictionary.doc2bow(text) for text in texts]