جعل البيانات العالمية أسهل في الاستكشاف باستخدام الذكاء الاصطناعي و UN Data Commons
اكتشف كيف تجعل أدوات الذكاء الاصطناعي البيانات العالمية أسهل في الاستكشاف. يستعرض هذا المقال منصة UN Data Commons، التي تهدف إلى تبسيط الوصول إلى مجموعات البيانات الدولية. تعرّف على كيف يمكن للغة الطبيعية والبحث الذكي أن يخفضا الحواجز أمام الباحثين والصحفيين وصنّاع السياسات، مع الإشارة إلى المواضع التي لا يزال فيها التحقق وقيود البيانات مهمّين.
ملخص سريع
اكتشف كيف تجعل أدوات الذكاء الاصطناعي البيانات العالمية أسهل في الاستكشاف. يستعرض هذا المقال منصة UN Data Commons، التي تهدف إلى تبسيط الوصول إلى مجموعات البيانات الدولية. تعرّف على كيف يمكن للغة الطبيعية والبحث الذكي أن يخفضا الحواجز أمام الباحثين والصحفيين وصنّاع السياسات، مع الإشارة إلى المواضع التي لا يزال فيها التحقق وقيود البيانات مهمّين.
جعل البيانات العالمية أسهل في الاستكشاف باستخدام الذكاء الاصطناعي وبيانات الأمم المتحدة المشتركة
للإحصاءات العالمية خاصية غريبة: فهي وفيرة وصعبة الاستخدام في آنٍ واحد. الأرقام موجودة — السكان، والانبعاثات، والتجارة، والصحة، والتعليم — لكنها تعيش في مئات البوابات المنفصلة، لكل منها صيغ ملفاتها الخاصة، وأعرافها الخاصة في تسمية البلدان، ومفهومها الخاص لما تعنيه "السنة". الفجوة بين توفر البيانات وقابلية استخدام البيانات هي حيث تفقد معظم مشاريع التحليل أسابيع بصمت.
تصف تدوينة من Google العمل مع منصة بيانات الأمم المتحدة المشتركة الهدف مباشرة: جعل البيانات العالمية أسهل في الاستكشاف. هذا هو موضوع هذه المقالة. أدناه، أفصل ما يذكره المصدر عما هو تفسير، ثم أركز على الجزء القابل للتنفيذ فعلاً اليوم — الأدوات العملية التي يمكنك إعدادها لاستكشاف البيانات الدولية غير المتجانسة بمساعدة الذكاء الاصطناعي.
ما يذكره المصدر، وما لا يذكره
المصدر الأساسي الموثق هو تدوينة مدونة Google AI بعنوان Making global data easier to explore، المنشورة على https://blog.google/innovation-and-ai/technology/ai/google-un-data-commons-platform. البيان الأساسي الموثق هو هدف، وليس قائمة ميزات: الجهد يتعلق بجعل البيانات العالمية أسهل في الاستكشاف، في سياق عمل بيانات الأمم المتحدة.
هذا ادعاء ضيق عن قصد، ويستحق الاحترام. فالتدوينة لا تحدد، بناءً على الأدلة المتاحة هنا، لغات الاستعلام، أو أسماء مجموعات التطوير، أو نقاط النهاية، أو إصدارات النماذج، أو التسعير، أو نتائج المعايير. لذلك لن تختلق هذه المقالة شيئًا من ذلك. كل ما في الأقسام أدناه حول كيفية العمل مع البيانات العالمية هو ممارسة هندسية عامة للعمل على البيانات المفتوحة، وليس وصفًا لواجهة برمجة تطبيقات منصة محددة.
التفسير، موسوم بوضوح: عندما تقرن مؤسسة بيانات مشتركة مع الذكاء الاصطناعي، فإن القيمة المحتملة ليست أن "الذكاء الاصطناعي يعرف الإجابة". بل أن الذكاء الاصطناعي يمكنه تقليل الاحتكاك بين سؤال بشري واستعلام قابل للقراءة آليًا — مطابقة اسم بلد برمز، وتخمين معنى أي عمود، وصياغة SQL مقابل مخطط غير مألوف.
لماذا تقاوم البيانات العالمية الاستكشاف
تظهر ثلاث عقبات في كل مشروع عابر للبلدان تقريبًا.
عدم تطابق الهوية. يظهر البلد نفسه باسم Kenya، وKEN، وKE، وRepublic of Kenya، وكينيا عبر ملفات مختلفة. الربط بالأسماء يفشل بصمت.
انحراف المخطط. مصدر يخزن عمودي year وvalue؛ وآخر يخزن عمودًا لكل سنة. أحدهم يبلغ عن ثاني أكسيد الكربون بالكيلوطن، وآخر بالمليون طن.
مسافة البيانات الوصفية. تعريف المؤشر يعيش في ملف PDF، بينما الأرقام تعيش في CSV. لا شيء يربط بينهما برمجيًا.
الذكاء الاصطناعي لا يذيب هذه المشكلات. إنه يقصّر الحلقة: يمكنك وصف الربط الذي تريده بلغة عادية والحصول على مسودة، ثم تتحقق منها. التحقق لا يزال مسؤوليتك.
المتطلبات
قبل تثبيت أي شيء، تأكد من توفر ما يلي:
- Python 3.10 أو أحدث. الإصدارات الأقدم تكسر تلميحات الأنواع الحديثة والعديد من مكتبات البيانات.
- مدير حزم وطرفية. macOS، أو Linux، أو WSL على Windows.
- حوالي 2 غيغابايت من مساحة القرص لبيئة افتراضية ومجموعة بيانات محلية متواضعة.
- اختياري: مشروع Google Cloud إذا كنت تنوي الاستعلام عن مجموعات بيانات عامة مستضافة في BigQuery.
- اختياري: الوصول إلى أي واجهة برمجة تطبيقات لنموذج لغوي كبير تستخدمها بالفعل، إذا أردت تجربة نمط تحويل اللغة الطبيعية إلى SQL. تتعامل الأمثلة أدناه مع هذا كنقطة نهاية قابلة للتكوين، وليس بائعًا محددًا.
- مجموعة بيانات مفتوحة للتدرب عليها. أي تصدير CSV أو Parquet من مكتب إحصاء وطني أو وكالة دولية يفي بالغرض.
لا تحتاج إلى وحدة معالجة رسومات. هذا سير عمل للاسترجاع والمواءمة والاستعلام، وليس سير عمل للتدريب.
التثبيت خطوة بخطوة
1. تحقق من إصدار Python لديك
شغّل هذا للتأكد من أن المفسّر حديث بما يكفي.
python3 --versionإذا أظهر أي إصدار أقل من 3.10، ثبّت Python أحدث عبر مدير حزم نظامك أو pyenv قبل المتابعة.
2. أنشئ بيئة افتراضية معزولة
إبقاء التبعيات خارج Python النظام يمنع تعارضات الإصدارات لاحقًا.
python3 -m venv ~/.venvs/globaldata
source ~/.venvs/globaldata/bin/activateعلى Windows مع WSL، سطر التفعيل هو source ~/.venvs/globaldata/bin/activate أيضًا؛ في PowerShell سيكون ~/.venvs/globaldata/Scripts/Activate.ps1.
3. حدّث سلسلة أدوات التغليف
غالبًا ما تأتي البيئات الجديدة بـ pip قديم، مما يسبب أخطاء محلل مربكة.
python -m pip install --upgrade pip setuptools wheel4. ثبّت مكتبات البيانات الأساسية
تغطي هذه الاسترجاع عبر HTTP، والتلاعب الجدولي، والاستعلامات التحليلية المحلية، ودفاتر الملاحظات.
pip install pandas requests duckdb pyarrow python-dotenv jupyterlabيمنحك duckdb لغة SQL على ملفات CSV وParquet المحلية دون تشغيل خادم — وهو مفيد عندما تكون "قاعدة البيانات" في الحقيقة مجرد مجلد من التنزيلات.
5. ثبّت مساعد رموز البلدان
هوية البلد هي المصدر الأكثر شيوعًا للربط المعطوب، لذا ثبّت جدول رموز مُصانًا.
pip install pycountry6. اختياري: ثبّت Google Cloud CLI
افعل هذا فقط إذا كنت تخطط للاستعلام عن مجموعات بيانات مستضافة في BigQuery.
brew install --cask google-cloud-sdkعلى Debian أو Ubuntu، استخدم مستودع apt الرسمي بدلاً من brew.
7. اختياري: صادق على Google Cloud
يفتح هذا نافذة متصفح ويخزّن بيانات اعتماد التطبيق الافتراضية محليًا.
gcloud auth application-default login8. اختياري: اختر مشروعًا وفعّل الواجهة البرمجية
حدد المشروع الذي تريد تحميل أي استعلامات تشغّلها عليه.
gcloud config set project YOUR_PROJECT_ID
gcloud services enable bigquery.googleapis.com9. اختياري: ثبّت عميل Python
هذه هي المكتبة التي تتيح للسكربتات استدعاء BigQuery مباشرة.
pip install google-cloud-bigquery db-dtypes10. تحقق من البيئة
شغّل هذا للتأكد من أن الاستيرادات الأساسية تعمل.
python -c "import pandas, duckdb, pycountry, requests; print('environment ready')"التكوين
أبقِ بيانات الاعتماد ونقاط النهاية خارج ملفات المصدر.
1. أنشئ ملف تكوين
يكتب هذا ملف env خاصًا في دليلك الرئيسي. استبدل كل عنصر نائب بقيمك الخاصة.
cat > ~/.globaldata.env <<'EOF'
DATA_API_ENDPOINT=https://your-data-portal.example/api/v1
DATA_API_KEY=replace-with-your-key
MODEL_ENDPOINT=https://your-llm-provider.example/v1
MODEL_API_KEY=replace-with-your-model-key
MODEL_NAME=replace-with-your-model-id
GCP_PROJECT=your-project-id
EOF2. قيّد أذونات الملف
بيانات الاعتماد في ملف قابل للقراءة للجميع خطأ شائع ويمكن تجنبه.
chmod 600 ~/.globaldata.env3. حمّل التكوين في Python
يقرأ هذا المقطع الملف في وقت التشغيل دون ترميز الأسرار بشكل صلب.
import os
from dotenv import load_dotenv
load_dotenv(os.path.expanduser("~/.globaldata.env"))
DATA_API_ENDPOINT = os.environ["DATA_API_ENDPOINT"]
GCP_PROJECT = os.environ.get("GCP_PROJECT")العنصر النائب DATA_API_ENDPOINT متعمد. أي بوابة تستخدمها سيكون لها عنوان URL أساسي موثق خاص بها؛ الأنماط أدناه مستقلة عن أي منها.
أمثلة الاستخدام
مثال 1: توحيد معرفات البلدان
هذا هو أعلى عشرين سطرًا من الكود تأثيرًا في أي تحليل عابر للبلدان.
import pycountry
ALIASES = {
"Republic of Korea": "KOR",
"Korea, Rep.": "KOR",
"Viet Nam": "VNM",
"Russian Federation": "RUS",
"Côte d'Ivoire": "CIV",
}
def to_iso3(name: str) -> str | None:
name = name.strip()
if name in ALIASES:
return ALIASES[name]
try:
return pycountry.countries.lookup(name).alpha_3
except LookupError:
return None
print(to_iso3("Kenya"), to_iso3("Korea, Rep."), to_iso3("Atlantis"))إرجاع الاستدعاء الأخير لـ None هو المقصود: يجب أن تكون القيم غير المعيّنة مرئية، لا محذوفة بصمت. سجّلها ووسّع ALIASES بدلاً من التخمين.
مثال 2: تحميل ملفات غير متجانسة في جدول واحد قابل للاستعلام
يمكن لـ DuckDB قراءة CSV وParquet مباشرة ودمجهما، مما يتجنب خطوة استيراد.
import duckdb
con = duckdb.connect("globaldata.duckdb")
con.execute("""
CREATE OR REPLACE TABLE observations AS
SELECT
indicator_code,
UPPER(country_iso3) AS country_iso3,
CAST(year AS INTEGER) AS year,
CAST(value AS DOUBLE) AS value,
source_file
FROM read_csv_auto('downloads/*.csv', filename = true)
WHERE value IS NOT NULL
""")
print(con.execute("""
SELECT country_iso3, COUNT(*) AS rows
FROM observations
GROUP BY 1 ORDER BY 2 DESC LIMIT 10
""").fetchdf())خيار filename = true يحفظ المصدر، فيمكن تتبع كل صف إلى الملف الذي جاء منه.
مثال 3: صياغة استعلام من سؤال بلغة عادية
يرسل هذا النمط مخططك بالإضافة إلى سؤال إلى نموذج لغوي ويطلب SQL في المقابل. إنه أداة صياغة، وليس عرّافًا.
import os, requests
SYSTEM = """You translate questions into DuckDB SQL over this schema:
observations(indicator_code VARCHAR, country_iso3 VARCHAR, year INTEGER, value DOUBLE)
Rules:
- Return only the SQL statement.
- Use read-only SELECT statements.
- Never emit INSERT, UPDATE, DELETE, DROP, or ATTACH.
"""
def draft_sql(question: str) -> str:
response = requests.post(
f"{os.environ['MODEL_ENDPOINT']}/chat/completions",
headers={"Authorization": f"Bearer {os.environ['MODEL_API_KEY']}"},
json={
"model": os.environ["MODEL_NAME"],
"temperature": 0,
"messages": [
{"role": "system", "content": SYSTEM},
{"role": "user", "content": question},
],
},
timeout=60,
)
response.raise_for_status()
return response.json()["choices"][0]["message"]["content"].strip()
print(draft_sql("Which five countries had the highest value in 2020?"))مثال 4: نفّذ المسودة على اتصال للقراءة فقط
فتح قاعدة البيانات للقراءة فقط هو حاجز وقائي رخيص وفعّال.
import duckdb
con = duckdb.connect("globaldata.duckdb", read_only=True)
sql = draft_sql("Which five countries had the highest value in 2020?")
print(sql)
if sql.upper().lstrip().startswith("SELECT"):
print(con.execute(sql).fetchdf())
else:
print("Refused: statement is not a SELECT.")فحص startswith("SELECT") بدائي ويمكن تجاوزه بسهولة عبر توجيه مصمم. تعامل معه كسلك تفخيخ، وليس كحدود أمنية. في عمليات النشر الحقيقية، قيّد صلاحيات مستخدم قاعدة البيانات على مستوى المحرك.
مثال 5: اربط تعريف المؤشر بأرقامه
البيانات الوصفية هي ما يجعل الرقم قابلًا للتفسير. احتفظ بجدول بحث صغير بجانب البيانات.
con = duckdb.connect("globaldata.duckdb")
con.execute("""
CREATE OR REPLACE TABLE indicators AS
SELECT * FROM (VALUES
('EN.GHG.CO2.MT.CE.AR5', 'Carbon dioxide emissions', 'million tonnes'),
('SP.POP.TOTL', 'Total population', 'people')
) AS t(indicator_code, label, unit)
""")
print(con.execute("""
SELECT i.label, i.unit, o.country_iso3, o.year, o.value
FROM observations o
JOIN indicators i USING (indicator_code)
WHERE o.country_iso3 = 'KEN'
ORDER BY o.year DESC
LIMIT 5
""").fetchdf())الآن يصل الرقم المسترجع مع وحدته مرفقة، مما يمنع فئة كاملة من الأخطاء اللاحقة.
المخاطر والحدود المفتوحة
مسودات الذكاء الاصطناعي ليست اقتباسات. قد يشير بيان SQL المولّد إلى عمود غير موجود أو يفلتر برمز بلد لم يكن في البيانات قط. شغّله دائمًا على شريحة صغيرة أولاً.
النماذج اللغوية لا تعرف مؤشرك. إنها تعرف أن SP.POP.TOTL يبدو كرمز البنك الدولي، لكنها لا تستطيع تأكيد ما تعنيه بوابة معينة به. يجب أن يأتي التعريف من الناشر.
التوفير غير مرئي حتى يتوقف عن ذلك. تصف خطوات التثبيت في هذه المقالة أدوات بيانات مفتوحة للأغراض العامة. أي منصة محددة مبنية حول جهد بيانات الأمم المتحدة المشتركة سيكون لها تسجيلها وشروطها وحدود معدلاتها الخاصة، وهو ما لا يصفه المصدر المتاح. اقرأ تلك الوثائق قبل بناء تبعيات عليها.
المواءمة لا تنتهي أبدًا. تظهر أسماء بلدان جديدة، ومراجعات مؤشرات جديدة، وإصدارات جديدة باستمرار. خصص ميزانية لحلقة صيانة، وليس لتنظيف لمرة واحدة.
التجميع يخفي الخلاف. عندما تبلغ وكالتان عن قيم مختلفة لنفس المؤشر، فإن الربط سينتج كليهما بسرور. قرر صراحةً ما إذا كنت تفضل مصدرًا واحدًا، أو تحسب المتوسط، أو تُظهر الخلاف.
الخلاصة
وعد الذكاء الاصطناعي في العمل على البيانات العالمية أضيق وأكثر فائدة مما يبدو للوهلة الأولى. ليس أن النموذج يعرف الإحصاءات. بل أن النموذج يمكنه الجلوس بين سؤال بشري وطبقة تخزين مجزأة، وصياغة الربط، واقتراح تعيين الرموز، وتقليص الوقت من "أتساءل" إلى "هذا استعلام يمكنني التحقق منه."
إن جهد بيانات الأمم المتحدة المشتركة، كما هو موصوف في المصدر، يستهدف هذا الاحتكاك بالضبط: جعل البيانات العالمية أسهل في الاستكشاف. الاستجابة العملية هي بناء بيئة صغيرة قابلة للتكرار حول أي بيانات لديك بالفعل — بيئة افتراضية، وDuckDB لـ SQL المحلية، وpycountry للهوية، ونقطة نهاية نموذج قابلة للتكوين للصياغة. ثلاث قواعد تحافظ على النزاهة: وحّد المعرفات بدلاً من الأسماء، وأبقِ البيانات الوصفية بجانب الأرقام، ولا تنفذ أبدًا استعلامًا مولّدًا لم تقرأه.
ابدأ بمجموعة بيانات واحدة وسؤال واحد. الأدوات تستغرق بعد ظهر واحد؛ عادة التحقق مما أنتجه النموذج هي ما يجعل النتائج جديرة بالثقة.



