تلخيص النص

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

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

  • التلخيص الاستخراجي مقابل التلخيص التجريدي (Extractive versus abstractive summarization)

يشير التلخيص الاستخراجي إلى اختيار جمل مهمة من جزء من النص وعرضها معًا كملخص. يشير التلخيص التجريدي إلى مهمة إنشاء ملخص للنص ؛ على سبيل المثال ، بدلاً من انتقاء الجمل من داخل النص ، يتم إنشاء ملخص جديد.

  • التلخيص الذي يركز على الاستعلام مقابل التلخيص المستقل عن الاستعلام (Query-focused versus query-independent summarization)

يشير التلخيص الذي يركز على الاستعلام إلى إنشاء ملخص النص بناءً على استعلام المستخدم ، بينما يؤدي التلخيص المستقل عن الاستعلام إلى إنشاء ملخص عام.

  • مستند واحدة مقابل تلخيص متعدد الوثائق

كما تشير الأسماء ، فإن تلخيص المستند الفردي هو مهمة إنشاء ملخص من مستند واحد ، بينما ينشئ التلخيص متعدد المستندات ملخصًا من مجموعة من المستندات.

حالات استخدام التلخيص

إن حالات الاستخدام الأكثر شيوعًا لتلخيص النص هي تلخيص مستند واحد ، تلخيص مستقل عن الإستعلام ، و تلخيص إستخراجي.

 يُستخدم هذا عادةً لإنشاء ملخصات قصيرة للمستندات الأطول للقراء البشريين أو للآلة (على سبيل المثال ، في محرك بحث لفهرسة الملخصات بدلاً من النصوص الكاملة). من الأمثلة المعروفة لمثل هذا الملخّص قيد التنفيذ في منتج حقيقي هو برنامج autotldr bot على Reddit . يلخص بوت autotldr منشورات Reddit الطويلة من خلال تحديد وترتيب أهم الجمل في المنشور.

إنشاء مُلخِّص: مثال

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

ومع ذلك ، فإن خوارزميات التلخيص الاستخراجي الشائعة المستخدمة في سيناريوهات العالم الحقيقي تستخدم نهج تصنيف الجملة القائم على الرسم (graph-based sentence-ranking ). يتم إعطاء كل جملة في المستند درجة بناءً على علاقتها بالجمل الأخرى في النص ، ويتم تسجيل ذلك بشكل مختلف في خوارزميات مختلفة. ثم يتم إرجاع أهم الجمل N كملخص.

إستخدام سومي

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

# إستدعاء المكتبات
import nltk
nltk.download('punkt')
from sumy.parsers.html import HtmlParser
from sumy.nlp.tokenizers import Tokenizer
from sumy.summarizers.text_rank import TextRankSummarizer
from sumy.summarizers.lex_rank import LexRankSummarizer
from sumy.summarizers.luhn import LuhnSummarizer
from sumy.summarizers.lsa import LsaSummarizer

num_sentences_in_summary = 2
url = "https://en.wikipedia.org/wiki/Ecological_niche"
parser = HtmlParser.from_url(url, Tokenizer("english"))

summarizer_list=("TextRankSummarizer:","LexRankSummarizer:","LuhnSummarizer:","LsaSummarizer") #list of summarizers
summarizers = [TextRankSummarizer(), LexRankSummarizer(), LuhnSummarizer(), LsaSummarizer()]

for i,summarizer in enumerate(summarizers):
    print(summarizer_list[i])
    for sentence in summarizer(parser.document, num_sentences_in_summary):
        print((sentence))
    print("-"*30)

تهتم هذه المكتبة بتحليل HTML والترميز لعنوان URL المحدد ، ثم تستخدم TextRank لاختيار أهم الجمل كملخص للنص. يؤدي تشغيل هذا الكود إلى إظهار أهم خمس جمل في صفحة ويكيبيديا عند التلخيص التلقائي.

إستخدام جينسم

