نحن جميعًا على دراية برؤية عمليات البحث ذات الصلة والمقالات الإخبارية ذات الصلة والوظائف ذات الصلة والمنتجات ذات الصلة وغيرها من الميزات المماثلة على مواقع الويب المختلفة التي نتصفحها في حياتنا اليومية ، وليس من غير المعتاد أن يطلبها العملاء. كيف تعمل ميزات “النصوص ذات الصلة”؟
تحتوي جميع المقالات الإخبارية وأوصاف الوظائف وأوصاف المنتج واستعلامات البحث على نصوص كثيرة. ومن ثم ، فإن المحتوى النصي وأوجه التشابه أو الصلة بين النصوص المختلفة أمر مهم يجب مراعاته عند تطوير أنظمة التوصية للبيانات النصية.
الطريقة الشائعة لبناء أنظمة التوصية هي طريقة تسمى التصفية التعاونية. يعرض توصيات للمستخدمين استنادًا إلى سجلهم السابق وما يفضله المستخدمون الذين لديهم ملفات شخصية مماثلة في الماضي. على سبيل المثال ، تستخدم توصيات Netflix هذا النوع من النهج على نطاق واسع.
في المقابل ، هناك أنظمة توصية قائمة على المحتوى. مثال على إحدى هذه التوصيات هو ميزة “المقالات ذات الصلة” على مواقع الصحف. انظر إلى مثال من CBC ، موقع إخباري كندي .
أسفل نص المقالة ، نرى مجموعة من القصص ذات الصلة التي تشبه من حيث الموضوع المقالة المصدر. كيف نبني مثل هذه الميزة على أساس تشابه المحتوى بين النصوص؟ تتمثل إحدى طرق بناء نظام التوصية المستند إلى المحتوى في استخدام نمذجة الموضوع. يمكن عرض النصوص المشابهة للنص الحالي من حيث توزيع الموضوعات كنصوص “مرتبطة”. ومع ذلك ، فقد أدى ظهور تمثيلات النص العصبي إلى تغيير الطرق التي يمكننا بها عرض مثل هذه التوصيات. دعونا نلقي نظرة على كيفية استخدام تمثيل النص العصبي لعرض توصيات النص ذات الصلة.
إنشاء نظام توصيات الكتب: مثال
لقد رأينا بعض الأمثلة للتمثيلات النصية القائمة على الشبكة العصبية وكيف يمكن أن يكون بعضها مفيدًا لتصنيف النص . أحد العروض التي رأيناها كانت Doc2vec. يوضح مقتطف الكود التالي كيفية استخدام Doc2vec لتقديم توصيات الكتب ذات الصلة باستخدام مجموعة بيانات ملخص كتاب CMU لنمذجة الموضوع ومكتبات Python NLTK (للتعميل) و Gensim (لتنفيذ Doc2vec):
from nltk.tokenize import word_tokenize from gensim.models.doc2vec import Doc2Vec, TaggedDocument data_path = "booksummaries.txt" mydata = {} for line in open(data_path, encoding="utf-8"): temp = line.split("\t") mydata[temp[2]] = temp[6] train_doc2vec = [TaggedDocument((word_tokenize(mydata[t])), tags=[t]) for t in mydata.keys()] model = Doc2Vec(vector_size=50, alpha=0.025, min_count=10, dm =1, epochs=100) model.build_vocab(train_doc2vec) model.train(train_doc2vec, total_examples=model.corpus_count, epochs=model.epochs) model.save("d2v.model") #إستخدام النموذج للبحث عن نصوص متشابه model= Doc2Vec.load("d2v.model") #هذا الجملة من #https://en.wikipedia.org/wiki/Animal_Farm sample = """ Napoleon enacts changes to the governance structure of the farm, replacing meetings with a committee of pigs who will run the farm. """ new_vector = model.infer_vector(word_tokenize(sample)) sims = model.docvecs.most_similar([new_vector]) #gives 10 most similar titles print(sims)
لاحظ أننا قمنا فقط بتعميل (tokenized ) النص في هذا المثال ولم نقم بأي معالجة مسبقة أخرى ، ولم نقم بأي ضبط للنموذج. هذا مجرد مثال على كيفية التعامل مع تطوير نظام التوصيات ، وليس التحليل التفصيلي.
تستخدم الأساليب الأحدث لتطبيق مثل هذه الأنظمة نموذج BERT أو نماذج أخرى لحساب تشابه المستندات. كما ذكرنا بإيجاز خيارات البحث القائمة على تشابه النص في Elasticsearch في مقال السابق.
الآن بعد أن أصبح لدينا فكرة عن كيفية إنشاء نظام توصية للحصول على بيانات نصية ، دعنا نلقي نظرة على بعض النصائح العملية لبناء أنظمة التوصيات هذه بناءً على تجاربنا السابقة.
نصائح عملية
لقد رأينا للتو مثالًا بسيطًا لنظام التوصية النصية. سيعمل هذا النوع من النهج مع بعض حالات الاستخدام ، مثل التوصية بالمقالات الإخبارية ذات الصلة. ومع ذلك ، قد يتعين علينا النظر في جوانب تتجاوز النص في العديد من التطبيقات حيث نحتاج إلى تقديم توصيات أكثر تخصيصًا أو حيث يلزم النظر في الجوانب غير النصية الأخرى للعنصر.
مثال على هذه الحالة هو إدراج توصيات مماثلة في Airbnb ، حيث تجمع بين تمثيلات النص العصبي القائمة على التضمين مع معلومات أخرى ، مثل الموقع والسعر وما إلى ذلك ، لتقديم توصيات مخصصة .
كيف نعرف أن نظام التوصيات لدينا يعمل؟ في مشروع حقيقي ، يمكن قياس تأثير التوصيات من خلال:
- مؤشرات الأداء ، مثل معدلات نقر المستخدم ، والتحويل إلى عملية شراء (إذا كان ذلك مناسبًا) ، ومشاركة العملاء على موقع الويب ، وما إلى ذلك.
- اختبارات A / B حيث مجموعات مختلفة من المستخدمين يتعرضون لتوصيات مختلفة تستخدم لمقارنة مؤشرات الأداء هذه.
- الطريقة الثالثة (وربما تستغرق وقتًا أطول) هي إجراء دراسات مستخدم مصممة بعناية حيث يتم عرض توصيات محددة على المشاركين ويطلب منهم تقييمها.
- أخيرًا ، إذا كان لدينا مجموعة اختبار صغيرة مع توصيات مناسبة لعنصر معين ، فيمكننا تقييم نظام التوصية من خلال مقارنته بمجموعة الاختبار هذه.
في الغالب ، يتم استخدام مزيج من هذه المؤشرات ، جنبًا إلى جنب مع منصة تحليلات مثل Google Analytics ، في تقييم أنظمة التوصية على مستوى الصناعة.
أخيرًا وليس آخرًا ، تلعب قرارات المعالجة المسبقة لدينا دورًا مهمًا في التوصيات التي يقدمها نظامنا. لذا ، نحتاج إلى معرفة ما نريده قبل المضي قدمًا في النهج. في المثال أعلاه ، قمنا للتو بعمل تعميل عادي. في العالم الحقيقي ، ليس من غير المألوف رؤية الأحرف الصغيرة وإزالة الأحرف الخاصة وما إلى ذلك ، كأجزاء من خط إنتاج المعالجة المسبقة.
إضافة تعليق