سؤال

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

النهج الأول الذي يتبادر إلى ذهني هو تقسيم الجملة إلى كلمات والبحث عن العبارات التي تحتوي على هذه الكلمات.قبل أن تفعل ذلك ، ربما كنت ترغب في رمي تافهة الكلمات (مثل'', 'a', 'لا' الخ), ثم سوف تحتاج إلى ترتيب النتائج.

انتظر - دعونا نفعل ذلك على صفحات الويب ، ومن ثم يمكن أن يكون ...watchamacallit ...- "محرك بحث" ثم يمكننا بيع الإعلانات ، ثم ...

لا, جديا, ما هي الطرق الشائعة لحل هذه المشكلة ؟

هل كانت مفيدة؟

المحلول

نهج واحد هو ما يسمى كيس من كلمات نموذج.

كما خمنت, أول كنت تعول كم مرة تظهر الكلمات في النص (عادة ما تسمى وثيقة في البرمجة اللغوية العصبية-لغة).ثم يرمي بها ما يسمى تتوقف الكلمات ، مثل "" ، "" ، "أو" وهلم جرا.

كنت تركت مع الكلمات كلمة التهم.القيام بذلك لفترة من الوقت يمكنك الحصول على مجموعة شاملة من الكلمات التي تظهر في المستندات الخاصة بك.ثم يمكنك إنشاء فهرس على هذه الكلمات:"خنزير الأرض" 1 "أبل" 2, ..., "z-index" هو 70092.

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

[2 0 0 ... 70k zeroes ... 0].

بعد هذا يمكنك الاعتماد على "زاوية" بين اثنين من ناقلات مع نقطة المنتج.أصغر زاوية أقرب الوثائق.

هذا هو نسخة بسيطة و هناك أخرى أكثر التقنيات المتقدمة.قد ويكيبيديا يكون معك.

نصائح أخرى

@هانو عليك أن تحاول Levenshtein المسافة الخوارزمية.نظرا سلسلة الإدخال s وقائمة من السلاسل t تكرار كل سلسلة u في t والعودة واحد مع الحد الأدنى Levenshtein المسافة.

http://en.wikipedia.org/wiki/Levenshtein_distance

انظر جافا تنفيذ سبيل المثال في http://www.javalobby.org/java/forums/t15908.html

لزيادة كيس من كلمات فكرة:

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

مفتاح الفكرة من معالجة اللغة الطبيعية هنا هي أن من المعلومات المتبادلة, الذي يسمح لك (حسابيا) للحكم على ما إذا كان أو لم يكن العبارة هو في الحقيقة عبارة محددة (مثل "الفضاء التعقيد") أو مجرد الكلمات التي هي من قبيل الصدفة المجاورة.رياضيا, والفكرة الرئيسية هي أن نسأل ، probabilistically ، إذا كانت هذه الكلمات تظهر بجانب بعضها البعض في كثير من الأحيان مما كنت أعتقد قبل ترددات وحده.إذا كنت ترى العبارة مع ارتفاع المعلومات المتبادلة النتيجة في استعلام البحث الخاص بك (أو أثناء الفهرسة), يمكنك الحصول على نتائج أفضل من خلال محاولة الحفاظ على هذه الكلمات في تسلسل.

من (صغيرة نوعا ما) تجربة وضع نص كامل محركات البحث:وأود أن ننظر في الأسئلة التي تحتوي على بعض الكلمات من الاستعلام (في حالة الاستعلام الخاص بك هو السؤال).بالتأكيد, كلمات الضجيج ينبغي تجاهلها ونحن قد ترغب في التحقق الاستعلام عن 'قوية' كلمات مثل 'ASP.Net' لتضييق نطاق البحث.http://en.wikipedia.org/wiki/Index_(search_engine)#Inverted_indices'>مقلوب المؤشرات شيوعا للعثور على الأسئلة مع الكلمات ونحن مهتمون في.

بعد العثور على الأسئلة مع الكلمات من الاستعلام ، ونحن قد ترغب في حساب المسافة بين الكلمات ونحن مهتمون في الأسئلة ، لذلك السؤال مع عبارات التشابه' نص صفوف أعلى من السؤال مع مناقشة التشابه ، تسمع العبارات التالية...' النص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top