الإثراء متعدد اللغات - وثائق Entity Enricher

الإثراء متعدد اللغات

يمكن لـ Entity Enricher إنتاج نتائج الإثراء بما يصل إلى 40 لغة في آنٍ واحد. وتُخزَّن الحقول متعددة اللغات ككائنات JSON مفهرسة حسب اللغة — وهي صيغة قابلة للنقل والاستعلام ومتوافقة مع كل قاعدة بيانات رئيسية.

محرر سير العمل: مفتاح تعدد اللغات

في محرر المخططات، بدّل عَلَم متعدد اللغات على أي خاصية سلسلة نصية أو مصفوفة سلاسل نصية. عند تفعيله، يُعيد LLM القيم مغلَّفة في كائن مفتاحه اللغة بدلًا من قيمة عادية.

كيف يعمل

1
تحديد الحقول كمتعددة اللغات
في محرر المخططات، حدّد مربع الاختيار متعدد اللغات على خصائص السلاسل النصية أو المصفوفات. يُخزَّن العَلَم بصيغة multilingual: true في مخطط JSON.
2
اختر اللغات المستهدفة
في خيارات الشريط الجانبي، اختر لغة أو أكثر من بين اللغات الأربعين المدعومة. يوجّه موجّه الإثراء نموذج LLM لإنتاج القيم بكل لغة مختارة. اللغة الأولى المختارة هي اللغة الأساسية: تُميَّز بشارة «أساسية» وتُستخدَم لجميع حقول السلاسل غير متعددة اللغات (الأوصاف والأسماء وغيرها التي لا تحمل علامة multilingual: true). استخدم زر على أي شريحة أخرى لترقيتها إلى أساسية. كما تقوم الواجهة الخلفية بتصفية أي مفاتيح لغات دخيلة قد يُصدرها نموذج LLM وليست ضمن اختيارك.
3
يُعيد LLM مخرجات مفهرسة حسب اللغة
يغلّف نموذج Pydantic الديناميكي الحقول متعددة اللغات على هيئة dict[str, T]، حيث تكون المفاتيح رموز لغات ISO 639-1 والقيم مطابقة لنوع الحقل.

تنسيق البيانات

تُخزَّن القيم متعددة اللغات ككائنات JSON برموز اللغات كمفاتيح. وقد اختير هذا التنسيق دون البدائل لقابليته للنقل والاستعلام وكفاءته في التخزين.

سلسلة نصية متعددة اللغات
خاصية المخطط
"description": {
"type": "string",
"multilingual": true
}
مُخرَجات الإثراء
"description": {
"en": "A global pharma company",
"fr": "Une entreprise pharma mondiale",
"ar": "شركة أدوية عالمية"
}
مصفوفة متعددة اللغات
خاصية المخطط
"indications": {
"type": "array",
"items": { "type": "string" },
"multilingual": true
}
مُخرَجات الإثراء
"indications": {
"en": ["pain relief", "fever"],
"fr": ["anti-douleur", "fièvre"],
"ar": ["تخفيف الألم", "حمى"]
}
الحقول غير متعددة اللغات

الحقول التي لا تحمل multilingual: true تُعاد كقيم عادية. عادةً ما تبقى المعرّفات والرموز وعناوين URL والتواريخ والأرقام غير متعددة اللغات.

"atc_code": "N02BE01",
"founded_year": 1973,
"website": "https://example.com"

لماذا هذا التنسيق؟

يوجد نهجان للمصفوفات متعددة اللغات. يستخدم Entity Enricher Format A (كائن مُفهرَس باللغة) لأنه التنسيق الوحيد الذي يعمل كما هو عبر جميع قواعد البيانات الرئيسية دون تحويل.

