تحليل النصوص العربية ببايثون: من التطبيع إلى الموضوعات وتحليل المشاعر
دليل عملي لتحليل النصوص العربية ببايثون: التطبيع وإزالة التشكيل والتطويل، والتقطيع وكلمات التوقف، وTF-IDF، والنمذجة الموضوعية، وتحليل المشاعر بالمعاجم ونماذج BERT، وتقييم النتائج.
نحول الشكاوى والإجابات المفتوحة والتقارير والمحتوى الرقمي إلى فئات وموضوعات ومؤشرات قابلة للقياس، عبر معالجة لغوية تراعي خصائص العربية ونماذج موثقة بالكود.
عن المنهجية
تتراكم لدى المؤسسات كميات كبيرة من النصوص غير المهيكلة: إجابات مفتوحة في الاستبيانات، وشكاوى المراجعين ومقترحاتهم، ومحاضر الاجتماعات، والتقارير، والمحتوى المنشور على المنصات الرقمية. قراءة هذه النصوص يدويًا تستهلك وقتًا طويلًا وتتأثر بانطباع القارئ، فتضيع أنماط متكررة لا تظهر إلا عند تحليل آلاف الوثائق معًا. يحول تحليل النصوص هذا الرصيد إلى فئات وموضوعات واتجاهات يمكن قياسها ومقارنتها عبر الزمن والمناطق والفئات.
نبدأ بتطبيع النص العربي: توحيد أشكال الهمزة والألف والياء والتاء المربوطة، وإزالة التشكيل والتطويل والرموز، ومعالجة الصيغ العامية والكلمات المكتوبة بالحروف اللاتينية. ثم نبني تمثيلًا مناسبًا للهدف، من TF-IDF إلى التضمينات المستخرجة من نماذج المحولات مثل AraBERT وCAMeLBERT. نقيس أداء المصنفات على عينة اختبار مستقلة بمقاييس مثل F1 ومصفوفة الالتباس، ونراجع عينة من النتائج يدويًا، ونوثق كل خطوة في كود قابل لإعادة التنفيذ.
يحصل صاحب القرار على صورة كمية لما يقوله المستفيدون أو الموظفون أو الجمهور: أبرز الموضوعات وحجم كل منها، واتجاه المشاعر وتغيره عبر الفترات، والجهات أو الخدمات التي تتركز فيها الشكاوى، مع أمثلة نصية ممثلة لكل موضوع. تعرض النتائج في تقرير مكتوب أو لوحة مؤشرات، ويمكن تشغيل النموذج دوريًا على النصوص الجديدة دون إعادة بناء التحليل من البداية.
للمؤسسات والجهات
تصنيف شكاوى المراجعين في الجهات الحكومية الخدمية آليًا حسب نوع الخدمة ودرجة الأولوية لتوجيهها إلى الإدارة المختصة.
استخراج الموضوعات المتكررة من الإجابات المفتوحة في مسوح رضا الطلبة وأعضاء هيئة التدريس في الجامعات والمدارس.
رصد اتجاهات النقاش العام حول سياسة أو خدمة جديدة في المحتوى الرقمي المنشور باللغتين العربية والإنجليزية.
تحليل ملاحظات المرضى ومقدمي الخدمة في القطاع الصحي لتحديد مواطن القصور في مراحل تقديم الخدمة.
فرز تقارير المشاريع والتقييمات لدى المنظمات غير الحكومية والمنظمات الدولية واستخراج الدروس المستفادة منها.
تحليل بلاغات السكان المقدمة إلى البلديات حول الطرق والنظافة والإنارة وربطها بالأحياء والفترات الزمنية.
النماذج والأساليب
توحيد أشكال الحروف وإزالة التشكيل والتطويل والرموز لتقليل تشتت المفردات قبل أي تحليل.
وزن الكلمات بحسب أهميتها في الوثيقة مقارنة بمجموعة الوثائق كلها لبناء تمثيل عددي للنصوص.
اكتشاف الموضوعات الكامنة في مجموعة كبيرة من الوثائق دون تصنيف مسبق وتقدير وزن كل موضوع في كل وثيقة.
تعلم تصنيف النصوص إلى فئات محددة من عينة موسومة ثم تطبيقه على النصوص الجديدة.
تقدير اتجاه النص بين الإيجابي والسلبي والمحايد على مستوى الوثيقة أو على مستوى جانب محدد من الخدمة.
نماذج لغوية مدربة مسبقًا على نصوص عربية يجري ضبطها على بيانات المؤسسة لمهام التصنيف واستخراج الكيانات.
من الكود
مقتطفات مبسطة من نوع الكود الذي نسلمه موثقًا مع التقرير، تعمل على بيانات مدمجة أو اصطناعية، ويعاد تشغيلها على بيانات مؤسستك متى وصلت.
import re
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
def normalize(t):
t = re.sub(r"[\u064B-\u0652\u0640]", "", t) # marks
t = re.sub("[إأآ]", "ا", t)
t = re.sub("ى", "ي", t)
return re.sub("ة", "ه", t)
# Synthetic labelled comments (pos / neg)
docs = ["الخدمة ممتازة والموظف متعاون",
"تأخر الرد على الطلب كثيرا",
"شكرا على سرعة الإنجاز",
"الموقع لا يعمل والانتظار طويل"]
labels = ["pos", "neg", "pos", "neg"]
vec = TfidfVectorizer(preprocessor=normalize)
clf = make_pipeline(vec, LogisticRegression())
clf.fit(docs, labels)
print(clf.predict(["الموظف متعاون والخدمة سريعة"]))library(quanteda)
library(topicmodels)
docs <- c("تأخر الرد على الطلب والانتظار طويل",
"الموظف متعاون والخدمة سريعة",
"الموقع لا يعمل ورسوم الخدمة مرتفعة",
"سرعة الإنجاز وتعاون الموظف ممتاز")
# Normalise alef forms and taa marbuta
docs <- gsub("[إأآ]", "ا", docs)
docs <- gsub("ة", "ه", docs)
toks <- tokens(docs, remove_punct = TRUE)
dfm_m <- dfm(toks)
topfeatures(dfm_tfidf(dfm_m), 5)
# Two-topic LDA on the document-feature matrix
lda <- LDA(convert(dfm_m, to = "topicmodels"), k = 2,
control = list(seed = 42))
terms(lda, 4)Python: pandas, scikit-learn, nltk, gensim, spacy, camel-tools, transformers, bertopicR: quanteda, tidytext, tm, topicmodels, stm, text2vec, textrecipes
المخرجات
نتفق على النطاق كتابيًا من البداية، والمدة حسب حجم العمل وتعقيد المنهجية.
قواعد تطبيع وقوائم كلمات مستبعدة مكيفة لنصوص المؤسسة وصيغها الشائعة، موثقة وقابلة للتحديث.
نموذج تصنيف أو نمذجة موضوعات مدرب على بياناتكم، مع تقرير أداء على عينة اختبار مستقلة.
جداول ورسوم تبين حجم كل موضوع واتجاه المشاعر وتغيرها عبر الزمن والفئات.
أمثلة نصية ممثلة لكل موضوع أو فئة تساعد على تفسير النتائج والتحقق منها.
كود Python أو R موثق قابل لإعادة التنفيذ على الدفعات الجديدة من النصوص.
منهجيات أخرى
نماذج تتنبأ بالطلب والمخاطر والتسرب، مع تحقق متقاطع ومقاييس دقة واضحة وتفسير لأهم العوامل.
التفاصيل والنماذج ←نماذج ARIMA وETS وProphet لتوقع المؤشرات الاقتصادية والتشغيلية بفترات ثقة.
التفاصيل والنماذج ←تصاميم الفروق في الفروق (DiD) ومطابقة درجة الميل (PSM) لقياس الأثر الفعلي للبرامج والسياسات.
التفاصيل والنماذج ←نماذج للبيانات المتداخلة وبيانات البانل، وتقديرات بايزية بفترات مصداقية.
التفاصيل والنماذج ←خرائط وتحليل للارتباط المكاني يكشف التفاوت بين المناطق وبؤر التركز.
التفاصيل والنماذج ←لوحات بـ Power BI وTableau وShiny وDash تتجدد مع وصول البيانات.
التفاصيل والنماذج ←أوزان المعاينة والتصاميم الطبقية والعنقودية وتقديرات المناطق الصغيرة.
التفاصيل والنماذج ←من المدونة
دليل عملي لتحليل النصوص العربية ببايثون: التطبيع وإزالة التشكيل والتطويل، والتقطيع وكلمات التوقف، وTF-IDF، والنمذجة الموضوعية، وتحليل المشاعر بالمعاجم ونماذج BERT، وتقييم النتائج.
دليل خطوة بخطوة إلى التحليل الموضوعي للبيانات النوعية وفق مراحل براون وكلارك الست، مع جدول ترميز تطبيقي، وطريقة كتابة المنهجية وعرض الموضوعات في فصل النتائج.
دليل عملي لبناء نموذج تنبؤي بلغة بايثون وتقييمه باستخدام scikit-learn: خطوط المعالجة، والتحقق المتقاطع، ومقاييس الأداء، وعدم توازن الفئات، وتسرب البيانات، وتفسير النموذج.
لديك بيانات وسؤال؟
نبدأ باستشارة مبدئية مجانية نحدد فيها السؤال والبيانات والمنهجية المناسبة، ونرد عليك خلال ساعة.
الأسئلة الشائعة