السلام عليكم،،
احتاج تطوير كود برمجي مكتوب بـ SQL أوC# لحساب قانون Cosine similarity for Vector Space Model ( الصورة مرفقة)
هذا القانون يستخدم دائماً في محركات البحث لإظهار النتائج الأكثر صلة لإستعلام المستخدم فكرته باختصار هو حساب الإستعلام المدخل من قبل المستخدم مع كل Documents موجودة في نظام البحث ومن ثم يرتب الـ Documents على أكثر صلة لكلمة البحث. مثال على ذلك على برنامجي ( محرك بحث على القرآن الكريم ) :
مستخدم أدخل كلمة ( الرحمن ) ، الآن محرك البحث يأخذ هذه الكلمة ومن ثم يبدأ البحث من أول آية إلى آخر آية لكي يحدد الآية التي تعتبر أكثر صلة لكلمة الرحمن وذلك عن طريق قانون Cosine similarity.
حالياً هذا الكود متواجد لدي ويعمل والنتائج سليمة لكنه يعمل على كلمة بحث واحدة فقط أي مثلاً ( الرحمن) وهو كالتالي:
(SELECT (Value -for document tf-idf-* -for query tf-idf-((1+(Log(1,2))) * (dbo.Get_IDF2(Vocabulary_ID))))
/
(SQRT (dbo.PowerDoc(Document_ID)) * SQRT (POWER(((1+(Log(1,2))) * (dbo.Get_IDF2(Vocabulary_ID))),2))) FROM [dbo].[TF_IDF] -For Document- WHERE Document_ID=@p_DocID AND Vocabulary_ID=@p_VocID)
لذا آمل تطويره ليستقبل استعلام المستخدم ويكون (Dynamic) أي على أكثر من كلمة مثلاً ( رب السموات ) أو ( بسم الله الرحمن الرحيم ) وهلم جرا وبالتالي لابد عمل مايسمى Split للكلمات ومن وضعها مرة أخرى في القانون لتطبيقه.
مثال للتوضيح لشرح كود (WHERE Document_ID=@p_DocID AND Vocabulary_ID=@p_VocID):
مثل هذا الكود المستخدم عن كلمة استعلام واحدة:
SELECT [dbo].[GetValue](13440 for a query,650 for a document)
RETURN (SELECT (Value -for document tf-idf-* -for query tf-idf-((1+(Log(1,2))) * (dbo.Get_IDF2(Vocabulary_ID))))
/
(SQRT (dbo.PowerDoc(Document_ID)) * SQRT (POWER(((1+(Log(1,2))) * (dbo.Get_IDF2(Vocabulary_ID))),2))) FROM [dbo].[TF_IDF] -For Document- WHERE Document_ID=@p_DocID AND Vocabulary_ID=@p_VocID)
مستخدم بحث عن ( ملك) - فالآية التي تحتوي مثلاً (ملك الناس) فسيضرب كلمة (ملك) الموجودة في الإستعلام بشبيهتها فقط في الآية وهي كلمة (ملك) و (الناس) سيكون صفر لأنه لازجود لها في الإستعلام
في الكود البرمجي المطور أن لو مستخدم بحث عن ( ملك الناس ) -- فقط مثال -- فالآية التي تحتوي مثلاً (ملك الناس) فسيضرب كلمة (ملك) الموجودة في الإستعلام بشبيهتها فقط في الآية وهي كلمة (ملك) و (الناس) في كلمة (الناس) . لكن فرضاً بحث عن ( ملك الناس ) في آية ( إله الناس ) هنا كلمة (ملك) في الإستعلام شبيهتها غير موجودة وبالتالي الناتج سيكون صفر بينما كلمة (الناس) تضرب شبيهتها وهي كلمة ( الناس ) . أخير لو بحث عن ( ملك الناس ) فالآية التي تحتوي مثلاً (الرحمن) سيكون صفر، لأن لا تشابه في الكلمات. فإذا لابد من ضرب كلمة الإستعلام بنفسها الموجودة في الآية نفسها.
ملحوظة هامة:
- اظهار النتائج لابد أن تكون سريعة قدر الإمكان
| تاريخ التسجيل | |
| معدل التوظيف | |
| المشاريع المفتوحة | 0 |
| مشاريع قيد التنفيذ | 0 |
| التواصلات الجارية | 0 |
السلام عليكم أخي الفاضل يجب اولا تحديد هل يمكن الاستعانة بمكتبة خارجية لايوجد مشكلة للتطبيق هذا سواء ب #C او SQL او إستخدام مكتبة خارجية وفي حالة إستخدام السماح...
السلام عليكم بعد قرات العرض جيدا استطيع تنفيذ المطلوب بشكل ممتاز لدي خبرة سنتين في البرمجيات يمكنك التواصل معي لبدء المشروع
انت تريد NLP وليس له علاقه بمحركات البحث تقريبا لاتضيع وقتك هنا وابحث عن مستقلين اجانب انا فهمت ماذا تقصد