SOLR هو خادم تطبيق مستقل على مستوى المؤسسة يوفر واجهة API تشبه خدمة الويب. يمكن للمستخدمين إرسال ملفات XML بتنسيق معين إلى خادم محرك البحث من خلال طلبات HTTP وإنشاء فهارس ؛ يمكنهم أيضًا تقديم طلبات البحث من خلال HTTP Get Operations والحصول على نتيجة الإرجاع في تنسيق XML/JSON. تم تطويره باستخدام Java5 ، بناءً على Lucene.
Lucene هو مشروع فرعي لفريق مشروع Jakarta 4 لمؤسسة Apache Software Foundation. إنها مجموعة أدوات محرك بحث كامل المصدر ، وهي ليست محرك بحث كامل النص الكامل ، ولكنه بنية محرك بحث كامل النص ، توفر محركًا ومحركًا كاملًا للاستعلام ومحرك تحليل نص جزئي (لغات اللغة الإنجليزية والألمانية الغربية).
من بينها ، تتوافق المبادئ الأساسية للبحث عن النص الكامل في Lucene مع التكنولوجيا في دورة البحث على الويب التي يدرسها Guo Jundaniu. يستخدم تجزئة الكلمات ، تحليل القواعد الدلالية ، نموذج مساحة المتجه وغيرها من التقنيات لتحقيقه. فيما يلي مذكرة منشور مدونة أكثر تفصيلاً: http://www.cnblogs.com/guochunguang/articles/3641008.html
1. مناقشة عامة
التعريف وفقًا لـ http://lucene.apache.org/java/docs/index.html:
Lucene هي مكتبة البحث الكاملة في Java تستند إلى Java.
لذلك قبل أن تفهم لوسين ، عليك أن تأخذ بعض الوقت للتعرف على البحث عن النص الكامل.
إذن ما هو البحث عن النص الكامل؟ هذا يبدأ بالبيانات في حياتنا.
تنقسم البيانات في حياتنا عمومًا إلى نوعين: البيانات المنظمة والبيانات غير المنظمة.
• البيانات المهيكلة: تشير إلى البيانات ذات التنسيق الثابت أو الطول المحدود ، مثل قواعد البيانات ، والبيانات الوصفية ، إلخ.
• البيانات غير المهيكلة: تشير إلى البيانات ذات الطول غير المؤكد أو بدون تنسيق ثابت ، مثل رسائل البريد الإلكتروني ، مستندات الكلمات ، إلخ.
بالطبع ، ستذكر بعض الأماكن أيضًا النوع الثالث ، البيانات شبه المنظمة ، مثل XML ، HTML ، وما إلى ذلك ، عندما يمكن معالجتها وفقًا للبيانات المنظمة ، أو يمكن استخراج النص العادي للمعالجة كبيانات غير منظمة.
تسمى البيانات غير المهيكلة أيضًا بيانات النص الكامل.
وفقًا لتصنيف البيانات ، تنقسم عمليات البحث أيضًا إلى نوعين:
• ابحث عن البيانات المهيكلة: على سبيل المثال ، البحث عن قواعد البيانات ، استخدم عبارات SQL. على سبيل المثال ، البحث عن بيانات التعريف ، مثل استخدام Windows Search للبحث عن أسماء الملفات ، والأنواع ، ووقت التعديل ، إلخ.
• ابحث عن البيانات غير المنظمة: على سبيل المثال ، يمكن للبحث عن Windows أيضًا البحث عن محتوى الملف ، وأمر GREP ضمن Linux ، وعلى سبيل المثال ، يمكن لاستخدام Google و Baidu البحث عن كمية كبيرة من بيانات المحتوى.
هناك طريقتان رئيسيتان للبحث عن بيانات غير منظمة ، أي بيانات النص الكامل:
واحد هو المسح التسلسلي: ما يسمى المسح التسلسل ، على سبيل المثال ، يبحث عن ملف مع سلسلة معينة ، هو النظر إلى كل مستند في وقت واحد. لكل وثيقة ، انظر من البداية إلى النهاية. إذا كان هذا المستند يحتوي على هذه السلسلة ، فإن هذا المستند هو الملف الذي نبحث عنه ، ثم انظر إلى الملف التالي حتى يتم مسح جميع الملفات. إذا كنت تستخدم Windows للبحث ، فيمكنك أيضًا البحث عن محتوى الملف ، ولكنه بطيء جدًا. إذا كان لديك محرك أقراص ثابت 80G ، إذا كنت ترغب في العثور على ملف به سلسلة معينة ، فمن الخوف أنك لن تتمكن من القيام بذلك دون قضاء بضع ساعات. هذا أيضًا بنفس الطريقة لأوامر GREP تحت Linux. قد تعتقد أن هذه الطريقة بدائية نسبيًا ، ولكن بالنسبة للملفات التي تحتوي على أحجام بيانات صغيرة ، لا تزال هذه الطريقة هي الأكثر مباشرة ومريحة. ولكن بالنسبة لعدد كبير من الملفات ، هذه الطريقة بطيئة للغاية.
قد يقول بعض الأشخاص أن المسح التسلسلي للبيانات غير المنظمة بطيئة للغاية ، ولكن البحث عن البيانات المهيكلة سريع نسبيًا (نظرًا لأن البيانات المنظمة لها بنية معينة ، يمكن استخدام خوارزمية بحث معينة لتسريع السرعة) ، لذلك ، لا يكفي لإيجاد طريقة لجعل بياناتنا غير المنظمة لها بنية معينة؟
هذه الفكرة طبيعية ، لكنها تشكل الفكرة الأساسية للبحث عن النص الكامل ، والتي تتمثل في استخراج جزء من المعلومات في البيانات غير المهيكلة وإعادة تنظيمها لجعلها لها بنية معينة ، ثم البحث عن البيانات بهيكل معين ، وذلك لتحقيق الغرض من البحث بسرعة نسبيًا.
هذا الجزء من المعلومات المستخرجة من البيانات غير المهيكلة ثم إعادة تنظيم يسمى الفهرس.
هذا البيان مجردة نسبيًا ، ومن السهل فهمه من خلال إعطاء بعض الأمثلة. على سبيل المثال ، فإن القاموس وجدول Pinyin وجدول حرف فحص جذري للقاموس يعادلون فهرس القاموس. شرح كل حرف غير منظم. إذا لم يكن للقاموس جدول مقطع لفظي وجدول حرف فحص جذري ، فيمكنك فقط مسحها في البحر الشاسع من الكلمات. ومع ذلك ، يمكن استخراج بعض المعلومات من الكلمة للمعالجة المنظمة. على سبيل المثال ، يتم تنظيم النطق نسبيًا ، مقسومًا إلى الأحرف الأولى والنهائيات ، وهناك سوى عدد قليل من الأنواع التي يمكن إدراجها تلو الأخرى. لذلك ، يتم إخراج النطق وترتيبه بترتيب معين ، ويشير كل نطق إلى عدد صفحات التفسير التفصيلي لهذه الكلمة. عندما نبحث ، فإننا نبحث عن النطق وفقًا لـ Pinyin المهيكلة ، وبعد ذلك يمكننا العثور على بياناتنا غير المنظمة - أي تفسير الكلمات.
تسمى هذه العملية لإنشاء فهرس أولاً ثم البحث عن الفهرس البحث عن النص الكامل.
الصورة أدناه هي من "Lucene in Action" ، ولكنها لا تصف عملية بحث Lucene فقط ، ولكنها تصف أيضًا العملية العامة للبحث عن النص الكامل.
ينقسم البحث عن النص الكامل عمومًا إلى عمليتين: إنشاء الفهرس (الفهرسة) وفهرس البحث (البحث).
• إنشاء الفهرس: عملية استخراج المعلومات من جميع البيانات المنظمة وغير المنظمة في العالم الحقيقي وإنشاء فهرس.
• فهرس البحث: إنها عملية الحصول على طلب استعلام المستخدم ، والبحث عن الفهرس الذي تم إنشاؤه ، ثم إرجاع النتيجة.
لذلك ، هناك ثلاث مشكلات مهمة في البحث عن النص الكامل:
1. ما هو بالضبط في الفهرس؟ (فِهرِس)
2. كيفية إنشاء فهرس؟ (الفهرسة)
3. كيف تبحث عن الفهارس؟ (يبحث)
أدناه ندرس كل مشكلة في التسلسل.
2. ما هو بالضبط في الفهرس
ما الذي يجب تخزينه بالضبط في الفهرس؟
أولاً ، دعونا نرى لماذا تكون سرعة المسح التسلسلي بطيئة:
في الواقع ، يحدث ذلك بسبب عدم الاتساق بين المعلومات التي نريد البحث عنها والمعلومات المخزنة في البيانات غير المهيكلة.
المعلومات المخزنة في البيانات غير المهيكلة هي ما يحتويه كل ملف ، أي ملفات معروفة ، ومن السهل نسبيًا البحث عن سلاسل ، أي التعيين من ملف إلى سلسلة. المعلومات التي نريد البحث عنها هي الملفات التي تحتوي على هذه السلسلة ، أي سلسلة معروفة ، والملف المطلوب ، أي التعيين من سلسلة إلى ملف. الاثنان بالضبط عكس ذلك. لذلك ، إذا كان بإمكان الفهرس دائمًا حفظ التعيين من سلسلة إلى ملف ، فسيتم تحسين سرعة البحث بشكل كبير.
نظرًا لأن التعيين من سلسلة إلى ملف هو عملية عكسية للملف إلى تعيين سلسلة ، فإن الفهرس الذي يخزن هذه المعلومات يسمى فهرس عكسي .
المعلومات المحفوظة من الفهرس العكسي هي بشكل عام على النحو التالي:
لنفترض أن هناك 100 وثيقة في مجموعة المستندات الخاصة بي. من أجل الراحة ، نقوم برقم المستند من 1 إلى 100 ونحصل على الهيكل التالي.
على اليسار سلسلة من الأوتار تسمى القواميس .
تشير كل سلسلة إلى قائمة مرتبطة مستند تحتوي على هذه السلسلة ، والتي تسمى قائمة النشر .
مع الفهرسة ، تتوافق المعلومات المحفوظة مع المعلومات التي سيتم البحث فيها ، والتي يمكن أن تسرع إلى حد كبير البحث.
على سبيل المثال ، إذا كنا نريد العثور على مستند يحتوي على كل من السلسلة "Lucene" والسلسلة "Solr" ، نحتاج فقط إلى الخطوات التالية:
1. قم بإزالة قائمة ارتباط المستند التي تحتوي على السلسلة "Lucene".
2. قم بإزالة قائمة ارتباط المستند التي تحتوي على السلسلة "Solr".
3. من خلال الجمع بين القائمة المرتبطة ، ابحث عن الملفات التي تحتوي على كل من "Lucene" و "Solr".
عند رؤية هذا المكان ، قد يقول بعض الأشخاص أن البحث الكامل للنص يسرع البحث ، ولكن مع عملية الفهرسة الإضافية ، قد لا يكون الاثنان أسرع بكثير من المسح التسلسلي. في الواقع ، مع عملية الفهرسة ، فإن استرداد النص الكامل ليس بالضرورة أسرع من المسح التسلسلي ، خاصةً عندما يكون حجم البيانات صغيرًا. يعد إنشاء فهرس على كمية كبيرة من البيانات عملية بطيئة للغاية.
ومع ذلك ، لا يزال هناك فرق بين الاثنين. المسح التسلسلي هو فحص في كل مرة ، وعملية إنشاء فهرس لا تحتاج إلا إلى أن تكون مرة واحدة وإلى الأبد. كل بحث ، لا يجب أن تمر عملية إنشاء فهرس ، فقط البحث عن الفهرس الذي تم إنشاؤه.
هذه أيضًا واحدة من مزايا البحث عن النص الكامل عبر المسح المتسلسل: الفهرسة مرة واحدة ، باستخدام عدة مرات.
3. كيفية إنشاء فهرس
تتضمن عملية إنشاء الفهرس للبحث عن النص الكامل الخطوات التالية:
الخطوة 1: بعض المستندات الأصلية المراد فهرستها (المستندات).
لتسهيل شرح عملية إنشاء الفهرس ، نستخدم هنا ملفين كأمثلة:
الملف الأول: يجب السماح للطلاب بالخروج مع أصدقائهم ، ولكن لا يُسمح لهم بشرب البيرة.
الملف 2: ذهب صديقي جيري إلى المدرسة لرؤية طلابه لكنه وجدهم في حالة سكر وهو غير مسموح به.
الخطوة 2: تمرير المستند الأصلي إلى الرمز المميز.
سيفعل مكون كلمة النعت (Tokenizer) الأشياء التالية (تسمى هذه العملية الرمز المميز):
1. قسّم المستند إلى كلمات منفصلة.
2. إزالة علامات الترقيم.
3. قم بإزالة كلمة التوقف.
كلمة التوقف المزعومة هي بعض الكلمات الأكثر شيوعًا في اللغة. نظرًا لأنه ليس له معنى خاص ، لا يمكن أن يكون كلمة رئيسية للبحث في معظم الحالات. لذلك ، عند إنشاء فهرس ، ستتم إزالة هذه الكلمة وسيتم تقليل حجم الفهرس.
كلمة توقف باللغة الإنجليزية مثل: "The" ، "A" ، "هذا" ، إلخ.
لكل لغة رمزية ، هناك مجموعة من الكلمات التوقف.
تسمى النتيجة التي تم الحصول عليها بعد كلمة النعت (Tokenizer) عنصر كلمة.
في مثالنا ، نحصل على عنصر الكلمة التالي (الرمز المميز):
"الطلاب" ، "مسموح" ، "GO" ، "" ، "الأصدقاء" ، "المسموح بهم" ، "الشراب" ، "البيرة" ، "بلدي" ، "صديق" ، "جيري" ، "ذهب" ، "المدرسة" ، "،" ، "،".
الخطوة 3: تمرير الرمز المميز الذي تم الحصول عليه إلى مكون معالجة اللغة (المعالج اللغوي).
يتناول مكون معالجة اللغة (المعالج اللغوي) بشكل أساسي عناصر الكلمات الناتجة (الرموز).
بالنسبة للغة الإنجليزية ، يقوم مكون معالجة اللغة (المعالج اللغوي) عمومًا بما يلي:
1. التغيير إلى الأحرف الصغيرة (صغيرة).
2. قلل الكلمة إلى شكل جذر ، مثل "السيارات" إلى "السيارة" ، وما إلى ذلك. هذه العملية تسمى: الانتقال.
3. تحويل الكلمات إلى أشكال الجذر ، مثل "قاد" إلى "محرك" ، وما إلى ذلك. هذه العملية تسمى lemmatization.
أوجه التشابه والاختلاف بين التنقيب والتنشيط:
• متماثل: التنقيب و lemmatization على حد سواء جعل المفردات شكل جذر.
• الطريقتان مختلفتان:
◦ STEMMINGENG يتبنى طريقة "التخفيض": "Cars" إلى "Car" ، "Driving" to "Drive".
تعتمد الإضاءة على طريقة "التحول": "قاد" إلى "Drove" ، "القيادة" إلى "Drive".
• خوارزميات الاثنين مختلفة:
يعتمد STEMMINGing بشكل أساسي بعض الخوارزمية الثابتة للقيام بهذا التخفيض ، مثل إزالة "S" ، وإزالة "ING" وإضافة "E" ، وتغيير "itional" إلى "أكل" ، وتغيير "tional" إلى "tion".
exedlematization يستخدم بشكل أساسي طريقة حفظ قاموس معين لإجراء هذا التحول. على سبيل المثال ، هناك تعيينات من "القيادة" إلى "Drive" ، "قاد" إلى "Drive" ، "Am ، IS ، هي" BE "في القاموس. عند إجراء تحول ، فقط ابحث عن القاموس.
• التنقيب و lemmatization ليسا علاقات حصرية بشكل متبادل ، ولكن لها تقاطعات. يمكن أن تحقق بعض الكلمات نفس التحويل باستخدام كلتا الطريقتين.
وتسمى نتيجة المعالج اللغوي مصطلح.
في مثالنا ، بعد معالجة اللغة ، تكون الكلمة (المصطلح) التي تم الحصول عليها كما يلي:
"الطالب" ، "السماح" ، "الذهاب" ، "" ، "صديق" ، "السماح" ، "الشراب" ، "بيرة" ، "بلدي" ، "صديق" ، "جيري" ، "الذهاب" ، "المدرسة" ، "انظر" ، "" ، "
ويرجع ذلك بالتحديد إلى خطوات معالجة اللغة التي يمكن البحث فيها عن محرك الأقراص ، ويمكن أيضًا البحث في محرك الأقراص.
الخطوة 4: تمرير الكلمة التي تم الحصول عليها (المصطلح) إلى مكون الفهرس (مفهرس).
يقوم الفهرس بشكل أساسي بما يلي:
1. إنشاء قاموس باستخدام الكلمة الناتجة (المصطلح).
في مثالنا ، يكون القاموس كما يلي:
شرط | معرف الوثيقة |
طالب | 1 |
يسمح | 1 |
يذهب | 1 |
هُم | 1 |
صديق | 1 |
يسمح | 1 |
شرب | 1 |
جعة | 1 |
لي | 2 |
صديق | 2 |
جيري | 2 |
يذهب | 2 |
مدرسة | 2 |
يرى | 2 |
له | 2 |
طالب | 2 |
يجد | 2 |
هم | 2 |
شرب | 2 |
يسمح | 2 |
2. فرز القاموس أبجديًا.
شرط | معرف الوثيقة |
يسمح | 1 |
يسمح | 1 |
يسمح | 2 |
جعة | 1 |
شرب | 1 |
شرب | 2 |
يجد | 2 |
صديق | 1 |
صديق | 2 |
يذهب | 1 |
يذهب | 2 |
له | 2 |
جيري | 2 |
لي | 2 |
مدرسة | 2 |
يرى | 2 |
طالب | 1 |
طالب | 2 |
هُم | 1 |
هم | 2 |
• تواتر المستند يعني تواتر المستند ، مما يشير إلى عدد الملفات التي تحتوي على هذه الكلمة (المصطلح).
• يعني التردد تواتر الكلمة ، مما يعني أن هذا الملف يحتوي على العديد من الكلمات (المصطلح).
لذلك ، بالنسبة للكلمة "السماح" ، هناك مستندان يحتويان على هذه الكلمة (المصطلح) ، لذلك هناك مستندان يتبعان قائمة المستندات بعد الكلمة (المصطلح). يمثل العنصر الأول المستند الأول الذي يحتوي على "السماح" ، أي المستند 1. في هذا المستند ، يظهر "السماح" مرتين ، ويمثل العنصر الثاني المستند الثاني الذي يحتوي على "السماح" هو المستند 2. في هذا المستند ، "السماح" يظهر مرة واحدة.
حتى الآن ، تم إنشاء الفهرس ، ويمكننا العثور بسرعة على المستند الذي نريده من خلاله.
وفي هذه العملية ، فوجئنا بالعثور على أن عمليات البحث عن "محرك" و "القيادة" و "المحرك" و "الدفاع" يمكن العثور عليها أيضًا. لأنه في فهرسنا ، سيتم معالجة "القيادة" و "القيادة" و "المحرك" من خلال اللغة وتصبح "محرك". عند البحث ، إذا أدخلت "القيادة" ، فإن عبارة الاستعلام التي تم إدخالها ستمر عبر خطوات أو ثلاث خطوات هنا ، ثم تصبح استعلام "محرك" ، بحيث يمكنك البحث في المستند المطلوب.
3. كيف تبحث عن الفهارس؟
يبدو أنه يمكننا الإعلان "لقد وجدنا الوثائق التي نريدها".
ومع ذلك ، لم تنته الأمر ، ووجد أنه كان جانبًا واحدًا فقط من البحث الكامل للنص. أليس كذلك؟ إذا كانت مستندات واحدة أو عشر مستندات فقط تحتوي على الأوتار التي نستفسر عنها ، فقد وجدناها. ولكن ماذا لو كان هناك ألف ، أو حتى الآلاف؟ أي واحد هو الملف الذي تريده أكثر؟
افتح Google ، على سبيل المثال ، إذا كنت ترغب في العثور على وظيفة في Microsoft ، فأنت تدخل "Microsoft Job" وتجد ما مجموعه 22600،000 نتيجة تم إرجاعها. يا له من عدد كبير ، لقد كانت مشكلة فجأة وجدت أنه لم يتم العثور عليها ، وكان الكثيرون مشكلة أيضًا. مع العديد من النتائج ، كيف تضع أكثر النتائج ذات صلة أولاً؟
بالطبع تقوم Google بعمل جيد ، ستجد وظائف في Microsoft دفعة واحدة. تخيل كم سيكون الأمر فظيعًا إذا كانت القلة الأولى هي "تقوم Microsoft بعمل جيد في صناعة البرمجيات ..."
كيفية العثور على أكثر بيانات الاستعلام ذات الصلة بين الآلاف من نتائج البحث مثل Google؟
كيفية تحديد العلاقة بين المستند الذي تم تفتيشه وبيان الاستعلام؟
عاد هذا إلى سؤالنا الثالث: كيف نبحث عن الفهارس؟
ينقسم البحث بشكل أساسي إلى الخطوات التالية:
الخطوة 1: يدخل المستخدم بيان الاستعلام.
تحتوي بيانات الاستعلام على بناء جملة معين ، تمامًا مثل لغتنا العادية.
تحتوي عبارات الاستعلام المختلفة على بناء جملة مختلف ، مثل عبارات SQL لها بناء جملة معين.
يختلف بناء جملة عبارة الاستعلام وفقًا لتنفيذ نظام استرجاع النص الكامل. وتشمل الأكثر أساسية: و ، أو ، وما إلى ذلك ، إلخ.
على سبيل المثال ، بيان إدخال المستخدم: Lucene ولم يتعلموا Hadoop.
اشرح أن المستخدم يريد العثور على مستند يحتوي على لوسين ويتعلم ولكنه لا يشمل Hadoop.
الخطوة 2: إجراء التحليل المعجمي ، والتحليل النحوي ، ومعالجة اللغة لبيان الاستعلام.
نظرًا لأن بيان الاستعلام يحتوي على بناء جملة ، فمن الضروري أيضًا إجراء التحليل النحوي والتحليل النحوي ومعالجة اللغة.
1. يستخدم التحليل المعجمي بشكل أساسي لتحديد الكلمات والكلمات الرئيسية.
كما هو الحال في المثال أعلاه ، بعد التحليل المعجمي ، تشمل الكلمات Lucene و Hand و Hadoop والكلمات الرئيسية ، وليس.
إذا تم العثور على كلمة رئيسية غير قانونية في التحليل المعجمي ، فسيحدث خطأ. على سبيل المثال ، تعلمت Lucene AMD ، حيث تشارك AMD في الاستعلام ككلمة عادية بسبب الأخطاء في و.
2. تحليل بناء الجملة يشكل بشكل أساسي شجرة بناء الجملة بناءً على القواعد النحوية لبيان الاستعلام.
إذا وجدت أن عبارة الاستعلام لا تفي بقواعد بناء الجملة ، فسيتم الإبلاغ عن خطأ. إذا لم تتعلم لوكين ، فسيحدث خطأ.
كما هو الحال في المثال أعلاه ، فإن شجرة بناء الجملة التي تشكلت بواسطة Lucene ولم تتعلم وليس Hadoop هي كما يلي:
3. معالجة اللغة هي تقريبا مثل معالجة اللغة أثناء الفهرسة.
على سبيل المثال ، تصبح المستفادة مستفادة ، إلخ.
بعد الخطوة الثانية ، نحصل على شجرة بناء جملة معالجة اللغة.
الخطوة 3: ابحث عن الفهرس واحصل على المستندات التي تتطابق مع شجرة بناء الجملة.
هذه الخطوة مقسمة إلى عدة خطوات صغيرة:
1. أولاً ، في جدول الفهرس العكسي ، ابحث عن قائمة ارتباط المستندات التي تحتوي على Lucene و Learn و Hadoop.
2. ثانياً ، قم بدمج القوائم المرتبطة التي تحتوي على لوسين وتعلم الحصول على قائمة مرتبطة مستندات تحتوي على كل من Lucene and Learn.
3. ثم ، قم بإجراء فرق بين هذه القائمة المرتبطة وقائمة المستند المرتبطة بـ Hadoop ، وقم بإزالة المستند الذي يحتوي على Hadoop ، وذلك للحصول على قائمة مرتبطة بالوثيقة التي تحتوي على كل من Lucene وتتعلم ولا تحتوي على Hadoop.
4. قائمة ارتباط المستندات هذه هي المستند الذي نبحث عنه.
الخطوة 4: فرز النتائج بناءً على الارتباط بين المستند الذي تم الحصول عليه وبيان الاستعلام.
على الرغم من أنه في الخطوة السابقة ، حصلنا على المستند المطلوب ، يجب فرز نتائج الاستعلام من خلال ارتباطها ببيان الاستعلام ، وكلما زادت أهمية ، كلما زادت تلك.
كيفية حساب العلاقة بين المستندات وبيانات الاستعلام؟
من الأفضل اعتبار بيان الاستعلام وثيقة قصيرة وتسجيل الأهمية بين المستندات. إذا كانت العلاقة ذات الدرجات العالية جيدة ، فيجب تصنيفها أولاً.
فكيف تقيم العلاقة بين المستندات؟
هذه ليست مهمة سهلة. أولاً ، دعنا نلقي نظرة على الحكم على العلاقة بين الناس.
بادئ ذي بدء ، عند النظر إلى شخص ما ، غالبًا ما يكون هناك العديد من العناصر ، مثل الشخصية والمعتقدات والهوايات والملابس والطول والدهون والرقيقة.
ثانياً ، بالنسبة للعلاقة بين الناس ، فإن العناصر المختلفة لها أهمية مختلفة . قد تكون الشخصية والإيمان والهوايات أكثر أهمية. قد لا تكون الملابس والطول والدهون مهمة للغاية. لذلك ، من المرجح أن يصبح الأشخاص الذين يعانون من نفس الشخصية أو المعتقدات والهوايات أكثر من ذلك ، لكن الأشخاص الذين لديهم ملابس مختلفة ، وارتفاع ، والدهون ، والرقيقة يمكن أن يصبحوا أصدقاء حميمين.
لذلك ، عند الحكم على العلاقة بين الناس ، يجب علينا أولاً معرفة العناصر الأكثر أهمية في العلاقة بين الناس ، مثل الشخصية والمعتقدات والهوايات. ثانياً ، نحتاج إلى الحكم على العلاقة بين هذه العناصر لشخصين ، مثل شخص واحد لديه شخصية مبهجة ، والشخص الآخر لديه شخصية منفتحة ، أحدهما يؤمن بالبوذية ، والآخر يؤمن بالله ، والآخر يحب لعب كرة السلة ، والآخر يحب لعب كرة القدم. لقد وجدنا أن كلاهما إيجابي للغاية من حيث الشخصية ، والطيبة من حيث الإيمان ، والرياضة من حيث الهوايات ، لذلك يجب أن تكون العلاقة بينهما جيدة جدًا.
دعونا نلقي نظرة على العلاقة بين الشركات.
أولاً ، انظر إلى شركة ، تتكون من العديد من الأشخاص ، مثل المدير العام ، المدير ، المدير الفني ، الموظفين العاديين ، حراس الأمن ، البواب ، إلخ.
ثانياً ، يكون لدى الأشخاص المختلفين أهمية مختلفة للعلاقة بين الشركات . قد يكون المديرون العامون والمديرون وكبار المسؤولين التقنيين أكثر أهمية ، وقد يكون الموظفون العاديون وحراس الأمن والبواس أقل أهمية. لذا ، إذا كانت العلاقة بين المديرين العامين والمديرين وكبار موظفي التكنولوجيا في شركتين جيدة نسبيًا ، فإن الشركتين عرضة لعلاقة أفضل. ومع ذلك ، حتى لو كان لدى الموظف العادي كراهية عميقة مع موظف عادي في شركة أخرى ، فمن غير المرجح أن يؤثر على العلاقة بين الشركتين.
لذلك ، للحكم على العلاقة بين الشركة ، يجب علينا أولاً معرفة من هو الأكثر أهمية في العلاقة بين الشركة ، مثل المدير العام والمدير وكبير موظفي التكنولوجيا. ثانياً ، نحتاج إلى الحكم على العلاقة بين هؤلاء الأشخاص ، والتي ليست جيدة مثل المديرين العامين للشركتين ، والمديرين هم زملاء القرويين ، وكبار مسؤولي التكنولوجيا هم شركاء ريادة الأعمال. لقد وجدنا أن العلاقة بين الشركتين جيدة ، سواء كان المدير العام أو المدير أو كبير موظفي التكنولوجيا ، جيدة ، لذلك يجب أن تكون العلاقة بين الشركتين جيدة.
بعد تحليل العلاقات ، دعونا نلقي نظرة على كيفية الحكم على العلاقة بين الوثائق .
بادئ ذي بدء ، تتكون وثيقة من العديد من الكلمات (المصطلح) ، مثل البحث ، Lucene ، النص الكامل ، هذا ، أ ، ما ، إلخ.
ثانياً ، يتمتع مصطلح مختلف بأهمية مختلفة للعلاقة بين المستندات . على سبيل المثال ، بالنسبة لهذا المستند ، فإن البحث ، Lucene ، النص الكامل مهم نسبيًا ، هذا ، ما قد يكون غير مهم نسبيًا. لذلك إذا كانت كلا المستخلصتين تحتويان على البحث ولوكين ونص كامل ، فإن الارتباط بين هاتين الوثيقة أفضل. ومع ذلك ، حتى لو كان أحد المستندات يحتوي على هذا ، A ، وماذا ، والوثيقة الأخرى لا تحتوي على هذا ، أ ، ماذا ، لا يمكن أن تؤثر على العلاقة بين الوثيقين.
لذلك ، للحكم على العلاقة بين المستندات ، اكتشف أولاً الكلمات (المصطلح) هي الأكثر أهمية للعلاقة بين المستندات ، مثل البحث ولوكين ، النص الكامل. ثم احكم على العلاقة بين هذه الكلمات (المصطلح).
تسمى عملية اكتشاف أهمية كلمة (مصطلح) إلى مستند عملية حساب وزن الكلمة.
هناك معلمتان لحساب مصطلح الوزن. الأول هو الكلمة (المصطلح) والثاني هو المستند (المستند).
يشير وزن الكلمة إلى أهمية هذه الكلمة في هذا المستند. كلما كانت الكلمة (المصطلح) أكثر أهمية ، كلما زاد الوزن (الوزن المصطلح) ، وبالتالي ستلعب دورًا أكبر في حساب العلاقة بين المستندات.
يتم استخدام عملية الحكم على العلاقة بين الكلمات (المصطلح) وبالتالي الحصول على ارتباطات المستندات لاستخدام خوارزمية نموذج مساحة المتجه (نموذج مساحة المتجه).
دعنا نحلل هاتين العمليتين بعناية:
1. عملية حساب الوزن (الوزن المصطلح).
هناك عاملان رئيسيان يؤثران على أهمية كلمة (مصطلح) في وثيقة:
• التردد المصطلح (TF): وهذا هو عدد المرات التي يظهر فيها هذا المصطلح في هذا المستند. كلما كان TF أكبر ، كلما كان ذلك أكثر أهمية.
• تواتر المستند (DF): أي عدد المستندات التي تحتوي على مصطلح ثانوي. كلما زادت DF ، كلما كان ذلك أقل أهمية.
هل من السهل الفهم؟ كلما زاد عدد الكلمة (المصطلح) في المستند ، كلما كان الأمر أكثر أهمية في المستند. على سبيل المثال ، تظهر كلمة "البحث" عدة مرات في هذا المستند ، مما يعني أن هذا المستند يتحدث بشكل أساسي عن هذا الجانب. ومع ذلك ، في وثيقة إنجليزية ، إذا ظهر هذا في كثير من الأحيان ، فهل هذا يعني أنه أكثر أهمية؟ لا ، يتم ضبط هذا من العامل الثاني. يوضح العامل الثاني أنه كلما زاد عدد المستندات التي تحتوي على هذه الكلمة (المصطلح) ، فهذا يعني أن الكلمة (المصطلح) عادية للغاية وليس كافية لتمييز هذه المستندات ، وبالتالي فكلما كانت أقل أهمية.
هذه هي أيضًا التكنولوجيا التي نتعلمها المبرمجون. بالنسبة للمبرمجين أنفسهم ، كلما أتقنوا هذه التكنولوجيا ، كلما كان ذلك أفضل (كلما كان أعمقهم ، يعني أنه كلما زاد الوقت الذي يقضونه ، كلما زاد عدد TF) ، وكلما زاد تنافسهم عند البحث عن وظيفة. ومع ذلك ، بالنسبة لجميع المبرمجين ، كلما قل عدد الأشخاص الذين يفهمون هذه التكنولوجيا ، كان ذلك أفضل (كلما زاد عدد الأشخاص الذين يفهمونها) ، وكلما زاد قدرتهم على إيجاد وظيفة. هذا هو السبب في أن القيمة الإنسانية تكمن في عدم استجابة.
بمجرد فهم الحقيقة ، دعونا نلقي نظرة على الصيغة:
هذا مجرد تطبيق نموذجي بسيط لصيغة حساب الوزن المصطلح. سيكون للأشخاص الذين يقومون بتنفيذ نظام استرجاع النص الكامل تنفيذهم الخاص ، ولوسين يختلف قليلاً عن هذا.
2. عملية الحكم على العلاقة بين المصطلح والحصول على ارتباط المستند ، أي الخوارزمية (VSM) لنموذج مساحة المتجه.
نحن نعتبر المستندات سلسلة من الكلمات (المصطلح) ، كل كلمة (مصطلح) لها وزن (وزن مصطلح) ، وتؤثر الكلمات المختلفة (المصطلح) على حساب تسجيل صلة المستند بناءً على وزنها في المستند.
لذلك نحن نعتبر وزن المصطلح في هذا المستند كمتجه.
المستند = {term1 ، term2 ، ... ، المصطلح n}
متجه المستند = {Weight1 ، Weight2 ، ... ، الوزن N}
وبالمثل ، فإننا نعتبر بيان الاستعلام وثيقة بسيطة وأعبر عنها أيضًا في المتجهات.
الاستعلام = {term1 ، المصطلح 2 ، ... ، المصطلح n}
Query Vector = {Weight1 ، Weight2 ، ... ، Weight N}
وضعنا جميع متجهات المستندات التي تم تفتيشها ومتجهات الاستعلام في مساحة N- الأبعاد ، وكل كلمة (مصطلح) أحادية البعد.
كما هو موضح في الصورة:
نحن نعتقد أنه كلما كانت الزاوية الأصغر بين متجهين ، زاد الارتباط.
لذلك ، نقوم بحساب قيمة جيب التمام للزاوية المضمنة كنتيجة للارتباط. كلما كانت الزاوية أصغر ، كلما زادت قيمة جيب التمام ، زادت النتيجة ، وكلما زاد الارتباط.
قد يطلب بعض الأشخاص أن تكون عبارات الاستعلام قصيرة جدًا وتحتوي على عدد قليل جدًا من الكلمات (المصطلح) ، وبالتالي فإن أبعاد متجه الاستعلام صغير جدًا ، في حين أن المستند طويل جدًا ، يحتوي على العديد من الكلمات (المصطلح) ، وأبعاد متجه المستند كبير جدًا. لماذا أبعاد كليهما في الرسم البياني الخاص بك؟
هنا ، نظرًا لأنك تريد وضعها في نفس مساحة المتجه ، فإن الأبعاد الطبيعية هي نفسها. يختلف في نفس الوقت ، خذ اتحاد الاثنين. إذا لم يكن هناك كلمة (مصطلح) ، فإن الوزن (الوزن المصطلح) هو 0.
صيغة تسجيل الارتباط هي كما يلي:
على سبيل المثال ، هناك 11 مصطلحًا في بيان الاستعلام ، ويتم البحث في ثلاث مستندات. الأوزان ذات الصلة (الوزن المصطلح) هي كما يلي.
T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 | T9 | T10 | T11 | |
D1 | 0 | 0 | .477 | 0 | .477 | .176 | 0 | 0 | 0 | .176 | 0 |
D2 | 0 | .176 | 0 | .477 | 0 | 0 | 0 | 0 | .954 | 0 | .176 |
D3 | 0 | .176 | 0 | 0 | 0 | .176 | 0 | 0 | 0 | .176 | .176 |
س | 0 | 0 | 0 | 0 | 0 | .176 | 0 | 0 | .477 | 0 | .176 |
لذلك ، يتم حساب درجات الارتباط بين المستندات الثلاث وبيان الاستعلام على النحو التالي:
لذلك ، فإن المستند 2 لديه أعلى ارتباط ، والعوائد الأولى ، تليها الوثيقة 1 ، وأخيراً المستند 3.
حتى الآن ، يمكننا أن نجد الوثائق التي نريدها أكثر.
بعد قوله كثيرًا ، لم أدخل لوسين بعد ، لكنها مجرد نظرية أساسية في استرجاع المعلومات. ومع ذلك ، بعد أن ننظر إلى لوسين ، سنجد أن لورين هي ممارسة أساسية لهذه النظرية الأساسية. لذلك ، في المقالات التي تحلل لوكين ، سنرى غالبًا تطبيق النظرية أعلاه في لوكين.
قبل دخول لوكين ، يكون ملخص لإنشاء الفهرس أعلاه وعملية البحث كما هو موضح في الشكل:
يشير هذا الرقم إلى مقالة "Lucene ، محرك البحث الكامل للنص من رمز المصدر المفتوح" في http://www.lucene.com.cn/about.htm
1. عملية الفهرسة:
1) هناك سلسلة من الملفات المفهرسة
2) يتم تحليل الملف المفهرس بناء جملة ومعالجة اللغة لتشكيل سلسلة من الكلمات (المصطلح).
3) إنشاء قاموس وجدول فهرس عكسي من خلال الفهرسة.
4) اكتب الفهرس إلى القرص الثابت من خلال تخزين الفهرس.
2. عملية البحث:
أ) بيان استعلام إدخال المستخدم.
ب) يتم الحصول على سلسلة من الكلمات (المصطلح) من خلال التحليل النحوي وتحليل اللغة لبيان الاستعلام.
ج) الحصول على شجرة استعلام من خلال تحليل بناء الجملة.
د) اقرأ الفهرس في الذاكرة من خلال تخزين الفهرس.
هـ) استخدم شجرة الاستعلام للبحث في الفهرس ، وذلك للحصول على قائمة ارتباط المستند لكل كلمة (مصطلح) ، وإرسال قائمة ارتباط المستند ، والحصول على مستند النتيجة.
و) فرز مستند النتيجة التي تم تفتيشها إلى أهمية الاستعلام.
ز) إرجاع نتيجة الاستعلام للمستخدم.
2. فرز القاموس أبجديًا.
شرط | معرف الوثيقة |
يسمح | 1 |
يسمح | 1 |
يسمح | 2 |
جعة | 1 |
شرب | 1 |
شرب | 2 |
يجد | 2 |
صديق | 1 |
صديق | 2 |
يذهب | 1 |
يذهب | 2 |
له | 2 |
جيري | 2 |
لي | 2 |
مدرسة | 2 |
يرى | 2 |
طالب | 1 |
طالب | 2 |
هُم | 1 |
هم | 2 |
3. دمج نفس الكلمات (المصطلح) في قائمة ارتباط المستند العكسي (قائمة النشر).
في هذا الجدول ، هناك عدة تعريفات: