البيانات المهيكلة: استخراج وتصنيف وتوحيد
أهداف هذا الفصل
- استخراج معلومات دقيقة من نص حر بمخطط صارم
- التصنيف بالدفعات بتصنيفة مغلقة وتعريفات لكل فئة
- توحيد القيم وتوجيه الحالات المشكوك فيها إلى مراجعة بشرية
الكنز المخفي في النص الحر
بعد المعرض المهني في ليون، تعود صوفيا بغنيمة مرهقة: 80 بريدًا من عملاء محتملين، وملاحظات محادثات دُوّنت على عجل، وملف آراء العملاء المئتين للفصل الراقد منذ الفصل 4. كل هذه المادة تحتوي بيانات ثمينة — من يطلب عرضًا توضيحيًا، أي مطعم، أي حجم فريق، أي مستوى استعجال — لكنها محبوسة في نص حر، غير مقروء لجدول بيانات. إعادة إدخالها يدويًا؟ يومان. استخراجها بموجّه محكم؟ ساعة، شاملة التحقق.
هذه مهنة هذا الفصل: تحويل النص الحر إلى بيانات مهيكلة موثوقة. الفصل 4 وضع اللبنة الأساسية — JSON الصارم بمخطط. سنحوّلها الآن إلى صناعة: استخراج متعدد الحقول، تصنيف بتصنيفة مغلقة، توحيد القيم، معالجة بالدفعات، وخصوصًا توجيه الحالات المشكوك فيها — لأن الفرق بين لعبة عرض وأداة إنتاج يُلعب كليًا على الحالات التي لا تدخل في الخانات.
الاستخراج: مخطط وقواعد لكل حقل
الاستخراج هو رصد معلومات دقيقة في نص وترتيبها في حقول محددة. الجودة تعتمد على ثلاثة عناصر تعرفها كلًّا على حدة: مخطط دقيق (الفصل 4)، قاعدة عدم اختراع (الفصل 6)، و— الجديد — قواعد لكل حقل: لكل حقل، ما نستخرجه، وبأي شكل، وماذا نضع عند غياب المعلومة.
تستخرج بيانات تواصل من رسائل بريد عملاء محتملين، لفريق المبيعات لدى ناشر برنامج جداول عمل للمطاعم.
لكل بريد بين الفواصل، أرجِع فقط كائن JSON:
{
"nom": "الاسم الأول واسم العائلة، أو null إن غاب",
"etablissement": "اسم المطعم أو المجموعة، أو null",
"taille_equipe": "عدد صحيح من الموظفين، أو null إن لم يُذكر",
"demande": "demo" | "tarifs" | "question" | "autre",
"urgence": "haute" | "normale",
"citation_cle": "جملة البريد التي تبرر حقل demande"
}
القواعد:
- لا تخترع قيمة أبدًا: معلومة غائبة = null.
- taille_equipe: فقط إن كُتب رقم؛ «فريق كبير» = null.
- urgence = haute فقط إن ذُكر أجل صريح.
- citation_cle: نسخ حرفي للنص، دون إعادة صياغة.
--- البريد ---
{{البريد}}
--- النهاية ---حقل citation_cle هو الحيلة الأكثر ربحية في هذا الموجّه: بفرض الجملة الحرفية التي تبرر التصنيف، تجعل كل سطر قابلًا للتدقيق في ثانيتين — الاقتباس يطابق أو لا يطابق — وتقلل الاختراع، لأن النموذج مضطر إلى تثبيت إجابته في النص. إنه المبدأ نفسه للاستدلال القابل للتحقق في الفصل 3، منقولًا إلى البيانات. أما قواعد كل حقل، فهي تحسم مسبقًا الالتباسات التي كنت ستكتشفها في الإنتاج: ماذا نفعل بـ«فريق كبير»، وما الذي يستحق استعجالًا «عاليًا».
التصنيف: تصنيفة مغلقة ومعرَّفة
التصنيف هو وضع كل عنصر في فئة من قائمة مغلقة. الخطأ الكلاسيكي إعطاء أسماء الفئات دون تعريفها: «صنّف هذه الآراء إلى: خدمة، منتج، سعر، أخرى». عندها يكون للنموذج فكرته الخاصة عن الحدود بين «خدمة» و«منتج» — وهي تتغير من رأي إلى آخر. التصنيفة المهنية تعرّف كل فئة، وتعطي مثالًا، وتحدد قواعد الفصل.
صنّف كل رأي عميل في فئة واحدة من هذه القائمة المغلقة:
- "fonctionnalite": الرأي يتعلق بما يفعله البرنامج أو لا يفعله. مثال: «يستحيل تصدير الجدول إلى PDF».
- "ergonomie": الرأي يتعلق بسهولة الاستخدام. مثال: «أمضيت 3 أيام لأجد أين أغيّر موعدًا».
- "support": الرأي يتعلق بالمساعدة المتلقاة من الفريق. مثال: «رد خلال 10 دقائق، حُلت المشكلة».
- "prix": الرأي يتعلق بالكلفة أو نسبة الجودة إلى السعر.
- "autre": لا شيء مما سبق ينطبق بوضوح.
قواعد الفصل:
- إن لمس الرأي عدة فئات، اختر فئة الجملة الأكثر تفصيلًا ودوّن الأخريات في "categories_secondaires".
- عند شك حقيقي، استخدم "autre" مع "confiance": "basse" — لا تفرض فئة أبدًا.
الصيغة لكل رأي: { "id": N, "categorie": "...", "categories_secondaires": [...], "confiance": "haute|basse", "citation_cle": "..." }ثلاث آليات يجب حفظها. التعريفات مع الأمثلة تثبّت الحدود — إنه few-shot (الفصل 2) مطبَّقًا على الفئات. قاعدة الفصل تعالج حالة تعدد المواضيع، الحتمية في الآراء الواقعية. وحقل confiance يمنح النموذج مخرجًا مشرّفًا عندما يتردد: بدونه، يفرض فئة بثقة تامة، وتكذب إحصاءاتك بصمت. «autre بثقة منخفضة» بيانات صادقة؛ و«prix» مخمَّنة بيانات سامة.
التوحيد: بيانات نظيفة من المرة الأولى
الاستخراج لا يكفي: يجب أن تكون القيم قابلة للمقارنة. إن أرجع الاستخراج «15» و«خمسة عشر موظفًا» و«~15 شخصًا»، فسيغرق جدولك بالمتغيرات ويصبح كل فرز خاطئًا. التوحيد يُفرض في الموجّه، حقلًا بحقل: التواريخ بصيغة AAAA-MM-JJ، المبالغ أرقامًا بلا رموز، الهواتف أرقامًا متلاصقة، أسماء المؤسسات بحالة أحرفها الأصلية لكن بلا علامات اقتباس. كل صيغة تُحدَّد مسبقًا توفّر ساعة تنظيف لاحقًا.
فخ محدد يستحق التحذير: التحويلات الصامتة. اطلب «عدد الموظفين» وقد يحوّل النموذج «نحو عشرة» إلى 10 — اختراع متنكر في زي توحيد. قاعدة «فقط إن كُتب رقم» في موجّه الاستخراج موجودة لهذا. المبدأ العام: التوحيد يغيّر شكل قيمة حاضرة، ولا يخلق أبدًا قيمة غائبة. والحد الفاصل بين الاثنين يجب أن يُكتب صراحة في قواعد حقولك.
قبل/بعد: جولة التوحيد عمليًا
يمكن دمج التوحيد في قواعد الحقول منذ الاستخراج — وهذا الأمثل — لكنه يعمل أيضًا كجولة منفصلة، مفيدة جدًا عندما ترث بيانات مستخرجة لكنها متسخة: تصدير نموذج، جدول قديم مملوء يدويًا، ملف جهات اتصال المعرض الذي أدخله ثلاثة أشخاص مختلفين. موجّه التوحيد يصبح عندها مرحلة سلسلة (الفصل 7) قائمة بذاتها:
توحّد بطاقات عملاء محتملين أُدخلت يدويًا، دون تعديل المضمون.
لكل سطر بين الفواصل، أرجِع النسخة الموحَّدة:
- date_contact: بصيغة AAAA-MM-JJ. «الثلاثاء الماضي» أو تاريخ غامض = null.
- telephone: أرقام فقط، بلا فراغات ولا نقاط. رقم ناقص = null.
- etablissement: حالة الأحرف الأصلية، بلا علامات اقتباس ولا كلمة «Restaurant» الزائدة في البداية.
- taille_equipe: عدد صحيح فقط إن ورد رقم في البطاقة، وإلا null.
- ville: الاسم الكامل، أول حرف كبير، بلا رمز بريدي.
قواعد مطلقة:
- تغيّر شكل القيم الحاضرة، ولا تخلق أبدًا قيمة غائبة.
- أضِف حقل "alertes" يسرد كل ما بدا لك غامضًا في السطر.
- احتفظ بمعرّف السطر كما هو.
--- الأسطر ---
{{أسطر: المعرّف ؛ التاريخ ؛ الهاتف ؛ المؤسسة ؛ الحجم ؛ المدينة}}
--- النهاية ---حقل alertes يلعب هنا الدور الذي لعبه confiance في التصنيف: مخرج مشرّف للشك. هل «06.12.34» هاتف مبتور؟ هل «La Brasserie» و«Brasserie» المؤسسة نفسها؟ النموذج يشير بدل أن يحسم بصمت، وصوفيا تبتّ في التنبيهات دفعة واحدة في النهاية — دقائق قليلة، مقابل ساعات لمراجعة كل سطر. البيانات الموحَّدة بلا أثر تدقيق بيانات سيُعاد التحقق منها كاملةً يوم أول شك.
المعالجة بالدفعات دون فقدان الخيط
تبقى مسألة الحجم: 200 رأي لا تُعالج في موجّه عملاق واحد. بعد حجم معين، تتدهور الجودة في منتصف القائمة — انتباه النموذج أفضل عند الأطراف، كما رأينا في الفصل 4 — ومخرج واحد مشوّه قد يفسد الدفعة كلها. الممارسة المتينة: دفعات من 10 إلى 20 عنصرًا، كل منها يحمل معرّفًا صريحًا، وتحقق لكل دفعة قبل الانتقال إلى التالية.
المعرّفات هي التفصيل المنقذ: رقّم مدخلاتك («AVIS-001»، «AVIS-002») واطلب المعرّف في كل كائن مخرَج. عندها يمكنك التحقق آليًا أن أي مدخل لم يُتخطَّ ولم يُكرَّر — فالنموذج يتخطى أحيانًا عنصرًا في منتصف الدفعة دون أن يشير. عُدّ المدخلات، عُدّ المخرجات، قارن المعرّفات: ثلاثة تحققات من عشر ثوانٍ تلتقط الفقد الصامت.
flowchart LR
T["نص خام: آراء، رسائل، ملاحظات"] --> L["دفعات من 10 إلى 20 مع معرّفات"]
L --> X["استخراج وتصنيف وفق المخطط"]
X --> C{"ثقة عالية وJSON صالح؟"}
C -->|"نعم"| D["جدول بيانات أو لوحة تحكم"]
C -->|"لا"| H["قائمة مراجعة بشرية"]
H -->|"حالات محسومة"| Dشبكة الأمان: وجّه المشكوك فيه، وتحقق بالعيّنة
المخطط أعلاه يحمل قرار البنية الأهم في الفصل: الحالات منخفضة الثقة لا تذهب إلى الجدول، بل إلى قائمة مراجعة بشرية. من بين آراء صوفيا المئتين، خرج 14 بثقة منخفضة؛ حسمتها يدويًا في عشر دقائق. أما الـ186 الباقية فكانت موثوقة — وتحققت من ذلك بالعيّنة: 15 رأيًا مسحوبة عشوائيًا، مقارنة الاقتباس بالنص المصدر، صفر أخطاء. عيّنة نظيفة، دفعة مقبولة. إنها الروح نفسها لمجموعة الاختبار التي سننظّمها في الفصل 9.
إن كشفت العيّنة أخطاءً، لا تصحح الأسطر واحدًا واحدًا: ابحث عن النمط. ثلاثة أخطاء على آراء ساخرة؟ أضِف قاعدة أو مثال few-shot عن السخرية في الموجّه وأعد تشغيل الدفعة. تصحيح المخرَج يصلح مرة؛ وتصحيح الموجّه يصلح كل المرات التالية — إنه درس قوالب الفصل 5، مطبَّقًا على البيانات. واحتفظ بالنسخة المصححة من الموجّه في مكتبتك، مع حالات اختبارها.
في المحصلة، خط أنابيب صوفيا يُختصر في جملة: دفعات معرَّفة، مخطط بقواعد لكل حقل، اقتباسات للتدقيق، حقل ثقة للتوجيه، عيّنة للمصادقة. خمس آليات بسيطة — وملف الآراء المئتين الراقد منذ شهرين أصبح، في صباح واحد، لوحة تحكم تستشيرها الإدارة كل أسبوع.
السياق
بعد العودة من معرض ليون، ينتظر فريق المبيعات قائمة العملاء المحتملين المؤهلة: من يريد عرضًا توضيحيًا، أي حجم مؤسسة، أي استعجال. لدى صوفيا 80 بريدًا متناثرًا. تريد بناء خط الاستخراج الكامل — مخطط، قواعد لكل حقل، دفعات معرَّفة، توجيه الحالات المشكوك فيها — وتسليم جدول موثوق قبل الجمعة، مع برهان بالعيّنة أن البيانات صحيحة.
التعليمات
- اختر مخزون نص حر من يومياتك (رسائل، آراء، ملاحظات، تذاكر) واذكر الحقول الخمسة-الستة التي ستكون ذات قيمة في جدول بيانات.
- اكتب مخطط JSON بقاعدة لكل حقل: الشكل المتوقع، التوحيد، والقيمة عند الغياب (null، لا اختراع أبدًا).
- أضِف حقل citation_cle وحقل confiance مع قاعدة استخدامه: عند الشك، ثقة منخفضة بدل فئة مفروضة.
- رقّم 15-20 مدخلًا حقيقيًا، عالجها في دفعة واحدة، ثم تحقق آليًا: عدد المخرجات يساوي عدد المدخلات، كل المعرّفات حاضرة، JSON صالح.
- افحص عيّنة من 5 أسطر: قارن كل اقتباس بالنص المصدر. إن وُجدت أخطاء، ابحث عن النمط وصحح الموجّه، لا الأسطر.
- عالج يدويًا قائمة الثقة المنخفضة، ثم سلّم الجدول النهائي — وأودِع الموجّه المصادَق عليه في مكتبتك مع حالات اختباره.
باختصار
- الاستخراج الموثوق = مخطط دقيق + قواعد لكل حقل (الشكل، التوحيد، القيمة عند الغياب) + منع الاختراع.
- حقل citation_cle يثبّت كل بيانات في النص المصدر: تدقيق في ثانيتين، واختراع أقل.
- التصنيفة المهنية تعرّف كل فئة بمثال وقواعد فصل — لا مجرد أسماء.
- حقل confiance يمنح الشك مخرجًا مشرّفًا: «autre بثقة منخفضة» أفضل من فئة مفروضة تزيّف الإحصاءات.
- التوحيد يغيّر شكل قيمة حاضرة، ولا يخلق أبدًا قيمة غائبة.
- عالج بدفعات من 10-20 بمعرّفات، وتحقق آليًا: عدد المخرجات، المعرّفات، صحة JSON.
- وجّه الحالات المشكوك فيها إلى مراجعة بشرية وصادق على الدفعات بالعيّنة؛ وعند الأخطاء، صحح الموجّه (النمط)، لا الأسطر.
اختبار — تحقّق من فهمك
1. ما فائدة حقل citation_cle في موجّه استخراج؟
2. لماذا نعرّف كل فئة من تصنيفة بمثال؟
3. ماذا تفعل بعنصر يتردد النموذج في تصنيفه؟
4. ما حدود التوحيد؟
5. لماذا نعالج 200 رأي بدفعات من 10-20 بدل موجّه عملاق؟
6. كشفت العيّنة 3 أخطاء على آراء ساخرة. ماذا تفعل؟