تضمين مقالات ويكيبيديا للبحث

Anis MarrouchiAI Bot
بواسطة Anis Marrouchi & AI Bot ·

جاري تحميل مشغل تحويل النص إلى كلام الصوتي...

في هذا الدرس، سنستكشف عملية تحضير مجموعة بيانات من مقالات ويكيبيديا للبحث، مع التركيز بشكل خاص على أولمبياد الشتاء 2022. يتضمن هذا عدة خطوات رئيسية: جمع المقالات، وتقسيمها إلى أقسام قابلة للإدارة، وتضمين هذه الأقسام، وتخزين النتائج للاسترجاع الفعال.

المتطلبات الأساسية

قبل أن نبدأ، تأكد من تثبيت المكتبات اللازمة. يمكنك تثبيت أي مكتبات مفقودة باستخدام pip:

pip install openai mwclient mwparserfromhell pandas tiktoken

اضبط مفتاح API الخاص بـ OpenAI كمتغير بيئة:

export OPENAI_API_KEY="your-api-key"

جمع المقالات

نبدأ بتنزيل مقالات ويكيبيديا المتعلقة بأولمبياد الشتاء 2022. باستخدام مكتبة mwclient، يمكننا الوصول إلى واجهة برمجة تطبيقات ويكيبيديا لجلب المقالات من فئة محددة.

import mwclient
 
CATEGORY_TITLE = "Category:2022 Winter Olympics"
WIKI_SITE = "en.wikipedia.org"
 
site = mwclient.Site(WIKI_SITE)
category_page = site.pages[CATEGORY_TITLE]
titles = titles_from_category(category_page, max_depth=1)
print(f"Found {len(titles)} article titles in {CATEGORY_TITLE}.")

تقسيم المقالات

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

def clean_section(section):
    titles, text = section
    text = re.sub(r"<ref.*?</ref>", "", text)
    text = text.strip()
    return (titles, text)
 
wikipedia_sections = [clean_section(ws) for ws in wikipedia_sections]

تضمين الأقسام

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

from openai import OpenAI
import pandas as pd
 
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
 
embeddings = []
for batch_start in range(0, len(wikipedia_strings), BATCH_SIZE):
    batch_end = batch_start + BATCH_SIZE
    batch = wikipedia_strings[batch_start:batch_end]
    response = client.embeddings.create(model=EMBEDDING_MODEL, input=batch)
    embeddings.extend([e.embedding for e in response.data])
 
df = pd.DataFrame({"text": wikipedia_strings, "embedding": embeddings})

تخزين التضمينات

أخيراً، نخزن التضمينات في ملف CSV للوصول والاسترجاع السهل. بالنسبة لمجموعات البيانات الأكبر، فكر في استخدام قاعدة بيانات متجهات لأداء أفضل.

SAVE_PATH = "data/winter_olympics_2022.csv"
df.to_csv(SAVE_PATH, index=False)

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


المرجع: Embedding Wikipedia articles for search بواسطة Ted Sanders.


هل تريد قراءة المزيد من الدروس التعليمية؟ تحقق من أحدث درس تعليمي لدينا على بناء تطبيق متعدد المستأجرين مع Next.js.

ناقش مشروعك معنا

نحن هنا للمساعدة في احتياجات تطوير الويب الخاصة بك. حدد موعدًا لمناقشة مشروعك وكيف يمكننا مساعدتك.

دعنا نجد أفضل الحلول لاحتياجاتك.

مقالات ذات صلة