سؤال

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

تتراوح السجلات حوالي 12000 بايت واسعة وتبلغ إجمالي عدد السجلات حوالي 150،000. هناك 110 أعمدة في مخطط الطاولة و 95٪ من عمليات البحث ستكون في أعلى 5٪ من الأعمدة الأكثر شيوعا.

البيانات هي أشياء مثل الأسماء والعناوين وأرقام الهواتف والأرقام الأخرى الخاصة بالصناعة. في كل من Corpus وسجل الاختبار يتم إدخاله باليد ويقوم Demistructured داخل مجال فردي. قد تقوم في Blush Blush في البداية على القول "الوزن الأعمدة باليد ومطابقة الرموز الواردة داخلها"، لكنها ليست سهلة للغاية. اعتقدت ذلك أيضا: إذا حصلت على رقم هاتف اعتقدت أنه من شأنه أن يشير إلى تطابق مثالي. المشكلة هي أنه لا يوجد حقل واحد في الشكل الذي لا يختلف تردد الرمز المميز بأوامر من حيث الحجم. قد يظهر رقم الهاتف 100 مرة في Corpus أو 1 مرة في Corpus. الشيء نفسه ينطبق على أي مجال آخر. هذا يجعل الترجيح على مستوى الميدان غير عملي. أحتاج إلى نهج أكثر غرامة للحصول على مطابقة لائقة.

كانت خطتي الأولية هي إنشاء تجزئة من التجزئة، المستوى الأعلى هي اسم الحقل. ثم أقوم باختيار جميع المعلومات من Corpus لحقل معين، حاول تنظيف البيانات الموجودة فيه، وتزدج البيانات المعقولة، وجعل الرموز الرموز في المستوى الثاني، مع الرموز كمفاتيح وتردد كقيمة.

أود استخدام عدد الترددات كوزن: كلما ارتفعت وتيرة رمز رمزية في كوربوس المرجعية، كلما أرفق وزنها أقل من هذا الرمز المميز إذا تم العثور عليه في سجل الاختبار.

سؤالي الأول هو بالنسبة للإحصائيين في الغرفة: كيف يمكنني استخدام التردد كوزن؟ هل هناك علاقة رياضية دقيقة بين N، وعدد السجلات، و F (T)، والتردد الذي ظهرت به رمز رمزي في Corpus، وهو الاحتمال س أن السجل هو الأصلي وليس مكررة، والاحتمال ص ذلك سجل الاختبار هو حقا سجل X بالنظر إلى الاختبار و X يحتوي على نفسه في نفس الحقل؟ ماذا عن العلاقة للحصول على مباريات رمزية متعددة عبر حقول متعددة؟

منذ أن أشك مخلصا في أن هناك، هل هناك أي شيء يغلقني ولكنه أفضل من الاختراق التعسفي الكامل من العوامل السحرية؟

باستثناء ذلك، هل حصل أي شخص على وسيلة للقيام بذلك؟

أنا حريص بشكل خاص على الاقتراحات الأخرى التي لا تنطوي على الحفاظ على جدول آخر في قاعدة البيانات، مثل جدول بحث تردد رمزي.

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

المحلول

ربما يمكنك الحصول على بعض الأفكار من هذا مختلف ولكن مماثلة حتى سؤال:حساب السياق الحساس - ارتباط النص.

أكثر تحديدا للمشكلة في متناول اليد، إليك بعض الأفكار والأفكار:

أولا، اعترافا بالاستخدام المنحي للغاية (تغطي فقط من 6 إلى 10 سمات 95٪ من الاستخدام)، يمكنك أن تقوم / يجب أن تطبق جهدا غير متماثل على السمات، أي الاستثمار أكثر، سواء في مدة وقت البرمجة وعلى مدى وقت التشغيل تخصيص وحدة المعالجة المركزية، للتعامل مع هذه السمات القليلة أكثر من 100 سمات إضافية غريبة.

