"ExtracText: استخراج البيانات من السير الذاتية بواسطة الذكاء الاصطناعي"
"ExtracText هو نظام يعتمد على تقنيات
الذكاء الاصطناعي لاستخراج المعلومات الهامة من السير الذاتية بشكل آلي. باستخدام
تقنيات تعلم الآلة وتحليل النصوص، يقوم ExtracText بتحديد الأسماء وعناوين
البريد الإلكتروني وأرقام الهواتف من السير الذاتية المُرفقة، مما يسهل على
المستخدمين معالجة البيانات بشكل أكثر فعالية."
تم تنفيذ هذا الكود باستخدام بيئة تطويرية مجانية تسمى جوجل (colab) والتي توفر
القدرة على تشغيل النماذج والتعلم الآلي في السحابة بدون الحاجة إلى موارد كمبيوتر
محلية قوية. يستفيد المشروع من مكتبة Hugging Face،
وهي منصة شهيرة توفر مجموعة واسعة من النماذج المدربة مسبقًا في مختلف المجالات،
مما يسهل عملية تطوير وتنفيذ نماذج الذكاء الاصطناعي بسرعة وكفاءة.
الخطوات :
# تثبيت المكتبات المطلوبة
!pip install gradio
!pip install transformers
تثبيت مكتبات gradio و transformers،
وهما ضروريتان لبناء الواجهة واستخدام النماذج المدربة مسبقاً من مكتبة transformers
الخاصة بـ Hugging Face.
import gradio as gr
from transformers import pipeline
استيراد دالة pipeline من
مكتبة transformers، والتي تُستخدم لتحميل النماذج المدربة مسبقاً
ner = pipeline("ner", grouped_entities=True)
استخدام دالة pipeline
لتحميل نموذج مُدرَّب مسبقاً للتعرف على الكيانات المسماة (ا(NER لمعامل "ner" يُحدد أننا
نريد استخدام نمط NER، والمعامل grouped_entities=True يجمع الكيانات المتشابهة
معاً (مثلاً، إذا كان الاسم يمتد عبر عدة كلمات، يتم جمعها ككيان واحد).
Import re
استيراد وحدة re التي توفر الدعم للتعبيرات النمطية في بايثون.
pattern = re.compile(r'\(?\b[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}\b')
تعريف أنماط التعبيرات النمطية للتعرف على
عناوين البريد الإلكتروني وأرقام الهواتف داخل النص.
email_pattern يبحث عن هياكل عناوين
البريد الإلكتروني النموذجية.
phone_pattern يبحث عن أرقام الهواتف
بأشكال مثل (555) 123-4567، 555-123-4567، و 555 123 4567.
def extract_info(text):
results = ner(text)
extracted_info = {"name": [], "email": [], "phone": []}
# استخراج الأسماء باستخدام NER
for entity in results:
if entity['entity_group'] == 'PER':
extracted_info['name'].append(entity['word'])
# استخراج البريد الإلكتروني باستخدام التعبير النمطي
emails = email_pattern.findall(text)
extracted_info['email'] = emails
# استخراج أرقام الهواتف باستخدام التعبير النمطي
phones = phone_pattern.findall(text)
extracted_info['phone'] = phones
return extracted_info
تعريف دالة extract_info التي تأخذ نصاً كمدخل
وتستخرج الأسماء، وعناوين البريد الإلكتروني، وأرقام الهواتف.
results =
ner(text) تطبيق نموذج NER على النص المدخل، والذي
يعيد قائمة من الكيانات.
extracted_info
= {"name": [], "email": [], "phone": []}تهيئة قاموس لتخزين الأسماء، والبريد الإلكتروني، وأرقام الهواتف
المستخرجة.
الحلقة for تمر عبر الكيانات التي
أعادها نموذج NER:
إذا كانت مجموعة
الكيان 'PER' (تشير إلى شخص)، يتم إضافة كلمة الكيان إلى قائمة name.
emails =
email_pattern.findall(text) استخدام النمط
النمطي للعثور على جميع عناوين البريد الإلكتروني في النص وتخزينها في قائمة email.
phones =
phone_pattern.findall(text) استخدام النمط
النمطي للعثور على جميع أرقام الهواتف في النص وتخزينها في قائمة phone.
return extracted_info إعادة القاموس الذي يحتوي على المعلومات المستخرجة.
iface = gr.Interface(fn=extract_info, inputs="text", outputs="json")
iface.launch()
إنشاء واجهة Gradio باستخدام دالة extract_info.
fn=extract_info
يحدد الدالة التي يتم استدعاؤها عندما يقوم المستخدم بإدخال نص.
inputs="text"
يحدد أن المدخل للدالة هو نص.
outputs="json"
يحدد أن مخرج الدالة سيكون بصيغة JSON.
مما يجعلها متاحة للمستخدم iface.launch()تشغيل واجهة Gradio