المعاييرA كائن مفهرس حسب اللغةB مصفوفة من العناصر المُترجمة محليًا
البنية{"en": [...], "fr": [...]}[{"en": "x", "fr": "y"}, ...]
استعلم عن لغة واحدةوصول مباشر
data -> 'field' -> 'en'
يتطلب التكرار
jsonb_array_elements + extract
إضافة لغةأضف مفتاحًا واحدًا إلى الكائنتحديث كل عنصر في المصفوفة
متسق مع القيم القياسيةنعم — النمط نفسه {"en": "...", "fr": "..."}لا — شكل مختلف للسلاسل النصية مقابل المصفوفات
قابلية نقل قاعدة البياناتجميع قواعد البيانات الرئيسيةجميع قواعد البيانات الرئيسية

أمثلة على استعلام قاعدة البيانات

التنسيق المُفهرَس باللغة قابل للاستعلام أصليًا في جميع قواعد البيانات الرئيسية التي تدعم أعمدة JSON.

PostgreSQL
-- Get English description
SELECT structured_output -> 'description' -> 'en' FROM enrichment_records;
-- Search within a multilingual array
SELECT * FROM enrichment_records
WHERE structured_output -> 'indications' -> 'en' ? 'pain relief';
MySQL 8+
-- Get French description
SELECT JSON_EXTRACT(structured_output, '$.description.fr') FROM enrichment_records;
MongoDB
// Project only Arabic values
db.records.find({}, { "description.ar": 1, "indications.ar": 1 })
SQL Server
-- Get German description
SELECT JSON_VALUE(structured_output, '$.description.de') FROM enrichment_records;

اللغات المدعومة

تتوفر 40 لغة. اختر أي مجموعة منها عند تشغيل عملية إثراء.

اللغات العامة
enEnglish
zhChinese
hiHindi
esSpanish
arArabic
frFrench
bnBengali
ptPortuguese
ruRussian
jaJapanese
deGerman
urUrdu
viVietnamese
trTurkish
koKorean
taTamil
mrMarathi
teTelugu
paPunjabi
yueCantonese
itItalian
اللغات الأوروبية
plPolish
ukUkrainian
roRomanian
nlDutch
elGreek
csCzech
huHungarian
svSwedish
srSerbian
bgBulgarian
hrCroatian
skSlovak
daDanish
fiFinnish
noNorwegian
ltLithuanian
slSlovenian
lvLatvian
etEstonian

أي الحقول ينبغي أن تكون متعددة اللغات؟

تحديد كمتعدد اللغات
  • الأسماء والتسميات (المدينة، الدولة، اسم المنتج)
  • الأوصاف والملخصات
  • مصطلحات طبية/علمية
  • تسميات الحالة ("موافَق عليه"، "نشط")
  • تسميات الفئات والوسوم
  • التعليمات والتوصيات
الإبقاء عليه أحادي اللغة
  • الحقول المحفوظة (المُعلَّمة بـ preserve)
  • المعرّفات التقنية (UUIDs، المعرّفات)
  • رموز موحّدة (ATC، CAS، ISO)
  • الاختصارات (FDA، EMA، WHO)
  • الأرقام والتواريخ والنسب المئوية
  • عناوين URL والبريد الإلكتروني وأرقام الهاتف
  • أعلام منطقية

لا يمكن الجمع بين علامة تعدُّد اللغات وعلامة الحفظ: فالقيمة المحفوظة تمرّ دون ترجمة، بلغة واحدة. يعطّل محرِّر الschema المفتاح المتعارض، ويرفض الـAPI أي schema يحمل كلتا العلامتين. يمكن أن تكون الحقول المفتاحية (المفاتيح الطبيعية أو مفاتيح قاعدة البيانات) متعدّدة اللغات — عندئذٍ تعتمد هوية الـentity على لغة المفتاح المثبَّتة في الـschema.

أنواع الحقول الصالحة

علَم تعدّد اللغات صالح فقط على أنواع خصائص معيّنة. ويفرض محرّر المخطّط ذلك تلقائيًا.

نوع الخاصيةمتعدد اللغات؟تنسيق الإخراج
stringنعمdict[str, str]
number / integerنعمdict[str, float]
booleanنعمdict[str, bool]
مصفوفة من القيم الأوّليةنعمdict[str, list[str]]
objectلاعلّم الحقول المفردة داخل الكائن بدلًا من ذلك — ما لم يكن الكائن صفًا واحدًا لكل لغة، انظر أدناه
مصفوفة من الكائناتلاحدّد الحقول الفردية داخل العناصر بدلًا من ذلك
$refلاحدّد الحقول داخل الكيان المُشار إليه بدلًا من ذلك

