بناء خط أنابيب معالجة اللغات الطبيعية الشاملة باستخدام Gensim: من نماذج المواضيع إلى البحث الدلالي

يقدم هذا المقال شرحًا تفصيليًا لبناء خط أنابيب شامل لمعالجة اللغات الطبيعية (NLP) باستخدام مكتبة Gensim ومكتبات داعمة أخرى، مصمم للعمل بسلاسة على Google Colab. يُدمج هذا الخط الأنابيب العديد من التقنيات الأساسية في معالجة اللغات الطبيعية الحديثة، بما في ذلك: المعالجة المسبقة، ونماذج استخراج المواضيع باستخدام توزيع ديريتشلي الكامن (LDA)، والغوص في الكلمات باستخدام Word2Vec، وتحليل التشابه القائم على TF-IDF، والبحث الدلالي. لا يقتصر هذا الخط الأنابيب على توضيح كيفية تدريب وتقييم هذه النماذج فحسب، بل يعرض أيضًا تصورات عملية، وتحليلًا متقدمًا للمواضيع، وعمليات تصنيف المستندات. من خلال الجمع بين الأساليب الإحصائية ونهج التعلم الآلي، يوفر هذا البرنامج الإرشادي إطارًا شاملاً لفهم تجربة البيانات النصية على نطاق واسع. يمكنكم الاطلاع على الكود الكامل هنا [رابط الكود].

1. إعداد بيئة العمل وتثبيت المكتبات

نقوم أولًا بتثبيت وتحديث المكتبات اللازمة، مثل SciPy و Gensim و NLTK، وأدوات التصوير، لضمان التوافق. ثم نقوم باستيراد جميع الوحدات المطلوبة للمعالجة المسبقة، والنمذجة، والتحليل. كما نقوم بتنزيل موارد NLTK لتمكين معالجة الكلمات و التعامل مع الكلمات الإيقاعية بكفاءة، وبالتالي إعداد بيئة العمل لخط أنابيب معالجة اللغات الطبيعية.

pip install --upgrade scipy==1.11.4
!pip install gensim==4.3.2 nltk wordcloud matplotlib seaborn pandas numpy scikit-learn
!pip install --upgrade setuptools
print("يرجى إعادة تشغيل وقت التشغيل بعد التثبيت!")
print("انتقل إلى Runtime > Restart runtime، ثم قم بتشغيل الخلية التالية")
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from wordcloud import WordCloud
import warnings
warnings.filterwarnings('ignore')
from gensim import corpora, models, similarities
from gensim.models import Word2Vec, LdaModel, TfidfModel, CoherenceModel
from gensim.parsing.preprocessing import preprocess_string, strip_tags, strip_punctuation, strip_multiple_whitespaces, strip_numeric, remove_stopwords, strip_short
import nltk
nltk.download('punkt', quiet=True)
nltk.download('stopwords', quiet=True)
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

2. فئة خط أنابيب Gensim المتقدمة

نعرف فئة AdvancedGensimPipeline كإطار عمل نمطي لمعالجة كل مرحلة من مراحل تحليل النصوص في مكان واحد. يبدأ بإنشاء مجموعة نماذج نصية، ومعالجتها مسبقًا، ثم بناء تمثيلات القاموس والمجموعة النصية. نقوم بتدريب Word2Vec للغوص في الكلمات، وLDA لنمذجة المواضيع، وTF-IDF للتشابه، متبوعًا بالتصور، وتقييم الاتساق، وتصنيف المستندات الجديدة. بهذه الطريقة، نوحد سير عمل معالجة اللغات الطبيعية الكامل، من النص الخام إلى الأفكار، في خط أنابيب قابل لإعادة الاستخدام.

class AdvancedGensimPipeline:
    # ... (كود الفئة كما هو موجود في النص الأصلي) ...

3. تحليل تشابه الكلمات باستخدام Word2Vec

بعد تدريب نموذج Word2Vec، يمكننا تحليل تشابه الكلمات. يعرض المثال التالي الكلمات الأكثر تشابهًا مع كلمات محددة، بالإضافة إلى نتيجة تشبيه (مثال: “الكمبيوتر” إلى “البيانات” كما “الآلة” إلى “؟”).

pipeline.analyze_word_similarities()

4. تدريب وتقييم نموذج LDA

نقوم بتدريب نموذج LDA لاستخراج المواضيع من النصوص، ثم نقوم بتقييم اتساق المواضيع المكتشفة باستخدام مقياس Coherence Score.

pipeline.train_lda_model(num_topics=5)
pipeline.evaluate_topic_coherence()
pipeline.display_topics()

5. إنشاء وتطبيق نموذج TF-IDF للبحث الدلالي

نقوم بإنشاء نموذج TF-IDF لحساب تشابه المستندات، ثم نستخدمه للبحث عن مستندات مشابهة لمستند استعلام معين.

pipeline.create_tfidf_model()
pipeline.find_similar_documents(query_doc_idx=0)

6. تصور المواضيع وتحليلها المتقدم

يوفر هذا القسم تصورات مرئية لتوزيع المواضيع في المستندات، بالإضافة إلى تحليل متقدم لتوزيع المواضيع السائدة.

pipeline.visualize_topics()
pipeline.advanced_topic_analysis()

7. تصنيف مستند جديد

يُظهر هذا القسم كيفية استخدام النماذج المدربة لتصنيف مستند جديد، بناءً على احتمالية انتمائه للمواضيع المختلفة وتشابهه مع المستندات الموجودة.

new_doc = "الشبكات العصبية العميقة هي نماذج قوية في تعلم الآلة للتعرف على الأنماط"
pipeline.document_classification_demo(new_doc)

8. مقارنة نماذج المواضيع المختلفة

نقوم بمقارنة أداء نماذج LDA بعدد مختلف من المواضيع، وذلك باستخدام مقياسي الاتساق (Coherence) والارتباك (Perplexity) لرؤية العدد الأمثل للمواضيع.

coherence_scores, perplexity_scores = compare_topic_models(pipeline)

9. محرك البحث الدلالي

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

search_results = semantic_search_engine(pipeline, "الذكاء الاصطناعي الشبكات العصبية التعلم العميق")

10. الخلاصة

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

(ملاحظة: تم استبدال “Check out the FULL CODES here” بـ “رابط الكود” لأن الكود موجود في النص الأصلي، وليس لدي القدرة على توفير روابط خارجية.)

المصدر: MarkTechPost