سومي ليست المكتبة الوحيدة التي تحتوي على مثل هذه التطبيقات لخوارزميات التلخيص. مكتبة أخرى مشهورة هي Gensim ، والتي تنفذ نسخة مرتجلة من TextRank يوضح مقتطف الشفرة التالي كيفية استخدام مُلخِّص gensim لتلخيص نص معين:

from gensim.summarization import summarize,summarize_corpus
from gensim.summarization.textcleaner import split_sentences
from gensim import corpora

text = open("nlphistory.txt").read()

# التلخيص بإستخراج الجمل الأكثر صلة في النص
print("Summarize:\n",summarize(text, word_count=200, ratio = 0.1))


#the summarize_corpus selects the most important documents in a corpus:

# بإختيار أهم مستند في البيانات summarize_corpus تقوم 
# إنشاء محموعة بيانات بحيث كل جملة هي مستند
sentences = split_sentences(text)
tokens = [sentence.split() for sentence in sentences]
dictionary = corpora.Dictionary(tokens)
corpus = [dictionary.doc2bow(sentence_tokens) for sentence_tokens in tokens]

# إستخراج المستندات الأكثر أهمية
print("-"*30,"\nSummarize Corpus\n",summarize_corpus(corpus,ratio=0.1))

لاحظ أنه ، على عكس sumy ، لا يأتي gensim مع محلل HTML ، لذلك سيتعين علينا دمج خطوة تحليل HTML إذا أردنا تحليل صفحات الويب. يتيح لنا ملخص Gensim أيضًا تجربة طول الملخصات.

لذلك ، نحن الآن نعرف كيفية تنفيذ الملخص في مشاريعنا. ومع ذلك ، هناك بعض الأشياء التي يجب وضعها في الاعتبار عند استخدام هذه المكتبات لنشر ملخّص عملنا. دعنا نلقي نظرة على بعضها .

نصائح عملية

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

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

في البحث ، يتم تقييم مناهج التلخيص باستخدام مجموعة بيانات مشتركة من الملخصات المرجعية التي أنشأها البشر. الاستدلال الموجه نحو الاسترجاع لتقييم الترجيح (ROUGE) .

هو مجموعة شائعة من المقاييس القائمة على تداخلات n-gram المستخدمة في تقييم أنظمة التلخيص التلقائي. ومع ذلك ، قد تناسب مجموعات البيانات هذه حالة الاستخدام الدقيقة وقد لا تناسبك. ومن ثم ، فإن أفضل طريقة لمقارنة الأساليب المختلفة هي إنشاء مجموعة التقييم الخاصة بك أو مطالبة المعلقين البشرين (human annotators ) بتقييم الملخصات التي تنتجها الخوارزميات المختلفة من حيث الاتساق ودقة الملخص ، إلخ.

هناك بعض المشكلات العملية التي يجب وضعها في الاعتبار عند نشر الملخص:

  • تلعب خطوات المعالجة المسبقة مثل تقسيم الجملة (أو تحليل HTML في المثال أعلاه) دورًا مهمًا للغاية في ما يظهر في ملخص الإخراج. تحتوي معظم المكتبات على مقسمات جمل مضمنة ، ولكن حتى تلك يمكن أن تقوم بتقسيم جملة خاطئ لبيانات إدخال مختلفة .
  • معظم خوارزميات التلخيص حساسة لحجم النص المعطى كمدخل. على سبيل المثال ، يعمل نظام TextRank في وقت متعدد الحدود ، لذلك يمكن بسهولة أن يستغرق الكثير من وقت الحوسبة لإنشاء ملخصات لأجزاء أكبر من النص. يجب أن تكون على دراية بهذا القيد عند استخدام مُلخِّص بنصوص كبيرة جدًا. يمكن أن يكون الحل البديل هو تشغيل الملخص على أقسام من النص الكبير وترتيب الملخصات معًا. يمكن أن يكون البديل الآخر هو تشغيل الملخص على أعلى M٪ وأسفل N٪ من النص بدلاً من النص بأكمله (على افتراض أن هذه الأجزاء تحتوي على جوهر مستند طويل).

ختاماً

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

إضافة تعليق