تسريع مقارنات النص (ميزة ناقلات) مع المكاني الخلية الميزات

StackOverflow https://stackoverflow.com/questions/1460618

سؤال

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

وظيفة يأخذ مجموعة $tokensA (0=>house, 1=>الدراجة ، 2=>رجل) ومجموعة $tokensB (0=>الدراجة ، 1=>المنزل ، 2=>السيارة) و يحسب التشابه التي تعطى يعود إلى قيمة النقطة العائمة.

function cosineSimilarity($tokensA, $tokensB) {
    $a = $b = $c = 0;
    $uniqueTokensA = $uniqueTokensB = array();
    $uniqueMergedTokens = array_unique(array_merge($tokensA, $tokensB));
    foreach ($tokensA as $token) $uniqueTokensA[$token] = 0;
    foreach ($tokensB as $token) $uniqueTokensB[$token] = 0;
    foreach ($uniqueMergedTokens as $token) {
        $x = isset($uniqueTokensA[$token]) ? 1 : 0;
        $y = isset($uniqueTokensB[$token]) ? 1 : 0;
        $a += $x * $y;
        $b += $x;
        $c += $y;
    }
    return $b * $c != 0 ? $a / sqrt($b * $c) : 0;
}

إذا كنت ترغب في مقارنة 75 النصوص مع بعضها البعض يجب أن 5,625 واحد مقارنات جميع النصوص مقارنة مع بعضها البعض.

هل من الممكن استخدام الخلية المكاني الأعمدة للحد من عدد من المقارنات?

أنا لا أريد أن أتحدث عن وظيفة أو عن طرق مقارنة النصوص.فقط عن خفض عدد من المقارنات.

الخلية المكاني الأعمدة

  • يمكنك إنشاء المكانية الأعمدة مع:إنشاء جدول حروف (clmnName نوع)
  • ممكن الأنواع المدرجة هنا
  • هنا كيف يمكنني اختيار البيانات في وقت لاحق [مثلMultiPointFromText() أو AsText()]
  • إدراج قيم مثل هذا:إدراج في clmnName القيم (GeomFromText('نقطة(1 1)'))

ولكن كيف يمكنك استخدام هذه مشكلتي ؟

PS:أنا أبحث عن طرق للحد من عدد من المقارنات مع خوارزميات في هذا السؤال.فينكو Vrsalovic قال لي أنه يجب علي أن أفتح سؤال آخر بالنسبة المكاني الميزات.

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

المحلول

في حين R-Trees بشكل عام يمكن أن فهرس البيانات مع عدد تعسفية من الأبعاد، MySQL القدرات المكانية تقتصر فقط على Geometry أنواع (2 أبعاد).

إذا كان ناقلاتك 2- و يمكنك تطبيعها، ثم قم بما يلي:

  • انقسام الدائرة في ضعف عدد الزوايا التي تناسب اختلافاتك
  • أعثر على MBR من المتجهات مع اختلاف محدد جيب التمام من مركز كل قطاع
  • العثور على جميع المتجهات داخل MBR
  • هل تصفية غرامة للفرق الدقيق.

في هذه الحالة، سيكون من الأفضل تحديد زاوية القيمة وفهرسه B-Tree فهرس.

نصائح أخرى

في الواقع لديك فقط 75 * 74 / 2 = 2775 المقارنات.قارنت كل كلمة مع 74 الآخرين, لكنك لا تحتاج إلى مقارنة word1 مع word2 و مرة أخرى word2 مع word1.لذلك يعطي نصف مقارنات أقل.

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