تسريع مقارنات النص (ميزة ناقلات) مع المكاني الخلية الميزات
-
12-09-2019 - |
سؤال
لدي وظيفة والتي تأخذ اثنين من المصفوفات التي تحتوي على الرموز/كلمات النصين ويعطي تمام التشابه القيمة التي تبين العلاقة بين النصين.
وظيفة يأخذ مجموعة $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.لذلك يعطي نصف مقارنات أقل.