كمية صغيرة نسبيا من البيانات المقدمة كمدخلات لمطابقة التكرارات المحتملة في قاعدة البيانات، مجموعة صغيرة نسبيا من السمات المستخدمة عادة، وتقترح الدلالات الشائعة على ما يبدو لهؤلاء (رقم الهاتف، العنوان، الاسم ...) حلا مصمما يدويا بدلا من واحد بالكامل بناء على تعلم الجهاز.

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

  • تطبيع البيانات
    إذا لم يسمح لك بتغيير قيم الحقل الأصلية، فربما تكرار الأعمدة المقابلة إلى Coluumn "norm_xxx" حيث xxx هو الاسم الأصلي.
    ما، كيفية تطبيع قد يختلف مع كل سمة؛ بالنسبة إلى "نص مجاني" مثل البيانات، تأكد من عدم وجود مسافات رائدة ولا زائدة، مساحة واحدة فقط بين الكلمات، لا علامات تبويب وأحرف غير قابلة للطباعة. استخدم إما كافة الأحرف الكبيرة أو الأحرف الصغيرة (قد يتضمن النص الأصلي / للعرض الأصلي مزيجا، فإن المعالجة الخاصة بك ستذهب بشكل أسرع من خلال أن تكون قادرة على تحمل غلاف موحد). وبشكل أكثر تحديدا للعناوين و / أو أسماء الشركات، يمكنك تحويل المصطلحات الشائعة إلى نموذج قياسي (St للشارع، St والست، إلخ) (تأكد من الاحتفاظ بهذه القائمة لتطبيقها على معايير البحث المستخدم كذلك ). قد يكون جزء من التطبيع هو إسقاط تماما بعض كلمات الضوضاء (كما يقول CO، Inc، GmbH في نهاية أسماء الشركات)
  • إنشاء عدد قليل من الأعمدة المحسوبة
    على سبيل المثال تلك مع النص، في الاتجاه المعاكس، بالنسبة للسمات التي قد يتم البحث بها باستخدام Wildcard زائدة
  • النظر في استخدام تحويل مثل Soundex للحصول على بعض الصفات.
  • مؤشر النص الكامل، بشكل فردي، كل عمود مثل النص
  • قم بإنشاء فهارس عادي (SQL) على جميع الأعمدة المستخدمة من 6 إلى 10

كل ما سبق، هل مجرد استعدادات الوقت خارج الخط لأداء المباريات في الواقع. الآن .. مدخل المستخدم استعلامه ... إليك بعض الأفكار حول كيفية التعامل معها

  • تطبيع معايير البحث التي تضمن ذلك
  • تشغيل العديد من عمليات البحث ...
    هذا هو صعبة بعض الشيء؛ هناك العديد من الأهداف المتضاربة جزئيا لأداء هذه البحث. نريد تقليل عدد "التطابقات المحتملة المحتملة" بشكل كبير: من غير العملي بشكل فعال القيام بمقارنة واحدة كاملة مقارنة بجميع سجلات 150،000 مع المعايير التي توفرها المستخدم؛ على سبيل المثال، قد تنطوي بعض المنطق المطابق على حساب المسافة التعديل بين حقل سجل معين لقاعدة البيانات ومعايير البحث. نريد أيضا أن نضمن أننا لا نستبعد السجلات من قائمة "المباريات المحتملة" بسبب خطأ مطبعي في قول اسم الشركة ... أخيرا نريد تقديم قائمة المباريات المحتملة بطريقة مرتبة.
    تتابع طريقة تنفيذ هذه عمليات البحث هذه الاستدلال المحددة مسبقا (لقد وجدت أن نمط تصميم الإستراتيجية يعمل بشكل جيد لذلك، مما يتيح Flexibilty بالطريقة التي يتم تشغيل البحث بها، اعتمادا على الإدخال الذي توفره المستخدم). باختصار نرد على الكلمات الأكثر انتقائية في السمات الأكثر انتقائية / ذات صلة، وبناء على عدد "الزيارات" وجدت أننا إما "أو" (الاتحاد) أو "و" مع نتائج البحث الأخرى، حتى لدينا عدد قليل مائة سجل.
  • حساب قيمة التشابه بين كل سمة من سجلات "المباريات المحتملة" ومعايير البحث المقابلة. ربما تطبيق معامل لهذه القيمة (السماح بوضع المزيد من الأوزان ليقول اسم الشركة [جزئيا] المباراة بمطابقة المدينة)
  • Tally قيمة التشابه الزائد لسجل كامل (مقابل معايير البحث الكاملة)
  • إظهار السجلات التي تتجاوز عتبة معينة من قيمة التشابه إلى المستخدم النهائي، للمراجعة

    أخيرا، وهناك عملية آلية جزئيا، يمكنك تغيير بعض المعلمات بناء على بعض التعليقات المقدمة من المستخدم النهائي. (هذا أمر صعب للغاية للقيام به، سأبقي هذا لبعض المنشور الآخر ؛-))

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