ما الذي لا يمكن الجمع بينه وبين تعدّد اللغات

القيمة متعددة اللغات خريطةُ لغات لا قيمة مفردة — لذا لا تنطبق عليها السمات التي تقيّد قيمة مفردة. وتُحلّ هذه التعارضات عند توليد المخطط وتُرفض عند حفظه يدويًا، بدل أن تتسبب في فشل لاحق أثناء الإثراء.

المفردات المغلقة تتغلّب

الخاصية المقيَّدة بمجموعة ثابتة من العناصر لا يمكن أن تكون متعددة اللغات أيضًا: فالعناصر رموز معيارية، وقاعدة البيانات المستهلِكة تقيّد بها أحد الأعمدة. أما التسميات المترجمة فمكانها جدول بحث خاص بك، مفهرس على الرمز.

التنسيق والنمط لا ينطبقان

التاريخ أو UUID أو رمز يُتحقَّق منه بتعبير نمطي له صورة واحدة مقروءة آليًا، لا صورة لكل لغة. ولذلك يُرفض حفظ خاصية تجمع الأمرين.

خيار الحفاظ يتقدّم على تعدّد اللغات

القيمة المحفوظة هي بياناتك تُعاد كما هي دون مساس، فليس فيها ما يُترجم.

قد تكون المفاتيح متعددة اللغات

هذه الحالة مسموح بها. تُحسم الهوية بلغة واحدة — تُثبَّت للمخطط عند أول نشر له في قاعدة بيانات — فيمكن ترجمة الاسم دون أن تتزحزح هويته.

عندما تكون اللغة بيانات لا ترجمة

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

تمييز آخر يجدر ضبطه: اللغات التي تُثري إليها خيار يُحدَّد لكل تشغيل؛ واللغة التي تُكتب بها نصوص المخطط نفسه (أوصافه وتسمياته) مثبَّتة على المخطط؛ واللغة التي تُحسم بها الهوية مثبَّتة لكل قاعدة بيانات. ثلاثة إعدادات منفصلة يبدو كلٌّ منها وكأنه “اللغة”.

تكامل مسار الإثراء

دعم تعدد اللغات منسوج في كل مرحلة من مراحل مسار الإثراء.

المخطط
multilingual: true
على الحقول المحددة
مُنشئ المُوجّهات
يحقن تعليمات اللغة
+ أمثلة
نموذج ديناميكي
str → dict[str, str]
التحقق عبر Pydantic
تخزين JSONB
كائنات مفهرسة حسب اللغة
في المخرجات
الخبرة المتعددة: عند استخدام استراتيجية الخبرة المتعددة، يتلقى كل مجال خبرة التعليمات متعددة اللغات في موجّهه الخاص. تُترجم الحقول بشكل مستقل لكل مجال خبرة، ثم تُدمج في المخرجات النهائية.

الحقول متعددة اللغات في الدمج

عند دمج النتائج من نماذج متعددة، تُقارَن الحقول متعددة اللغات لكل لغة على حدة.

السيناريوالحل
تتفق النماذج على الإنجليزية لكنها تختلف على الفرنسيةليس اختلافًا. تُقيَّم الهوية باللغة الأساسية للتشغيل، لذا يُعدّ هذا اتفاقًا: تمرّ الإنجليزية كما هي، وتُحسم الفرنسية بقاعدة الدمج لكل لغة. ولا يُرسل تباين الترجمة إلى محكِّم قط — فدفع تكلفة نموذج ليختار بين ترجمتين صحيحتين إنفاق بلا طائل
أحد النماذج يدعم العربية والآخر لاتفضيل القيمة غير الفارغة (يُحتفظ بالعربية)
تختلف المصفوفات متعددة اللغات في الطول حسب النموذجاتحاد جميع العناصر لكل لغة