تخيل يومك الأول في وظيفة جديدة. يقع المكتب في منطقة محطة مترو كورسكيا غير المألوفة تمامًا. الغداء يقترب. يمكنك فتح تطبيق البحث ، وكتابة
"تناول الطعام على كورسك" واحصل على مجموعة من الخيارات حيث يمكنك تناول العشاء.
ما وراء طلب
"تناول الطعام على كورسك" وكيف تتم معالجته للعثور على ما تحتاجه بالضبط؟ سأخبرك في المقال كيف يقوم فريق بحث 2GIS ببذل قصارى جهده لجعل الحياة في المدن أكثر راحةً للمستخدمين.
من المهم أن نفهم أن نص استعلام البحث هو مجرد غيض من فيض ، وهو جزء صغير مما يتفاعل معه المستخدم مباشرة. يحتوي استعلام البحث نفسه ، بالإضافة إلى النص ، على الكثير من البيانات الأخرى. وهي تشمل معلومات مخصصة حول موقع المستخدم ، ومنطقة الخريطة التي يراها ، ومجموعة من السجلات من المفضلة ، ومعلومات حول أوضاع البحث. على سبيل المثال ، البحث على خريطة أو في مبنى ، أو ربما البحث عن الاتجاهات. البيانات هي مفتاح نجاح وظيفة البحث الجيدة.
نولي اهتماما كبيرا لبياناتنا وهيكلها. علاوة على ذلك ، نحن نسمي خوارزمية البحث في البحث الهيكلي 2GIS ، لأنه يتم شحذها من خلال بحث فعال وسريع في بياناتنا المنظمة. نحن نعد بشكل خاص فهرس البحث والبيانات التي تم تصميمها منه. لن أخوض في التفاصيل ، لا يمكنني إلا أن أقول إن البيانات منظمة بطريقة بسيطة بما يكفي للمعالجة ، مضغوطة بشكل جيد ، والأهم من ذلك أنها تسمح لنا بمعالجتها بسرعة حتى على الأجهزة المحمولة.
علاوة على ذلك ، يمكن أن يعمل البحث في وضع عدم الاتصال ، وبالتالي يجعل مطالب خاصة على سرعة وحجم فهرس البحث. نولي اهتمامًا كبيرًا لهذه الميزة - فنحن نضغط باستمرار على فهرس البحث ونقيِّم الأداء على جميع أنواع الأنظمة الأساسية ونسرع من الوظائف حيث تتجاوز حالات البحث المحددة الحد الزمني المحدد. بالمناسبة ، يمكننا أن نفخر بأن استعلام البحث العادي في 2GIS على جهاز محمول أسرع من أن يرسم التطبيق قائمة منسدلة بناءً على النتائج.
أدناه ، سأكشف النقاب عن حجاب السرية الذي يغطي سحر بحثنا. على سبيل المثال ، نأخذ الطلب المذكور
"تناول الطعام على كورسك" . النظر في مراحل معالجتها وما يحدث في كل منها. لذلك دعونا نذهب!
المرحلة 1. تحليل
معلمات الإدخال: طلب
"أكل على كورسك"بادئ ذي بدء ، نحن بحاجة إلى تحليل نص الطلب. هذا مهم ، لأنه بعد التحليل لا يمكننا العمل مع نص الطلب ، ولكن مع مجموعة الرموز التي يتكون منها. الرموز هي كلمات طلب واحد. في حالتنا ، سوف نتلقى مجموعة من ثلاثة رموز:
"أكل" ،
"تشغيل" ،
"كورسك" . يبدو أن كل شيء بسيط ، ولكن الشيطان هو في التفاصيل. وأحيانًا لا يكون ذلك واضحًا: على سبيل المثال ، في استفسارات "wi-fi" أو "2nd" ، يجب أن نفهم أنه يجب علينا التعامل مع هذه المجموعات بأكملها.
تحتوي الرموز المميزة نفسها على معلومات حول نص الكلمة ، وعن الموضع في الطلب ، وعن وجود فاصل يتبع الكلمة وبعض سمات الكلمة - سجل أحرفها ، سواء كانت الكلمة رقمًا أو رقمًا ترتيبيًا أو رقم هاتف أو عنوان أو بيانات أخرى.
المرحلة 2. قاموس البحث
معلمات الإدخال: الرموز
"أكل" ،
"تشغيل" ،
"كورسك"من خلال قائمة جاهزة من الرموز المميزة للطلب ، ننتقل إلى مرحلة البحث عن القاموس ، أي إلى المرحلة التي نجد فيها لكل رمز رمزي قائمة من أشكال الكلمات من بياناتنا. يتم ترميز نموذج كلمة معلومات حول جذر الكلمة ونهايتها.
نقدم بحث القاموس كخوارزمية لتحليل قاموس ، يتم تقديمه في شكل رسم بياني. العقد الموجودة فيه عبارة عن حروف ، أو بالأحرى رموز. يتكون الرسم البياني من عقد الرموز والانتقالات بين هذه العقد. تتمثل نتيجة الالتفاف على الرسم البياني لقاموسنا في الكثير من أشكال الكلمات التي يمكننا الحصول عليها استنادًا إلى الرموز المميزة المنقولة من المرحلة السابقة. لذلك نحاول أن نجد في قاموسنا سلسلة من الأحرف التي تتطابق مع الرمز التالي من الطلب. في الوقت نفسه ، كما نعلم جميعًا ، يرتكب المستخدمون الأخطاء المطبعية أو يفوتون الرسائل أو يخطئون في تخطيط لوحة المفاتيح. لذلك ، عندما نتجول في القاموس ، نطبق بعض التلاعب من أجل مراعاة عامل بشري محتمل أو محاولة تخمين ما يكسبه الشخص في الوقت الحالي. يتم استخدام التحويلات المختلفة لسلسلة الأحرف: إدراج ، بدائل ، أحرف إلحاق ، وما شابه.
نتيجة لذلك ، لكل طلب رمزي من الرسم البياني ، نقوم باستخراج مجموعة من أشكال الكلمات مع معلومات حول الجذر ونهاية الكلمة ، ومعلومات حول عدد الأحرف في نموذج الكلمة ، وتقدير للموجود. تقدير النتيجة - تقييم يميز مسافة المفردات في تسلسل الحروف المكتشف إلى التسلسل المطلوب. يميز التقييم مدى اختلاف سلسلة الأحرف التي تم العثور عليها عن الرمز المميز للطلب.
بالنسبة للرموز ، نجد أشكال الكلمات:
- 13 أشكال لـ "eat" : "eat" ، "eat" ، "paese" ، "payot" ، ...
- 3 أشكال لـ "on" : "na" ، "nu" ، "on"
- 48 نماذج لـ "كورسك" : "كورسك" ، "كورسك" ، "كورسك" ، "كورسك" ، "كوراكو" ، ...
بعد ذلك ، يتم تصفية أشكال الكلمات الموجودة وفقًا لتقييمها. أفضلها ، أي أقرب ما يمكن للكلمات من الاستعلام ، يقع في قائمة المصطلحات. نعني بالمصطلح شكل الكلمة وتقدير النتيجة. بالإضافة إلى ذلك ، بالإضافة إلى أشكال الكلمات التي تم العثور عليها ، تتم إضافة المصطلحات المضافة باستخدام قواعد المورفولوجيا إلى القائمة. خطوة مهمة في المعالجة المورفولوجية هي إضافة التقييم الصرفي. الحقيقة هي أن بحثنا يستخدم آلية معالجة صرفية قوية لا تسمح لنا فقط بالعثور على كلمات متشابهة من القاموس ، ولكن وفقًا لقواعد اللغة الطبيعية ، فإنه من الأدق أن نجد ما يهم المستخدم بالضبط من خلال المعنى ، وليس فقط من خلال تشابه الكلمات.
بالنسبة للرموز ، سيتم إنشاء المصطلحات:
- "أكل" : "أكل" ، "أكل" ، "أكل" ، "أكل" ، "أكل"
- "On" : "on" ، "na" ، "nu"
- "كورسك" : "كورسك" ، "كورسك" ، "كورسك" ، "كورسك" ، "كورسك"
في هذه المرحلة ، ينتهي البحث عن القاموس. لقد عالجنا الطلب ولدينا لكل رمز قائمة بالمصطلحات التي تدخل في مزيد من المعالجة. تحتوي هذه المصطلحات على جميع المعلومات حول الكلمة التي تمثلها ، ولها تقييم لكيفية العثور على كل منها.
الخطوة 3. العثور على إدخالات البيانات
المدخلات: مجموعة من الشروط لكل جزء من الطلب
- "أكل" : "أكل" ، "أكل" ، "أكل" ، "أكل" ، "أكل"
- "On" : "on" ، "na" ، "nu"
- "كورسك" : "كورسك" ، "كورسك" ، "كورسك" ، "كورسك" ، "كورسك"
بعد تلقينا من المرحلة السابقة مجموعة من المصطلحات لكل جزء من أجزاء الطلب ، ننتقل للبحث عنها بواسطة فهرسنا. يحتوي كل مستند في البيانات على العديد من العناوين ويتم كتابته في
الفهرس العكسي حتى نتمكن من العثور بسهولة على جميع الإشارات إلى المصطلح المطلوب في مستندات محددة تمثل منظمات أو عناوين أو أي وثائق أخرى.
لكل جزء من أجزاء الطلب ولكل من شروط هذه الأجزاء ، نحن نبحث عن وثائق تحتوي على كلمات مشفرة في المصطلحات. لذلك ، بالنسبة لأجزاء الطلب ، سيتم العثور على الإدخالات في جميع الشروط:
- "أكل" : 18 مداخل
- في : 4،304 إدخالات
- كورسك : 79 مداخل
من الواضح أن حرف الجر
"تشغيل" يحدث عدة مرات ، وبالتالي يقع في العديد من عناوين الوثائق - "تناول القهوة في الخارج" ، و "اللعب
على وحدة التحكم" ، و "تسجيل الجهاز".
"أكل" و
"كورسك" تستخدم أيضا مرارا وتكرارا. تم العثور على الكلمة الثانية مع مصطلحاتها في بياناتنا في كثير من الأحيان أكثر من الأولى.
من خلال النقر ، فإننا نعتبر مطابقة كلمة ما من استعلام بحث إلى كلمة من وثيقة محددة. يتم حفظ هذه الزيارات في القائمة ، والتي سيتم تحليلها في الخطوة التالية. عند إضافة علامة ، لا نقوم فقط بنسخ بيانات حول الكلمة الموجودة في المستند من المصطلح ، ولكن نحسب أيضًا أفضل تقدير لكيفية العثور على الكلمة. بمعنى آخر ، نختار تقييمًا مورفولوجيًا للمصطلح ، أو تقييمًا لكيفية العثور على المصطلح في القاموس ، اعتمادًا على أي من التصنيفات أقرب إلى رمز الطلب.
هذه المرحلة هي مقدمة لبدء البحث نفسه. لقد أعددنا مجموعة من الزيارات في مستندات محددة ، على أساسها ستقوم الخوارزمية التالية بتحديد وتقييم ما يجب تقديمه للمستخدم كنتيجة لذلك.
المرحلة 4. قلب البحث
مدخل: قائمة ضرب
- "أكل" : 18 مداخل
- في : 4،304 إدخالات
- كورسك : 79 مداخل
في الواقع ، فإن قائمة النجاح في تطبيقنا عبارة عن حاوية صعبة للغاية. من المهم أن نفهم أنه عند إضافة مرات الوصول إليها ، يتم إنشاء عقد خاصة حيث يتم تسجيل مرات الدخول نفسها ، ورابط للمستند الذي سقطت به هذه الزيارات.
لذلك ، سيكون من الأصح عرض بيانات الإدخال كما يلي:
المدخل: حاوية من عقد الوثيقة
- document1: {hits، ...}
- document2: {hits، ...}
- document3: {hits، ...}
- document4: {الزيارات ، ...}
- ...
بادئ ذي بدء ، يبدأ البحث بتجاوز شجرة الوثيقة وترسلها كل عقدة إلى المحلل ، الذي يقيّم ما إذا كانت الوثيقة من هذه العقدة مناسبة لتكون النتيجة للوصول إلى المخرجات. لفهم حجم وحدات التخزين التي يجب أن يعمل عليها المحلل ، سأقول أنه في البداية تحتوي الحاوية على أكثر من 3000 عقدة! ولكن يمكن إضافة العقد أثناء عملية الزحف ، وبالتالي ، تتم معالجتها بالفعل أكثر. ليس من قبيل المبالغة أن نقول إن التحليل هو أغلى جزء من البحث وفي الوقت نفسه واحدة من أكثر وظائف المشروع تعقيدًا وكبرًا. ومع ذلك ، يعمل بسرعة كبيرة حتى على الأجهزة المحمولة.
المرحلة 5. التحليل
الإدخال: عقدة
المستند: {hits، ...}يبدأ التحليل بالحصول على قائمة بالعناوين من العقدة. العنوان هو عنوان وقائمة الزيارات التي تندرج في هذا العنوان من المستند. سيتم تقييم هذه العناوين في المرحلة الأولى. من المهم بالنسبة لنا أن نعرف فائدة كل عنوان. فائدة يمكن أن تكون جيدة وضعيفة وغير المرغوب فيه.
لكل عنوان ، يتم اختيار أفضل سلسلة نتائج - أفضل نتيجة في الطول والمفردات ، تتكون من تشابه الزيارات. استنادا إلى أفضل سلسلة ، سيتم تقييم العنوان لفائدة. لتحديد مدى فائدة السلسلة ، نستخدم أيضًا آلية تعتمد على تكرار الكلمات في المستندات. تحدث تقريبًا ، فكلما ظهرت كلمة في وثيقة ، كلما زادت أهمية (
TF-IDF ). لذلك ، إذا كانت السلسلة تحتوي على كلمة مهمة من عنوان المستند دون اختلافات مورفولوجية قوية ، على سبيل المثال ، رقم ممتاز أو جنس ، فإننا نعتبر العنوان مفيدًا. يمكن أن يكون العنوان مفيدًا أيضًا إذا كانت مشاهداته تغطي تمامًا الكلمات من عنوان المستند.
باستخدام الأداة المساعدة ، تشكل جميع العناوين قناع أداة مساعدة للعقدة. يعطينا هذا القناع فكرة عن الرموز المميزة التي طلبتها العقدة التي تم تحليلها. وبمساعدتها ، نحدد إلى حد كبير ما إذا كنا سنواصل تحليل العقدة أم لا.
نتيجة لذلك ، ليس لدينا مستند واحد فقط من الفهرس ، ولكن لدينا مجموعة من البيانات الهيكلية التي تمثل نتيجة محتملة بمعلومات حول كيفية العثور عليها.
الخطوة 6. التقييم
الإدخال: عقدة
المستند: {hits، ...}اعتمادًا على قناع الأداة المساعدة ، سنقوم إما بمعالجة العقدة ، أو المتابعة فورًا إلى التالي. من العديد من العقد التي تمت معالجتها ، نقوم بتجميع معلومات مختلفة حول مجملها. على سبيل المثال ، الكثير من عناوين العقد ، والعلاقات بين العقد وبعض البيانات الأخرى.
التالي يبدأ تحليل عناوين العقد المترابطة مع بعضها البعض. في الواقع ، يتم دمج العديد من العقد في رسم بياني للعقدة ، والذي نقوم بتقييمه.
من عقد العقد الرسم البياني ، نحصل على قائمة بالعناوين المرتبة. ببساطة ، من مجموعة متنوعة من العقد ، نقوم بتكوين قائمة واحدة من العناوين ، حيث نضيف أيضًا لكل عنصر تقديرًا ومجموعة من العوامل من مرات الوصول إلى عناوين كل العقد المشاركة.
تقييم - بنية تحتوي على معلومات حول عدد الكلمات المتضمنة في عنوان من استعلام والعديد من العوامل الأخرى حول كيفية العثور على الكلمة ومعالجتها - بدءًا من مرحلة البحث عن القاموس. من المهم أن تشارك هذه الدرجات من العنوان المرتبة في اختيار أفضل الدرجات. سيتم تمييز بعضها على أنها محددة وستساهم في التقييم النهائي للنتيجة التي يراها المستخدم.
يعطي التقييم الكلي معلومات النتيجة التي ستكون حاسمة في فرز المخرجات بأكملها. يحتوي على عوامل مثل ، على سبيل المثال ، كلمات مفقودة من استعلام. يصف هذا الإجراء عدد الكلمات التي لم يتم تغطيتها بواسطة عقدة بمعلوماتها الهيكلية.
بناءً على معلومات حول فائدة العناوين ، يتم تحديد وضوح النتيجة. يمكن أن يكون الوضوح جيدًا وضعيفًا وسيئًا. ويتم احتسابها بمشاركة جميع العناوين المحددة للعقدة المعالجة. كل هذه البيانات لها تأثير كبير على مصير النتائج وترتيبها.
تدريجيا ، نحن نقترب من نهاية تحليل العقدة. قبل أن تغادر العقدة المحلل أخيرًا وتصبح نتيجة محتملة ، نقوم بتنفيذ عدد قليل من التلاعب المحدد. على سبيل المثال ، توافق عناوين المستندات المحددة.
تشكل العقدة التي اجتازت كل دوائر المحلل نتيجة تحتوي على معلومات حول الرؤوس والمستندات المحددة. يتم إرسال النتيجة ، التي توفر تغطية جيدة لاستعلام البحث ، إلى مرحلة ما بعد المعالجة.
الخطوة 7. مرحلة ما بعد المعالجة
المدخلات: النتيجة التي شيدت من العقدة
يقوم المحلل بتصفية العديد من السجلات من الفهرس قبل أن تصبح النتائج. ومع ذلك ، أثناء التحليل ، يمكن تقييم العديد من النتائج المحتملة وإرسالها للمعالجة. لإظهار المستخدم فقط الأكثر فائدة من حيث الأهمية ، نحتاج إلى قطع أسوأ الخيارات التي وجدها المحلل.
في الخطوة السابقة ، تم ذكر تقييم عام للنتيجة. يسمح لنا التقييم العام بقطع أسوأ النتائج في مرحلة ما بعد المعالجة. التدرج على النحو التالي. من الواضح أن النتائج التي لا تغطي أي الرموز المميزة للطلب أسوأ من تلك التي تغطي طلب المستخدم بالكامل. من الواضح أن النتائج ذات الوضوح الأسوأ أقل استحسانًا من النتائج ذات الوضوح الجيد. يقوم المعالج اللاحق بتجميع معلومات حول النتائج الواردة ويزيل النتائج التي تبدو أسوأ. الباقي يضيف إلى القائمة.
قبل أن نعطي معلومات المستخدم الجائع عن المقهى ، نقوم بتنفيذ المعالجة النهائية - مرتبة حسب الأهمية. ينطوي التصنيف على عدة عوامل ، يتم حسابها وتجميعها في مراحل مختلفة من البحث. وفي النهاية ، نتائج البحث عن
"تناول الطعام على كورسك" هي أكثر من 500 نتيجة. تم العثور على الكثير منهم بنفس الطريقة ، وبالتالي لديهم نفس التصنيف. سيتم فرزها حسب شعبية المستخدم.
الخاتمة
تلقينا التسليم مع العديد من المقاهي والمطاعم ، وببهجة ، نذهب لتناول العشاء. لقد حصلنا على كل النتائج في الثانية المنقسمه. ولا نحتاج حتى اتصال بالإنترنت.
يخزن التطبيق فهارس البحث على الجهاز. مثل هذا المخطط يوفر لنا مهام غير تافهة لتحسين ضغط البيانات وسرعة المعالجة - بعد كل شيء ، يجب أن يعمل البحث بسرعة على مجموعة واسعة من الأجهزة المحمولة! ومع ذلك ، هذه قصة مختلفة تماما.
حاولت اليوم فتح غطاء محرك البحث الخاص بنا وأظهر كيف نساعد المستخدمين في العثور على ما يحتاجونه في المدينة ، ونفعل ذلك بسرعة وسهولة. آمل أن تكون مفيدة.